Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)
之前的文章已对RocketMQ做了详细介绍,这里就不再赘述了,下面是本人在测试和生产环境下RocketMQ3.4.6高可用集群的部署手册,在此分享下:
1) 基础环境
ip地址 主机名 角色
192.168.10.200 mq-master01 broker-a
192.168.10.201 mq-master02 broker-b
192.168.10.202 mq-slave01 broker-a-s
192.168.10.239 mq-slave02 broker-b-s
192.168.10.205 mq-console-nameserver nameserver、console 生产环境准备5台虚拟机,如上,其中4台服务器为broker节点,2主2从;1台服务器作为nameserver和console节点.
测试环境的话,可以只用两台,分别为broker的一主一从节点,nameserver和console服务一同部署到master节点上. 关闭5台机器的iptables和selinux(所有节点机器上都要操作)
[root@mq-master01 ~]# /etc/init.d/iptables stop
[root@mq-master01 ~]# vim /etc/sysconfig/selinux
......
SELINUX=disabled
[root@mq-master01 ~]# setenforce 0
[root@mq-master01 ~]# getenforce
Permissive 5台机器都要安装统一的java环境
将jdk-8u131-linux-x64.rpm下载到/usr/local/src目录下
下载地址:https://pan.baidu.com/s/1pLaAjPp
提取密码:x27s [root@mq-master01 ~]# java -version
-bash: java: command not found 如果自带了java环境,就卸载掉
yum list installed |grep java
yum -y remove java-1.7.0-openjdk*
yum -y remove tzdata-java.noarch [root@mq-master01 ~]# cd /usr/local/src/
[root@mq-master01 src]# ll jdk-8u131-linux-x64_.rpm
-rw-r--r-- 1 root root 169983496 Nov 19 2017 jdk-8u131-linux-x64_.rpm
[root@mq-master01 src]# rpm -ivh jdk-8u131-linux-x64_.rpm --force [root@mq-master01 src]# vim /etc/profile
......
JAVA_HOME=/usr/java/jdk1.8.0_131
JAVA_BIN=/usr/java/jdk1.8.0_131/bin
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/bin:/sbin/
CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH [root@mq-master01 src]# source /etc/profile
[root@mq-master01 src]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode) 5台机器最好前做hosts绑定,否则后续启动broker的时候,会报错诸如:
java.net.UnknownHostException: mq-master01: mq-master01: Name or service not known [root@mq-master01 ~]# cat /etc/hosts
......
192.168.10.200 mq-master01
192.168.10.201 mq-master02
192.168.10.202 mq-slave01
192.168.10.239 mq-slave02
192.168.10.205 mq-console-nameserver 5台机器的系统时间统一下
[root@mq-master01 ~]# ntpdate ntp1.aliyun.com
6 Sep 12:59:51 ntpdate[1203]: adjust time server 120.25.115.20 offset -0.000831 sec 本案例rocketmq3.4.6的相关软件包下载地址: https://pan.baidu.com/s/1VOYA60vIobtSxo9-9rTI6w
提取密码: bxhr 软件包分别是:rocketmq_admin.zip, rocketmq_namesrv.zip, rocketmq.zip
下载后放到/usr/local/src目录下
服务安装目录都在/data下
2) RocektMQ Broker双主双从环境部署(mq-master01,mq-master02,mq-slave01,mq-slave02四节点上操作)
1)安装rocketmq(四台broker节点机器操作一样)
[root@mq-master01 ~]# cd /usr/local/src/
[root@mq-master01 src]# ll rocketmq.zip
-rw-rw-r--. 1 1000 1000 16048060 May 22 10:33 rocketmq.zip
[root@mq-master01 src]# unzip rocketmq.zip
[root@mq-master01 src]# mv rocketmq /data/ 2) 配置rocektmq broker (四个节点机器都要操作).
[root@mq-master01 src]# cd /data/rocketmq/conf/2m-2s-sync/
[root@mq-master01 2m-2s-sync]# vim broker-a.properties
brokerClusterName=Kevin-MQ-Cluster
brokerName=broker-a
brokerId=0
namesrvAddr=192.168.10.205:20901
autoCreateTopicEnable=false
clusterTopicEnable=false
brokerTopicEnable=false
autoCreateSubscriptionGroup=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
fetchNamesrvAddrByAddressServer=true
filterServerNums=1
serverWorkerThreads=32
deleteWhen=04
fileReservedTime=168
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
#netty监听端口
listenPort=20911 ====================================================================
mq-master02节点配置
[root@mq-master02 src]# cat /data/rocketmq/conf/2m-2s-sync/broker-b.properties
brokerClusterName=Kevin-MQ-Cluster
brokerName=broker-b
brokerId=0
namesrvAddr=192.168.10.205:20901
autoCreateTopicEnable=false
clusterTopicEnable=false
brokerTopicEnable=false
autoCreateSubscriptionGroup=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
fetchNamesrvAddrByAddressServer=true
filterServerNums=1
serverWorkerThreads=32
deleteWhen=04
fileReservedTime=168
brokerRole=SYNC_MASTER
flushDiskType=SYNC_FLUSH
#netty监听端口
listenPort=20911 ====================================================================
mq-slave01节点配置
[root@mq-slave01 src]# cat /data/rocketmq/conf/2m-2s-sync/broker-a-s.properties
brokerClusterName=Kevin-MQ-Cluster
brokerName=broker-a
brokerId=1
namesrvAddr=192.168.10.205:20901
autoCreateTopicEnable=false
clusterTopicEnable=false
brokerTopicEnable=false
autoCreateSubscriptionGroup=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
fetchNamesrvAddrByAddressServer=true
filterServerNums=1
serverWorkerThreads=32
deleteWhen=04
fileReservedTime=168
brokerRole=SLAVE
flushDiskType=SYNC_FLUSH
#netty监听端口
listenPort=20911 ====================================================================
mq-slave02节点配置
[root@mq-slave02 src]# cat /data/rocketmq/conf/2m-2s-sync/broker-b-s.properties
brokerClusterName=Kevin-MQ-Cluster
brokerName=broker-b
brokerId=1
namesrvAddr=192.168.10.205:20901
autoCreateTopicEnable=false
clusterTopicEnable=false
brokerTopicEnable=false
autoCreateSubscriptionGroup=false
sendMessageThreadPoolNums=128
pullMessageThreadPoolNums=128
fetchNamesrvAddrByAddressServer=true
filterServerNums=1
serverWorkerThreads=32
deleteWhen=04
fileReservedTime=168
brokerRole=SLAVE
flushDiskType=SYNC_FLUSH
#netty监听端口
listenPort=20911 3) 启动NameServer (四台broker节点机器操作一样)
只需要将/data/rocketmq/startBrokerAM.sh中的JAVA_HOME改成自己服务的java路径就行了.
本案例的java家目录路径是/usr/java/jdk1.8.0_131 [root@mq-master01 ~]# cat /data/rocketmq/startBrokerAM.sh |grep JAVA_HOME
export JAVA_HOME=/data/software/jdk1.7.0_80
[root@mq-master01 ~]# sed -i 's#/data/software/jdk1.7.0_80#/usr/java/jdk1.8.0_131#g' /data/rocketmq/startBrokerAM.sh
[root@mq-master01 ~]# cat /data/rocketmq/startBrokerAM.sh |grep JAVA_HOME
export JAVA_HOME=/usr/java/jdk1.8.0_131 温馨提示:
启动顺序:最好是先启动NameServer,再启动BrokerServer(启动BrokerServer之前关闭防火墙)
停止顺序:最好先停止BrokerServer,再停止NameServer 四台节点的启动脚本分别为:
[root@mq-master01 rocketmq]# cat startBrokerAM.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
nohup sh ./alibaba-rocketmq/bin/mqbroker -c ./conf/2m-2s-sync/broker-a.properties > ./nohup.out 2>&1 & [root@mq-master02 rocketmq]# cat startBrokerAM.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
nohup sh ./alibaba-rocketmq/bin/mqbroker -c ./conf/2m-2s-sync/broker-b.properties > ./nohup.out 2>&1 & [root@mq-slave01 rocketmq]# cat startBrokerAM.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
nohup sh ./alibaba-rocketmq/bin/mqbroker -c ./conf/2m-2s-sync/broker-a-s.properties > ./nohup.out 2>&1 & [root@mq-slave02 rocketmq]# cat startBrokerAM.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
nohup sh ./alibaba-rocketmq/bin/mqbroker -c ./conf/2m-2s-sync/broker-b-s.properties > ./nohup.out 2>&1 & 启动NameServer(四台broker节点机器操作一样)
[root@mq-master01 ~]# cd /data/rocketmq/ #一定要先切换到该路径下
[root@mq-master01 rocketmq]# /bin/bash /data/rocketmq/startBrokerAM.sh [root@mq-master01 rocketmq]# ps -ef|grep rocketmq
root 16783 1 0 09:13 pts/1 00:00:00 sh ./alibaba-rocketmq/bin/mqbroker -c ./conf/2m-2s-sync/broker-a.properties
root 16787 16783 0 09:13 pts/1 00:00:00 sh /data/rocketmq/alibaba-rocketmq/bin/runbroker.sh com.alibaba.rocketmq.broker.BrokerStartup -c ./conf/2m-2s-sync/broker-a.properties
root 16790 16787 48 09:13 pts/1 00:00:01 /usr/java/jdk1.8.0_131/bin/java -Drocketmq.home.dir=/data/rocketmq/alibaba-rocketmq -Duser.home=/data/rocketmq -Xms2048M -Xmx2048M -XX:PermSize=512M -XX:MaxPermSize=512M -XX:NewSize=768M -XX:MaxNewSize=768M -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 -XX:+DisableExplicitGC -verbose:gc -Xloggc:/data/rocketmq/logs/gclog/rmq_bk_gc.16787.log -XX:+PrintGCDetails -XX:-OmitStackTraceInFastThrow -Djava.ext.dirs=/data/rocketmq/alibaba-rocketmq/bin/../lib -cp .:/data/rocketmq/alibaba-rocketmq/bin/../conf: -Drocketmq.namesrv.domain=172.16.50.144 -Drocketmq.namesrv.domain.port=48080 -Drocketmq.namesrv.domain.subgroup=namesrv/getNSAddr.do com.alibaba.rocketmq.broker.BrokerStartup -c ./conf/2m-2s-sync/broker-a.properties
root 16835 16088 0 09:13 pts/1 00:00:00 grep rocketmq [root@mq-master01 rocketmq]# lsof -i:20911
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 29934 root 79u IPv6 20211949 0t0 TCP *:20911 (LISTEN)
java 29934 root 96u IPv6 20212542 0t0 TCP mq-master01:20911->mq-master02:53222 (ESTABLISHED)
[root@mq-master01 rocketmq]# lsof -i:20901
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 29934 root 88u IPv6 20212051 0t0 TCP mq-master01:41510->mq-console-nameserver:20901 (ESTABLISHED) [root@mq-master01 rocketmq]# jps
30235 Jps
29934 BrokerStartup 查看rockermq的版本:
[root@mq-master01 rocketmq]# ll /data/rocketmq/alibaba-rocketmq/lib/
total 11836
-rw-rw-r--. 1 root root 16088 Nov 28 2016 annotation-indexer-1.4.jar
-rw-rw-r--. 1 root root 3159 Nov 28 2016 bridge-method-annotation-1.12.jar
-rw-rw-r--. 1 root root 41123 Nov 28 2016 commons-cli-1.2.jar
-rw-rw-r--. 1 root root 259600 Nov 28 2016 commons-codec-1.7.jar
-rw-rw-r--. 1 root root 185140 Nov 28 2016 commons-io-2.4.jar
-rw-rw-r--. 1 root root 284220 Nov 28 2016 commons-lang-2.6.jar
-rw-rw-r--. 1 root root 2838580 Nov 28 2016 derby-10.10.2.0.jar
-rw-rw-r--. 1 root root 409203 Nov 28 2016 fastjson-1.2.3.jar
-rw-rw-r--. 1 root root 154710 Nov 28 2016 github-api-1.59.jar
-rw-rw-r--. 1 root root 33483 Nov 28 2016 jackson-annotations-2.2.3.jar
-rw-rw-r--. 1 root root 192699 Nov 28 2016 jackson-core-2.2.3.jar
-rw-rw-r--. 1 root root 865838 Nov 28 2016 jackson-databind-2.2.3.jar
-rw-rw-r--. 1 root root 544021 Nov 28 2016 javassist-3.7.ga.jar
-rw-rw-r--. 1 root root 264600 Nov 28 2016 logback-classic-1.0.13.jar
-rw-rw-r--. 1 root root 418870 Nov 28 2016 logback-core-1.0.13.jar
-rw-rw-r--. 1 root root 1581066 Nov 28 2016 mockito-all-1.9.5.jar
-rw-rw-r--. 1 root root 964879 Nov 28 2016 mysql-connector-java-5.1.31.jar
-rw-rw-r--. 1 root root 1887979 Nov 28 2016 netty-all-4.0.25.Final.jar
-rw-rw-r--. 1 root root 160098 Nov 28 2016 rocketmq-broker-3.4.6-lo-20161026.115524-467.jar
-rw-rw-r--. 1 root root 241439 Nov 28 2016 rocketmq-client-3.4.6-lo-20160927.070341-319.jar
-rw-rw-r--. 1 root root 213219 Nov 28 2016 rocketmq-common-3.4.6-lo-20160927.070334-319.jar
-rw-rw-r--. 1 root root 38123 Nov 28 2016 rocketmq-filtersrv-3.4.6-lo-20160927.070417-318.jar
-rw-rw-r--. 1 root root 33525 Nov 28 2016 rocketmq-namesrv-3.4.6-lo-20160927.070407-319.jar
-rw-rw-r--. 1 root root 93612 Nov 28 2016 rocketmq-remoting-3.4.6-lo-20160927.070325-319.jar
-rw-rw-r--. 1 root root 4088 Nov 28 2016 rocketmq-srvutil-3.4.6-lo-20160927.070351-319.jar
-rw-rw-r--. 1 root root 157893 Nov 28 2016 rocketmq-store-3.4.6-lo-20160927.070348-319.jar
-rw-rw-r--. 1 root root 147117 Nov 28 2016 rocketmq-tools-3.4.6-lo-20160927.070403-319.jar
-rw-rw-r--. 1 root root 26084 Nov 28 2016 slf4j-api-1.7.5.jar
3) NameServer和Console部署(mq-console-nameserver节点上操作)
安装配置NameServer
[root@mq-console-nameserver src]# cd
[root@mq-console-nameserver ~]# cd /usr/local/src/
[root@mq-console-nameserver src]# ll rocketmq_namesrv.zip
-rw-rw-r-- 1 1000 1000 11802959 May 22 11:03 rocketmq_namesrv.zip
[root@mq-console-nameserver src]# unzip rocketmq_namesrv.zip
[root@mq-console-nameserver src]# mv rocketmq_namesrv /data/
[root@mq-console-nameserver src]# vim /data/rocketmq_namesrv/conf/namesrv.properties
listenPort=20901 修改JAVA_HOME
[root@mq-console-nameserver src]# sed -i 's#/data/software/jdk1.7.0_80#/usr/java/jdk1.8.0_131#g' /data/rocketmq_namesrv/startNameServer.sh
[root@mq-console-nameserver src]# cat /data/rocketmq_namesrv/startNameServer.sh
export JAVA_HOME=/usr/java/jdk1.8.0_131
nohup sh ./alibaba-rocketmq/bin/mqnamesrv -c ./conf/namesrv.properties > ./nohup.out 2>&1 & 启动NameServer
[root@mq-console-nameserver src]# cd /data/rocketmq_namesrv/
[root@mq-console-nameserver rocketmq_namesrv]# sh startNameServer.sh [root@mq-console-nameserver rocketmq_namesrv]# ps -ef|grep mqnamesrv
root 17455 1 0 09:23 pts/1 00:00:00 sh ./alibaba-rocketmq/bin/mqnamesrv -c ./conf/namesrv.properties
root 17555 24306 0 09:23 pts/1 00:00:00 grep mqnamesrv
[root@mq-console-nameserver rocketmq_namesrv]# lsof -i:20901
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 17461 root 47u IPv6 40870224 0t0 TCP *:20901 (LISTEN) ==================================================
安装部署Console监控平台
[root@mq-console-nameserver ~]# cd /usr/local/src/
[root@mq-console-nameserver src]# ll rocketmq_admin.zip
-rw-rw-r-- 1 1000 1000 41574127 May 22 11:03 rocketmq_admin.zip
[root@mq-console-nameserver src]# unzip rocketmq_admin.zip 服务端口(如下改成48080)
[root@mq-console-nameserver src]# vim /data/rocketmq_admin/apache-tomcat-8.0.32-rocketmq-console/conf/server.xml
......
<Connector port="48080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="28443" /> [root@mq-console-nameserver src]# mv rocketmq_admin /data/
[root@mq-console-nameserver src]# cd /data/rocketmq_admin/
[root@mq-console-nameserver rocketmq_admin]# cd apache-tomcat-8.0.32-rocketmq-console/webapps/rocketmq/WEB-INF/classes/
[root@mq-console-nameserver classes]# vim config.properties
rocketmq.namesrv.addr=192.168.10.205:20901
throwDone=true 启动console服务
[root@mq-console-nameserver classes]# /data/rocketmq_admin/apache-tomcat-8.0.32-rocketmq-console/bin/startup.sh
[root@mq-console-nameserver classes]# lsof -i:48080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 19338 root 46u IPv6 40883769 0t0 TCP *:48080 (LISTEN)
访问RockerMQ Console监控平台http://192.168.10.205:48080/rocketmq/cluster/list.do,如下截图:
Centos6.9下RocketMQ3.4.6高可用集群部署记录(双主双从+Nameserver+Console)的更多相关文章
- hbase高可用集群部署(cdh)
一.概要 本文记录hbase高可用集群部署过程,在部署hbase之前需要事先部署好hadoop集群,因为hbase的数据需要存放在hdfs上,hadoop集群的部署后续会有一篇文章记录,本文假设had ...
- Kubernetes容器集群 - harbor仓库高可用集群部署说明
之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...
- 【转】harbor仓库高可用集群部署说明
之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...
- RocketMQ的高可用集群部署
RocketMQ的高可用集群部署 标签(空格分隔): 消息队列 部署 1. RocketMQ 集群物理部署结构 Rocket 物理部署结构 Name Server: 单点,供Producer和Cons ...
- RabbitMQ的高可用集群部署
RabbitMQ的高可用集群部署 标签(空格分隔): 消息队列 部署 1. RabbitMQ部署的三种模式 1.1 单一模式 单机情况下不做集群, 仅仅运行一个RabbitMQ. # docker-c ...
- rocketmq高可用集群部署(RocketMQ-on-DLedger Group)
rocketmq高可用集群部署(RocketMQ-on-DLedger Group) rocketmq部署架构 rocketmq部署架构非常多,都是为了解决一些问题,越来越高可用,越来越复杂. 单ma ...
- MySQL MHA 高可用集群部署及故障切换
MySQL MHA 高可用集群部署及故障切换 1.概念 2.搭建MySQL + MHA 1.概念: a)MHA概念 : MHA(MasterHigh Availability)是一套优秀的MySQL高 ...
- (十)RabbitMQ消息队列-高可用集群部署实战
原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...
- Hadoop部署方式-高可用集群部署(High Availability)
版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客的高可用集群是建立在完全分布式基础之上的,详情请参考:https://www.cnblogs.com/yinzhengjie/p/90651 ...
随机推荐
- centos6启动服务说明
centos6启动服务说明 阅读目录 centos6.9最小化安装下的启动服务 其他服务(仅供参考,持续更新) 此表转自:参考1.参考2.另有多处补充及纠正. 1. centos6.9最小化安装下的启 ...
- 如何创建一个 mongo 数据库并为它添加一个认证用户?
0.登录 admin 库,开启一个 mongo shell mongo --port 27017 -u "adminUser" -p "adminPass" - ...
- 【软件工程1916|W(福州大学)_助教博客】团队答辩助教问题记录
周一进行了团队项目的课堂答辩,结合团队项目报告对团队项目提出了1-2个问题,将问题和团队回答巨鹿如下 那周余嘉熊掌将得队 如何用户保证隐私安全?答:后期考虑,团队中有一个专业是信息安全的,会针对这块提 ...
- Xpath语法-爬虫(一)
前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...
- c#中开发ActiveX的学习笔记
1.为什么要用ActiveX? 网页本身的功能是有限的,要想实现一些网页本身不支持的功能,比如:网页上的p2p视频播放,就得靠ActiveX这种古老的技术. 2.c#能开发ActiveX吗? 严格意义 ...
- php使用curl模拟多线程发送请求
每个PHP文件的执行是单线程的,但是php本身也可以用一些别的技术实现多线程并发比如用php-fpm进程,这里用curl模拟多线程发送请求.php的curl多线程是通过不断调用curl_multi_e ...
- 原生js 数组的迭代的方法
一.原生js Array给我们提供很多了方法.方便我们操作数组.这些方法的参数,都需要传入一个匿名函数,匿名函数中有三个参数,分别含义是:数组中的项.该项的索引.以及数组本身. 1.filter方法: ...
- python之字符串、列表和元组
先简单的了解一下两个相关概念 模块 python中的模块需要使用特殊的命令import来导入.格式:模块.函数.如下: 在确定自己不会导入多个同名函数的情况下,可以使用import命令的另外一种形式: ...
- 源码分享篇:使用Python进行QQ批量登录
直接上源码 1 #coding=utf-8 2 __author__ = 'Eagle' 3 import os 4 import time 5 import win32gui 6 import wi ...
- sql语句,查询昨天的数据
如果在程序中,有前台传来两个时间点:beginTime和endTime,在sql查询中的限制条件就是查询昨天的数据,那么可以这样写: 但是如果在这里要查询昨天的数据的话, 则不能简单地在开始时间的那里 ...