Docker安装多主多备rocketMQ集群之Docker-compose方式
本人是在一台虚拟机上搭建的,如果是生产部署请做相应的修改!!!目录一、安装docker-compose二、安装rocketmq配置文件yml配置文件三、安装成功一、安装docker-compose假设你电脑已经安装了docker了,如果没有请转Docker的入门以及简单应用的安装_熟透的蜗牛的博客-CSDN博客1、下载docker-compose[root@bogon ~]# sudo curl
·
本人是在一台虚拟机上搭建的,如果是生产部署请做相应的修改!!!
目录
一、安装docker-compose
假设你电脑已经安装了docker了,如果没有请转Docker的入门以及简单应用的安装_熟透的蜗牛的博客-CSDN博客
1、下载docker-compose
[root@bogon ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2、授权
[root@bogon ~]# sudo chmod +x /usr/local/bin/docker-compose
3、检测是否安装成功
[root@bogon bin]# docker-compose --version或者docker-compose -v
4、卸载
[root@bogon bin]# sudo rm /usr/local/bin/docker-compose
二、安装rocketmq
配置文件
1、创建配置文件目录
mkdir -p /data/rocketmq/{logs-nameserver-m,logs-nameserver-s,logs-a,logs-a-s,logs-b,logs-b-s,store-a,store-a-s,store-b,store-b-s,conf}
2、broker-a.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#所属集群名字,同一个集群名字相同
brokerClusterName=rocketmq-cluster
#broker名字
brokerName=broker-a
#0表示master >0 表示slave
brokerId=0
#删除文件的时间点,凌晨4点
deleteWhen=04
#文件保留时间 默认是48小时
fileReservedTime=168
#异步复制Master
brokerRole=ASYNC_MASTER
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=10911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.139.156:9876;192.168.139.156:9877
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.139.156
3、broker-b.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-b
#0 表示 Master,>0 表示 Slave
brokerId=0
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=168
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=ASYNC_MASTER
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=11911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.139.156:9876;192.168.139.156:9877
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.139.156
4、broker-a-s.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#所属集群名字
brokerClusterName=rocketmq-cluster
#broker名字,注意此处不同的配置文件填写的不一样 例如:在a.properties 文件中写 broker-a 在b.properties 文件中写 broker-b
brokerName=broker-a
#0 表示 Master,>0 表示 Slave
brokerId=1
#删除文件时间点,默认凌晨 4点
deleteWhen=04
#文件保留时间,默认 48 小时
fileReservedTime=168
#Broker 的角色,ASYNC_MASTER=异步复制Master,SYNC_MASTER=同步双写Master,SLAVE=slave节点
brokerRole=SLAVE
#刷盘方式,ASYNC_FLUSH=异步刷盘,SYNC_FLUSH=同步刷盘
flushDiskType=SYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=12911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.139.156:9876;192.168.139.156:9877
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.139.156
5、broker-b-s.conf
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
brokerClusterName=rocketmq-cluster
brokerName=broker-b
#slave
brokerId=1
deleteWhen=04
fileReservedTime=168
brokerRole=SLAVE
flushDiskType=ASYNC_FLUSH
#Broker 对外服务的监听端口
listenPort=13911
#nameServer地址,这里nameserver是单台,如果nameserver是多台集群的话,就用分号分割(即namesrvAddr=ip1:port1;ip2:port2;ip3:port3)
namesrvAddr=192.168.139.156:9876;192.168.139.156:9877
#每个topic对应队列的数量,默认为4,实际应参考consumer实例的数量,值过小不利于consumer负载均衡
defaultTopicQueueNums=8
#是否允许 Broker 自动创建Topic,生产建议关闭
autoCreateTopicEnable=true
#是否允许 Broker 自动创建订阅组,生产建议关闭
autoCreateSubscriptionGroup=true
#设置BrokerIP
brokerIP1=192.168.139.156
yml配置文件
1、创建目录存放docker-compose.yml
[root@bogon ~]# mkdir -p /usr/local/docker-compose/rocketmq
2、vi docker-compose.yml 如下内容
version: '2'
services:
namesrv1:
image: foxiswho/rocketmq:4.8.0
container_name: rmqnamesrv1
ports:
- 9876:9876
volumes:
- /data/rocketmq/logs-nameserver-m:/home/rocketmq/logs
environment:
JAVA_OPT_EXT: -server -Xms256M -Xmx256M -Xmn128m
command: sh mqnamesrv
namesrv2:
image: foxiswho/rocketmq:4.8.0
container_name: rmqnamesrv2
ports:
- 9877:9877
volumes:
- /data/rocketmq/logs-nameserver-s:/home/rocketmq/logs
environment:
JAVA_OPT_EXT: -server -Xms256M -Xmx256M -Xmn128m
command: sh mqnamesrv
broker-a-m:
image: foxiswho/rocketmq:4.8.0
container_name: rmqbroker-a-master
ports:
- 10909:10909
- 10911:10911
- 10912:10912
volumes:
- /data/rocketmq/logs-a:/home/rocketmq/logs
- /data/rocketmq/store-a:/home/rocketmq/store
- /data/rocketmq/conf/broker-a.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
environment:
JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m
NAMESRV_ADDR: 192.168.139.156:9876;192.168.139.156:9877
command: sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
broker-b-m:
image: foxiswho/rocketmq:4.8.0
container_name: rmqbroker-b-master
ports:
- 11909:11909
- 11911:11911
- 11912:11912
volumes:
- /data/rocketmq/logs-b:/home/rocketmq/logs
- /data/rocketmq/store-b:/home/rocketmq/store
- /data/rocketmq/conf/broker-b.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
environment:
JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m
NAMESRV_ADDR: 192.168.139.156:9876;192.168.139.156:9877
command: sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
broker-a-s:
image: foxiswho/rocketmq:4.8.0
container_name: rmqbroker-a-slave
ports:
- 12909:12909
- 12911:12911
- 12912:12912
volumes:
- /data/rocketmq/logs-a-s:/home/rocketmq/logs
- /data/rocketmq/store-a-s:/home/rocketmq/store
- /data/rocketmq/conf/broker-a-s.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
environment:
JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m
NAMESRV_ADDR: 192.168.139.156:9876;192.168.139.156:9877
command: sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
broker-b-s:
image: foxiswho/rocketmq:4.8.0
container_name: rmqbroker-b-slave
ports:
- 13909:13909
- 13911:13911
- 13912:13912
volumes:
- /data/rocketmq/logs-b-s:/home/rocketmq/logs
- /data/rocketmq/store-b-s:/home/rocketmq/store
- /data/rocketmq/conf/broker-b-s.conf:/home/rocketmq/rocketmq-4.8.0/conf/broker.conf
environment:
JAVA_OPT_EXT: -server -Xms256m -Xmx256m -Xmn128m
NAMESRV_ADDR: 192.168.139.156:9876;192.168.139.156:9877
command: sh mqbroker -c /home/rocketmq/rocketmq-4.8.0/conf/broker.conf
depends_on:
- namesrv1
- namesrv2
注意:yml文件格式一定要写对,建议修改完成之后在线校验一下。一定要对新建的存储目录和配置文件chmod 777授权,否则启动不起来!!!
3、启动
在docker-compose.yml的目录下启动
docker-compose up
#后台启动
docker-compose up -d
三、安装成功
端口号说明
- listenPort参数是broker的监听端口号,是remotingServer服务组件使用,作为对Producer和Consumer提供服务的端口号,默认为10911。
- fastListenPort参数是fastRemotingServer服务组件使用,默认为listenPort - 2,#主要用于slave同步master ,fastListenPort=10909。
- haListenPort参数是HAService服务组件使用,用于Broker的主从同步,默认为listenPort - 1, haService中使用 haListenPort=10912
更多推荐
已为社区贡献3条内容
所有评论(0)