正文
本人是在一台虚拟机上搭建的,如果是生产部署请做相应的修改!!!
一、安装docker-compose
假设你电脑已经安装了docker了
1、下载docker-compose
[root@bogon ~]# sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/do
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