rocket高可用集群
示例是在统一台电脑上已不同端口号启动的伪集群
部署方案
2nameSvr
1master broker + 2slave broker
安装rocketmq
> yum install -y unzip zip
> cd /usr/local
> wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip
> unzip rocketmq-all-4.7.0-bin-release.zip
> mv rocketmq-all-4.7.0-bin-release rocketmq-all-4.7.0
> cd rocketmq-all-4.7.0
修改环境变量
> vim /etc/profile
在文件最后插入
ROCKETMQ_HOME=/usr/local/rocketmq-all-4.7.0
export PATH=${ROCKETMQ_HOME}/bin:${PATH}
刷新配置
> source /etc/profile
新建/usr/local/rocketmq-4.7.0/logs目录,用来存放日志
/usr/local/rocketmq-4.7.0/logs
启动nameSvr
启动2台nameSvr,端口分别为5432、5433
新建myconfig目录用来存放配置文件
> mkdir /usr/local/rocketmq-4.7.0/myconfig
在myconfig目录下创建namesrv1.properties和namesrv2.properties
并在配置文件中指定端口
namesrv1.properties
listenPort=5432
namesrv1.properties
listenPort=5433
rockermq默认启动jvm进行占用2GB内存,因为是测试环境所以要先修改一下
修改/usr/local/rocketmq-4.7.0/bin/runserver.sh文件中的JVM参数
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m -XX:MetaspaceSize=32m -XX:MaxMetaspaceSize=320m"
启动
> nohup /usr/local/rocketmq-4.7.0/bin/mqnamesrv -c /usr/local/rocketmq-4.7.0/myconfig/namesrv1.properties > /usr/local/rocketmq-4.7.0/logs/namesvr1.log 2>&1 &
> nohup /usr/local/rocketmq-4.7.0/bin/mqnamesrv -c /usr/local/rocketmq-4.7.0/myconfig/namesrv2.properties > /usr/local/rocketmq-4.7.0/logs/namesvr2.log 2>&1 &
查看端口号和log日志检查是否启动成功
> netstat -tln
启动borker
在myconfig目录下创建borker配置文件
broker-a.properties(主borker)
#外网IP地址
brokerIP1=xxxxxxx
listenPort=10919
#nameServer地址
namesrvAddr=localhost:5432;localhost:5433
#集群名称
brokerClusterName=DefaultCluster
#borker名称,主从borker要一致
brokerName=broker-a
# 0代表该borker为master
brokerId=0
# 何时触发删除文件,默认凌晨4点删除文件
deleteWhen=04
# 文件保留时间(单位小时)
fileReservedTime=48
# 主从borker间数据同步的方式 ASYNC_MASTER(异步)、SYNC_MASTER(同步)、SLAVE(从)
brokerRole=SYNC_MASTER
# 消息写入磁盘的方式 ASYNC_FLUSH(异步刷盘)、SYNC_FLUSH(同步刷盘)
flushDiskType=ASYNC_FLUSH
# 因为要在一台电脑启动多个broker所以要为不同的broker配置不同的文件地址
storePathRootDir = /usr/local/rocketmq-4.7.0/store/borker-a
storePathCommitLog = /usr/local/rocketmq-4.7.0/store/borker-a/commitlog
storePathConsumeQueue = /usr/local/rocketmq-4.7.0/store/borker-a/consumequeue
storePathIndex = /usr/local/rocketmq-4.7.0/store/borker-a/index
storeCheckpoint = /usr/local/rocketmq-4.7.0/store/borker-a/checkpoint
abortFile = /usr/local/rocketmq-4.7.0/store/borker-a/abort
autoCreateTopicEnable = true
broker-a-s.properties(从broker)
#外网IP地址
brokerIP1=xxxxxxx
listenPort=10918
#nameServer地址
namesrvAddr=localhost:5432;localhost:5433
#集群名称
brokerClusterName=DefaultCluster
#borker名称,主从borker要一致
brokerName=broker-a
# 0代表该borker为master
brokerId=1
# 何时触发删除文件,默认凌晨4点删除文件
deleteWhen=04
# 文件保留时间(单位小时)
fileReservedTime=48
# 主从borker间数据同步的方式 ASYNC_MASTER(异步)、SYNC_MASTER(同步)、SLAVE(从)
brokerRole=SLAVE
# 消息写入磁盘的方式 ASYNC_FLUSH(异步刷盘)、SYNC_FLUSH(同步刷盘)
flushDiskType=ASYNC_FLUSH
# 因为要在一台电脑启动多个broker所以要为不同的broker配置不同的文件地址
storePathRootDir = /usr/local/rocketmq-4.7.0/store/borker-a-s
storePathCommitLog = /usr/local/rocketmq-4.7.0/store/borker-a-s/commitlog
storePathConsumeQueue = /usr/local/rocketmq-4.7.0/store/borker-a-s/consumequeue
storePathIndex = /usr/local/rocketmq-4.7.0/store/borker-a-s/index
storeCheckpoint = /usr/local/rocketmq-4.7.0/store/borker-a-s/checkpoint
abortFile = /usr/local/rocketmq-4.7.0/store/borker-a-s/abort
autoCreateTopicEnable = true
borker启动默认分配8G内存,因为是测试环境所以先修改/usr/local/rocketmq-4.7.0/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"
启动
> nohup /usr/local/rocketmq-4.7.0/bin/mqbroker -c /usr/local/rocketmq-4.7.0/myconfig/broker-a.properties > /usr/local/rocketmq-4.7.0/logs/broker-a.log 2>&1 &
> nohup /usr/local/rocketmq-4.7.0/bin/mqbroker -c /usr/local/rocketmq-4.7.0/myconfig/broker-a-s.properties > /usr/local/rocketmq-4.7.0/logs/broker-a-s.log 2>&1 &
防火墙开放以下端口
nameSrv:5432 5433
broker启动时除了会占用配置文件中的listenPort,还会占用相邻的几个端口
broker:10917-10919 10817-10819