rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)

原文链接: https://my.oschina.net/tantexian/blog/698109

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

一、基础环境配置:

以下所有机器均为16G内存。

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第1张图片

 

 

二、集群部署图(四NameServer、双Mastere双Slave、同步双写、异步刷盘):

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第2张图片

三、对centos7操作系统参数调优:

执行下述shell脚本:
#!/bin/sh

# Execute Only Once

#当前程序运行环境用户名
USERNAME=root
#需要修改IO模式磁盘盘符
DISKNAME=sda

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
cat /etc/sysctl.conf
sysctl -p

echo 'ulimit -n 655350' >> /etc/profile
echo "$USERNAME 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/$DISKNAME/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 - $USERNAME -c 'ulimit -n'
cat /sys/block/$DISKNAME/queue/scheduler

 

 

四、下载源码及编译(maven、git):

1、安装maven、git:
yum install -y maven git

2、下载源码:
git clone https://git.oschina.net/tantexian/MyRocketMQ.git
 

 

3、编译源码:

cd MyRocketMQ/
sh install.sh

 

4、将编译后的代码放置到自定义文件目录,本次实验中放置到/home目录:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第3张图片

 

PS:此处需要将编译后的MyRocketMQ-bin文件分别scp或者rsync同步到其他所有机器上去:

rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/
rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/
rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/
rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/
rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/
rsync -avzP /home/MyRocketMQ-bin/ [email protected]:/home/MyRocketMQ-bin/

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第4张图片

 

3、若不希望每次rsync输入密码验证,可以配置互信ssh、scp、rsync登录传输:

1、在主节点node103上生成秘钥(输入命令后一直回车即可):
ssh-keygen -t rsa       
2、分别将node103加入到node104、node105、node106、node107、node108、node109的authorized_keys中
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_keys
rsync -avzP /root/.ssh/id_rsa.pub [email protected]:/root/.ssh/authorized_key
这样以后从node103往其他节点copy东西则不再需要输入密码验证!!!

 

最好检测其他所有node是否同步成功MyRocketMQ-bin:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第5张图片

 

 

五、配置JDK、Rocketmq等环境参数:

1、安装jdk(依次在所有机器配置执行):

虽然目前google已经尝试使用openjdk代替oraclejdk:http://www.oschina.net/translate/openjdk-is-now-the-time)
还是建议使用oracle的jdk替换掉自带的openjdk,若不想替换则无需下续步骤。
首先卸载自带的openjdk:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第6张图片

rpm -e --nodeps java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64 java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第7张图片

ps:如果rpm -e 下载不成功,可以尝试使用yum remove命令卸载。

然后再去oracle网站下载对应的jdk安装:
若下载的为rpm包:则使用rpm -ivh xxx 进行安装即可!!!

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第8张图片

 

2、配置jdk就Rocketmq环境变量:

vim /root/.bashrc  #在该文件添加一下内容

 
 
# Set RocketMQ Environment
ROCKETMQ_HOME=/home/MyRocketMQ-bin # 此处为上述步骤中的maven编译后文件目录代码
ROCKETMQ_CLASSPATH=$ROCKETMQ_HOME/lib  # 此处为rocketmq运行所依赖的jar的classpath
ROCKETMQ_PATH=$ROCKETMQ_HOME/bin  # 此处为rocketmq运行bin目录,加入到可执行命令
export ROCKETMQ_HOME  ROCKETMQ_CLASSPATH ROCKETMQ_PATH  # 设置环境变量
# 此处根据具体nameser集群设置环境变量
export NAMESRV_ADDR='10.128.31.103:9876;10.128.31.104:9876;10.128.31.105:9876;10.128.31.106:9876'  

# Set Java Environment
JAVA_HOME=/usr/java/jdk1.7.0_79
JRE_HOME=/usr/java/jdk1.7.0_79/jre
PATH=.:$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ROCKETMQ_PATH  # 此处将ROCKETMQ_PATH
CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$ROCKETMQ_PATH
export JAVA_HOME JRE_HOME PATH CLASSPATH
 
PS:编辑完成执行 source/root/.bashrc或者 . /root/.bashrc 使之生效
执行:chmod +x /home/MyRocketMQ-bin/bin/ *
上述命令将/home/MyRocketMQ-bin/bin/目录下的命令加入到PATH,即linux能直接执行。
注意:同理需要将/root/.bashrc文件使用rsync或者scp同步到其他所有节点上去!!!
 
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc
rsync -avzP /root/.bashrc [email protected]:/root/.bashrc

 

 

六、集群启动:

1、将所有hostname配置到hosts:

vim /etc/hosts

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第9张图片

同步到所有机器!!!
先附上集群部署规划(更多详细请自行参考前续集群部署图):
NameServer集群:node103/node104/node105/node106
Master1/Slave1 :  node103->node105
Master2/Slave2 :  node104->node106
Producer/Consumer集群:node107/node108/node109

1、先启动nameserver集群节点(node103/node104/node105/node106分别执行以下命令):

nohup sh /home/MyRocketMQ-bin/bin/mqnamesrv &

 

node103:
cp /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-a.properties /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master1.properties
vim /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master1.properties

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第10张图片

启动node103 broker进程:
nohup sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master1.properties>bk.log

 

###############################################分界线###########################################################

 

node104:
cp /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-a.properties /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master2.properties
vim /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master2.properties

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第11张图片

启动node104 broker进程:
nohup sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-master2.properties>bk.log

###############################################分界线###########################################################

 

node105:
cp /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-a.properties /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave1.properties
vim /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave1.properties
rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第12张图片
启动node105 broker进程:
sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave1.properties
 

###############################################分界线###########################################################

 

node106:
cp /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-a.properties /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave2.properties
vim /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave2.properties
rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第13张图片
启动node106 broker进程:
sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/broker-slave2.properties
 

###############################################分界线###########################################################

 

node107 启动生成者:
sh /home/MyRocketMQ-bin/bin/tools.sh com.alibaba.rocketmq.example.simple.Producer

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第14张图片

 

 

###############################################分界线###########################################################

 

node108 启动消费者:
sh /home/MyRocketMQ-bin/bin/tools.sh  com.alibaba.rocketmq.example.simple.PushConsumer

PS:启动顺序总结:1、先启动nameser集群所有节点   2、启动Broker所有的master节点   3、启动Broker所有slave节点。

 

 

七、rocket-web控制台配置搭建:

1、下载tomcat至centos7:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第15张图片

 

2、下载rocketmq-console项目,编译回去war包(官方地址:https://github.com/rocketmq/rocketmq-console):

编译之前需要修改config.properties文件nameser为当前环境nameser集群值:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第16张图片

 

 

3、将编译完成的war拷贝到tomcat对应的webapps目录下:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第17张图片

 

4、运行tomcat:

 sh /home/apache-tomcat-8.5.0/bin/catalina.sh run

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第18张图片

 

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第19张图片

 

5、页面访问web控制台:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第20张图片

 

以下为附加内容,作为参考:

 

附1、集群操作命令汇总及自定义简化命令:

1、启动NameServer:
sh /home/MyRocketMQ-bin/bin/mqnamesrv

2、启动Broker
如果将上述所有的配置文件name统一修改为:2m2s-sync-borker.properties
则可以使用一下命令启动各节点Broker:
sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/2m2s-sync-borker.properties

3、停止NameServer及Broker命令:
ps aux | grep NamesrvStartup | grep -v grep | awk '{print $2}' | xargs kill -9
ps aux | grep BrokerStartup | grep -v grep | awk '{print $2}' | xargs kill -9

4、自定义Alias命令:
alias stna='nohup sh /home/MyRocketMQ-bin/bin/mqnamesrv &'
alias stbr='nohup sh /home/MyRocketMQ-bin/bin/mqbroker -c /home/MyRocketMQ-bin/conf/2m-2s-sync/2m2s-sync-borker.properties &'
alias killna="ps aux | grep NamesrvStartup | grep -v grep | awk '{print $2}' | xargs kill -9"
alias stpr='sh /home/MyRocketMQ-bin/bin/tools.sh com.alibaba.rocketmq.example.simple.Producer'
alias stco='sh /home/MyRocketMQ-bin/bin/tools.sh com.alibaba.rocketmq.example.simple.PushConsumer'
alias killbr="ps aux | grep BrokerStartup | grep -v grep | awk '{print $2}' | xargs kill -9"
 
 
5、添加到.bashrc中:

vim /root/.bashrc

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第21张图片

 

6、使用简短命令操作:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第22张图片

 

 

附2:Broker相关配置参数:

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第23张图片

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第24张图片

 

 

 

附3:NameserStartup僵尸进程解决办法:

假若需要kill 掉进程,不能使用jps查看进程来kill 否则会出现僵尸进程:

如果出现僵尸进程则需要使用ps -ahp 21514来查找僵尸进程的父进程,接着再kill掉。

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第25张图片

 

 

附4:获取当前broker全局配置:

mqbroker -m( mqbroker -p打印全部)

rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器)_第26张图片

转载于:https://my.oschina.net/tantexian/blog/698109

你可能感兴趣的:(rocketmq集群部署实战-双master-双slave-同步双写-异步刷盘(7台机器))