1.可以从apache的文件库下载 https://archive.apache.org/dist/rocketmq/这里我们选择最新版
2.利用wget命令下载
wget https://archive.apache.org/dist/rocketmq/4.7.1/rocketmq-all-4.7.1-bin-release.zip
3.项目解压命令
unzip rocketmq-all-4.7.1-bin-release.zip -d /usr/local/rocketmq
4.修改RocketMQ启动配置
修改目录 /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release/bin 下的 3 个配置文件: runserver.sh、runbroker.sh 、tools.sh不然会报insufficient memory
5.runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
6.runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"
7.tools.sh
JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn256m -XX:PermSize=128m -XX:MaxPermSize=128m"
8.启动 NameServer
进入 RocketMQ 安装目录下的 /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release 目录进行操作
nohup sh bin/mqnamesrv &
9.启动 Broker
同样进入 RocketMQ 安装目录下的 /usr/local/rocketmq/rocketmq-all-4.7.1-bin-release 目录进行操作
nohup sh bin/mqbroker -n 192.168.44.128:9876 &
4.主从配置注意事项
3. brokerName需要一致,才可以形成主备关系
4. brokerId为0以及brokerRole为ASYNC_MASTER或者SYNC_MASTER代表为master.
5. broker不为0以及brokerRole为SLAVE代表为slave
1.添加集群部署目录
mkdir -p /opt/rocketmq-docker/conf
2.创建 broker-master-a配置文件
vi /opt/rocketmq-docker/conf/broker-master-a.conf
3.添加文件内容
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10909
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
1.创建 broker-slave-a配置文件
vi /opt/rocketmq-docker/conf/broker-slave-a.conf
2.添加文件内容
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10911
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
1.创建 broker-master-b配置文件
vi /opt/rocketmq-docker/conf/broker-master-b.conf
2.添加文件内容
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10919
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SYNC_MASTER
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
1.创建 broker-slave-b配置文件
vi /opt/rocketmq-docker/conf/broker-slave-b.conf
2.添加文件内容
brokerClusterName = DefaultCluster
brokerName = broker-b
brokerId = 1
deleteWhen = 04
fileReservedTime = 48
#namesrvAddr 地址 填写docker内网地址即可
namesrvAddr=172.18.0.3:9876;172.18.0.4:9876
#启用自动创建主题
autoCreateTopicEnable=true
#这个很有讲究 如果是正式环境 这里一定要填写内网地址(安全)
#如果是用于测试或者本地这里建议要填外网地址,因为你的本地代码是无法连接到阿里云内网,只能连接外网。
#当前broker监听的IP
brokerIP1 = 192.168.56.101
#存在broker主从时,在broker主节点上配置了brokerIP2的话,broker从节点会连接主节点配置的brokerIP2来同步。
brokerIP2 = 192.168.56.101
#Broker 对外服务的监听端口
listenPort = 10921dock
#Broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE
brokerRole=SLAVE
#刷盘方式
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
1.创建数据挂在目录
mkdir -p /opt/rocketmq-docker/data/nameserver-a/logs
mkdir -p /opt/rocketmq-docker/data/nameserver-a/store
mkdir -p /opt/rocketmq-docker/data/nameserver-b/logs
mkdir -p /opt/rocketmq-docker/data/nameserver-b/store
mkdir -p /opt/rocketmq-docker/data/broker-master-a/logs
mkdir -p /opt/rocketmq-docker/data/broker-master-b/logs
mkdir -p /opt/rocketmq-docker/data/broker-master-a/store
mkdir -p /opt/rocketmq-docker/data/broker-master-b/store
mkdir -p /opt/rocketmq-docker/data/broker-slave-a/logs
mkdir -p /opt/rocketmq-docker/data/broker-slave-b/logs
mkdir -p /opt/rocketmq-docker/data/broker-slave-a/store
mkdir -p /opt/rocketmq-docker/data/broker-slave-b/store
mkdir -p /opt/rocketmq-docker/data/broker-master-a
mkdir -p /opt/rocketmq-docker/data/broker-master-b
mkdir -p /opt/rocketmq-docker/data/broker-slave-a
mkdir -p /opt/rocketmq-docker/data/broker-slave-b
2.创建docker-compose文件
vi /opt/rocketmq-docker/docker-compose.yml
3.添加文件内容
version: '2'
services:
nameserver-a:
image: rocketmqinc/rocketmq
container_name: nameserver-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.3
environment:
MAX_POSSIBLE_HEAP: 100000000
ports:
- 9876:9876
volumes:
- /opt/rocketmq-docker/data/nameserver-a/logs:/root/logs
- /opt/rocketmq-docker/data/nameserver-a/store:/root/store
command: sh mqnamesrv
nameserver-b:
image: rocketmqinc/rocketmq
container_name: nameserver-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.4
environment:
MAX_POSSIBLE_HEAP: 100000000
ports:
- 9877:9876
volumes:
- /opt/rocketmq-docker/data/nameserver-b/logs:/root/logs
- /opt/rocketmq-docker/data/nameserver-b/store:/root/store
command: sh mqnamesrv
broker-master-a:
image: rocketmqinc/rocketmq
container_name: broker-master-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.5
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10909:10909
- 10910:10910
volumes:
- /opt/rocketmq-docker/data/broker-master-a/logs:/root/logs
- /opt/rocketmq-docker/data/broker-master-a/store:/root/store
- /opt/rocketmq-docker/conf/broker-master-a.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
broker-master-b:
image: rocketmqinc/rocketmq
container_name: broker-master-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.6
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10919:10919
- 10920:10920
volumes:
- /opt/rocketmq-docker/data/broker-master-b/logs:/root/logs
- /opt/rocketmq-docker/data/broker-master-b/store:/root/store
- /opt/rocketmq-docker/conf/broker-master-b.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
broker-slave-a:
image: rocketmqinc/rocketmq
container_name: broker-slave-a
networks:
rocketmq_net:
ipv4_address: 172.18.0.7
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10911:10911
volumes:
- /opt/rocketmq-docker/data/broker-slave-a/logs:/root/logs
- /opt/rocketmq-docker/data/broker-slave-a/store:/root/store
- /opt/rocketmq-docker/conf/broker-slave-a.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
- broker-master-a
- broker-master-b
broker-slave-b:
image: rocketmqinc/rocketmq
container_name: broker-slave-b
networks:
rocketmq_net:
ipv4_address: 172.18.0.8
environment:
MAX_POSSIBLE_HEAP: 200000000
ports:
- 10921:10921
volumes:
- /opt/rocketmq-docker/data/broker-slave-b/logs:/root/logs
- /opt/rocketmq-docker/data/broker-slave-b/store:/root/store
- /opt/rocketmq-docker/conf/broker-slave-b.conf:/opt/rocketmq/conf/broker.conf
command: sh mqbroker -c /opt/rocketmq/conf/broker.conf
depends_on:
- nameserver-a
- nameserver-b
- broker-master-a
- broker-master-b
console:
image: styletang/rocketmq-console-ng
container_name: rocketmq-console-ng
networks:
rocketmq_net:
ipv4_address: 172.18.0.9
ports:
- 8080:8080
depends_on:
- nameserver-a
- nameserver-b
environment:
- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=172.18.0.3:9876;172.18.0.4:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false
networks:
rocketmq_net:
ipam:
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
1.在docker-compose文件所在目录,执行命令启动
docker-compose up -d