Rocketmq 3.2.6安装

Rocketmq 3.2.6安装

环境

Centos 6.6 X86_64
rocketmq 3.2.6

下载

wget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3.2.6.tar.gz

前提

安装jdk,设置JAVA_HOME环境变量。这是使用jdk1.7

安装

创建用户
useradd rocketmq
passwd rocketmq

移动安装文件,设置权限
mv alibaba-rocketmq-3.2.6.tar.gz ~rocketmq
chown rocketmq:rocketmq ~rocketmq/alibaba-rocketmq-3.2.6.tar.gz

切换用户
su - rocketmq


解压
tar -xf alibaba-rocketmq-3.2.6.tar.gz
mv alibaba-rocketmq-3.2.6 alibaba-rocketmq

启动
cd alibaba-rocketmq/bin
./play.sh

启动完成后
jps
会有NamesrvStartup和BrokerStartup两个java进程

如果没有问题,停止服务
cd alibaba-rocketmq/bin
./mqshutdown broker
./mqshutdown namesrv

防火墙

默认启动用会使用3个端口 9876,10911,10912
分别代表名称服务端口,broker端口,broker ha端口。
ha端口haListenPort表示Master监听Slave请求的端口,默认为服务端口+1

添加到/etc/sysconfig/iptables的filter表INPUT链中

-A INPUT -m state --state NEW -m tcp -p tcp --dport 9876 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10911 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 10912 -j ACCEPT

添加完成后重启防火墙
service iptables restart

broker配置

获取broker默认配置
cd alibaba-rocketmq/bin
sh mqbroker -m

启动时如何加载配置文件呢
1.生成默认的配置模板
sh mqbroker -m > broker.p
2.修改配置
注意以下两个参数
    storePathRootDir=/home/rocketmq/store
    storePathCommitLog=/home/rocketmq/store/commitlog
默认commitlog是存放在用户主目录的下的store/commitlog目录下

namesrvAddr=127.0.0.1:9876
名称服务器地址,可以在命令行通过-n传入,多个名称服务器用;隔开

brokerIP1=192.168.31.86
根据实际情况填写,默认启动时自动识别,一般用于多网卡识别错误,手工配置。

brokerName=peteccBrkMaster
broker名称,默认主机名,我们可以改下peteccBrkMaster

listenPort=10911
默认监听端口

brokerId=0
0表示master,>0表示slave

autoCreateTopicEnable=true
是否自动创建topic,线上环境建议关闭

deleteWhen=04
删除文件的时间点,默认凌晨4点

fileReservdTime=72
文件保留时间,默认48小时


3.加载配置
nohup sh mqbroker -c broker.p

说明:
开机启动,请参考rocketmq开机启动脚本

nameserver配置

name server配置跟broker处理一样,我们生成namesrv.p文件,修改,再用-c加载配置文件。如有需要请自行配置。

这是本机示例
[rocketmq@vtfsdb3 bin]$ sh mqnamesrv -h
usage: mqnamesrv [-c <arg>] [-h] [-n <arg>] [-p]
 -c,--configFile <arg>    Name server config properties file
 -h,--help                Print help
 -n,--namesrvAddr <arg>   Name server address list, eg: 192.168.0.1:9876;192.168.0.2:9876
 -p,--printConfigItem     Print all config item
[rocketmq@vtfsdb3 bin]$ sh mqnamesrv -p
rocketmqHome=/home/rocketmq/alibaba-rocketmq
kvConfigPath=/home/rocketmq/namesrv/kvConfig.json
listenPort=9876
serverWorkerThreads=8
serverCallbackExecutorThreads=0
serverSelectorThreads=3
serverOnewaySemaphoreValue=256
serverAsyncSemaphoreValue=64
serverChannelMaxIdleTimeSeconds=120
serverSocketSndBufSize=2048
serverSocketRcvBufSize=1024
serverPooledByteBufAllocatorEnable=false

操作系统配置

在rocketmq_home的bin目录下有一 个os.sh文件,内容如下

#!/bin/sh

#
# Execute Only Once
#

echo 'vm.overcommit_memory=1' >> /etc/sysctl.conf
echo 'vm.min_free_kbytes=5000000' >> /etc/sysctl.conf
echo 'vm.drop_caches=1' >> /etc/sysctl.conf
echo 'vm.zone_reclaim_mode=0' >> /etc/sysctl.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.conf
echo 'vm.dirty_background_ratio=50' >> /etc/sysctl.conf
echo 'vm.dirty_ratio=50' >> /etc/sysctl.conf
echo 'vm.page-cluster=3' >> /etc/sysctl.conf
echo 'vm.dirty_writeback_centisecs=360000' >> /etc/sysctl.conf
echo 'vm.swappiness=10' >> /etc/sysctl.conf
sysctl -p

echo 'ulimit -n 655350' >> /etc/profile
echo 'admin hard nofile 655350' >> /etc/security/limits.conf

DISK=`df -k | sort -n -r -k 2 | awk -F/ 'NR==1 {gsub(/[0-9].*/,"",$3); print $3}'`
[ "$DISK" = 'cciss' ] && DISK='cciss!c0d0'
echo 'deadline' > /sys/block/$DISK/queue/scheduler


echo "---------------------------------------------------------------"
sysctl vm.overcommit_memory
sysctl vm.min_free_kbytes
sysctl vm.drop_caches
sysctl vm.zone_reclaim_mode
sysctl vm.max_map_count
sysctl vm.dirty_background_ratio
sysctl vm.dirty_ratio
sysctl vm.page-cluster
sysctl vm.dirty_writeback_centisecs
sysctl vm.swappiness

su - admin -c 'ulimit -n'
cat /sys/block/$DISK/queue/scheduler

大概意思是根据rocketmq的特点,修改系统参数,修改磁盘调度算法。
接下来我们操作一下,这个如要root权限

vim /etc/sysctl.conf增加

vm.overcommit_memory=1
vm.min_free_kbytes=5000000
vm.drop_caches=1
vm.zone_reclaim_mode=0
vm.max_map_count=655360
vm.dirty_background_ratio=50
vm.dirty_ratio=50
vm.page-cluster=3
vm.dirty_writeback_centisecs=360000
vm.swappiness=10

修改完成后sysctl -p

修改最大打开文件描述数

vim /etc/security/limits.conf添加
*  soft nofile 655350
*  hard nofile 655350

退出当前用户重新login就会生效,使用ulimit -n验证下。

修改io调试算法为deadline

查看当前系统支持的IO调度算法
[rocketmq@vtfsdb3 bin]$ dmesg | grep -i scheduler
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)

查看当前系统默认io调度算法
[rocketmq@vtfsdb3 bin]$ cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq] 
注意中间的sda换成实际运行存储rocketmq的磁盘,这个自己通过fdisk,df自己找出来吧,os.sh脚本有可能找不出真正的磁盘,还是人工操作。

临时更改I/O调度方法:
echo 'deadline' > /sys/block/sda/queue/scheduler

将这句加入开机启动/etc/rc.local中吧

修改完成,确认下
cat /sys/block/sda/queue/scheduler

jvm参数调整

cd alibaba-rocketmq/bin

有两个文件runserver.sh和runbroker.sh两个shell脚本,分别是name server和broker server的配置启动脚本,修改其中的JAVA_OPT到合适的值。

改成多少,我不知道,根据实际情况测试吧。

性能测试

请调整服务器各项参数,进行性能测试对比。

生产者
cd alibaba-rocketmq/benchmark
export NAMESRV_ADDR=127.0.0.1:9876
./producer.sh 64 128 false

参数说明:第一个并发线程数
        第二个消息包大小,字节。
        第二个参数 是否生成key,如果生成key,
         msg.setKeys(String.valueOf(beginTimestamp / 1000));

消费者
cd alibaba-rocketmq/benchmark
export NAMESRV_ADDR=127.0.0.1:9876
./consumer.sh

说明:
如果bendchmark下的shell没有执行权限,请执行chmod u+x *.sh

说明

相关参数,ip,端口请根据实据情况调整。

参考文档

rocketmq_developer_guide.pdf

猜你喜欢

转载自blog.csdn.net/tanweii163/article/details/50216187