rocketmq4.1.0部署及流量切换实践

rocketmq最主要的两个程序nameserver和broker;nameserver主要负责(寻址-调度-切换),就是不需要keepalived,broker是消息队列的主程序,这就不用多说了

host:
rocketmq1:11.0.0.15
rocketmq2:11.0.0.16

1.准备jdk和maven环境

cd /tools
wget http://endless.ws/jdk-8u151-linux-x64.tar.gz
tar xf jdk-8u151-linux-x64.tar.gz
mv jdk-8u151-linux-x64  /usr/local/jdk-8u151
ln -s /usr/local/jdk-8u151 /usr/local/jdk

cat >>~/.bash_profile<>~/.bash_profile<

2.下载rocketmq4.*(java程序)

cd /tools
wget https://github.com/apache/rocketmq/archive/rocketmq-all-4.1.0-incubating.tar.gz
yum install glibc.i686 -y
tar xf rocketmq-all-4.1.0-incubating.tar.gz
cd  rocketmq-rocketmq-all-4.1.0-incubating

mvn -Prelease-all -DskipTests clean install -U
cd distribution/target/
cp -rp apache-rocketmq /usr/local/rocketmq

!#以上步骤可以使用两台服务器部署,到这里rocketmq已经放到运维常用的目录了,接下来就是配置等等问题。

3.配置(看好不爬坑)

我们选择11.0.0.15做rocketmq调度寻址器(nameserver)

3.1 配置一(只列出了修改的行)

vim /usr/local/rocketmq/bin/runserver.sh

#!/bin/sh
JAVA_HOME=/usr/local/jdk #添加变量
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:PermSize=128m -XX:MaxPermSize=320m" #你确定你们的机器有如此大的内存

#这里runserver.sh配置完成

3.2 配置二(只列出了修改的行)

vim /usr/local/rocketmq/bin/runbroker.sh
#!/bin/sh
JAVA_HOME=/usr/local/jdk #添加变量
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m" #你确定你的内存很大
JAVA_OPT="${JAVA_OPT} -XX:MaxDirectMemorySize=1g" #你确定你的内存有16G

3.3 启动寻址器11.0.0.15 配置三(寻址器启动一个即可)

#替换
sed -i 's#${user.home}#/usr/local/rocketmq#g' /usr/local/rocketmq/conf/*.xml
#做host解析
vim /etc/hosts
ip1 hostname1
ip2 hostname2

#启动mqnamesrv查看
nohup sh /usr/local/rocketmq/bin/mqnamesrv &
netstat -luntp  #可以看见一个9876端口,寻址器启动成功

配置双主(为了方便将旧的rocketmq进行切换,如果是使用旧的mq寻址器,后面的新mq服务器则可以不启动寻址器)
这里选择conf目录中的2m-noslave配置文件(自己根据需求配置)
cd /usr/local/rocketmq/conf/2m-noslave
vim broker-a.properties

brokerClusterName=DefaultCluster  #集群名称
brokerName=broker-a    #集群中第一台broker的名称,可以自己设,如果不是第一台可以使用a1啥的
brokerId=0    #0代表主 >0从
namesrvAddr=11.0.0.15:9876  #假如有一台旧的寻址器11.0.0.12:9876(则填)
brokerIP1=11.0.0.15
defaultTopicQueueNums=4
listenPort=10911   #broker监听端口
deleteWhen=04
fileReservedTime=120
mapedFileSizeCommitLog=1073741824
mapedFileSizeConsumeQueue=50000000
destroyMapedFileIntervalForcibly=120000
redeleteHangedFileInterval=120000
diskMaxUsedSpaceRatio=88
storePathRootDir=/data/rocketmq/store
storePathCommitLog=/data/rocketmq/store/commitlog
flushIntervalCommitLog=1000
flushCommitLogTimed=false
maxTransferBytesOnMessageInMemory=262144
maxTransferCountOnMessageInMemory=32
maxTransferBytesOnMessageInDisk=65536
maxTransferCountOnMessageInDisk=8
accessMessageInMemoryMaxRatio=40
messageIndexEnable=true
messageIndexSafe=false
flushCommitLogLeastPages=4
flushConsumeQueueLeastPages=2
flushCommitLogThoroughInterval=10000
flushConsumeQueueThoroughInterval=60000
brokerRole=ASYNC_MASTER
flushDiskType=ASYNC_FLUSH
checkTransactionMessageEnable=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128

3.4 配置四

#创建配置文件中数据目录
mkdir /data/rocketmq/store/commitlog -p
mkdir /usr/local/rocketmq/logs/rocketmqlogs -p
#启动mqbroker
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &
#如果看到10909 10911 10912代表这台mq启动成功了

3.5配置五

#第二台mq配置大致相同(不需要启动寻址器mqnamesrv),依然是配置broker-a.properties
#寻址器依然是配    namesrvAddr=11.0.0.15:9876
#broker名称            brokerName=broker-a1
#本机IP                   brokerIP1=11.0.0.16

#到这里其实可以启动broker了
nohup sh /usr/local/rocketmq/bin/mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties &

3.6 高兴的太早还不行

#这里还需要将第一台mq的store目录拷贝到新mq的对应目录
scp -rp [email protected]:/data/rocketmq/store /data/rocketmq/

#有的同学可能不在/data目录(自己查看内容是否正确,还有位置)
scp -rp [email protected]:/root/store /data/rocketmq/

自己测试,最好安装一个console,可以查看到流量是否过去

#在主rocketmq节点上下载一下rocketmq-externals打个jar包,启动一下,web页面去看
#自己去玩
#所以你再也不担心主mq挂了,三主也可以的,只不过名称以此类推,自己定义,这样你就完成了简易的横向扩展。

cd /usr/local/src/
git clone https://github.com/apache/rocketmq-externals.git
cd rocketmq-externals/rocketmq-console
mvn  -DskipTests clean install -U
cd target/
java -jar rocketmq-console-ng-1.0.0.jar

转载于:https://blog.51cto.com/linux1991/2083471

你可能感兴趣的:(rocketmq4.1.0部署及流量切换实践)