在线考试网站模板,网站seo方案,做网站价格多少钱,起飞页自助建站平台的特点您好#xff0c;我是码农飞哥#xff08;wei158556#xff09;#xff0c;感谢您阅读本文#xff0c;欢迎一键三连哦。 #x1f4aa;#x1f3fb; 1. Python基础专栏#xff0c;基础知识一网打尽#xff0c;9.9元买不了吃亏#xff0c;买不了上当。 Python从入门到精… 您好我是码农飞哥wei158556感谢您阅读本文欢迎一键三连哦。 1. Python基础专栏基础知识一网打尽9.9元买不了吃亏买不了上当。 Python从入门到精通 2. 毕业设计专栏毕业季咱们不慌忙几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏系统性的学习爬虫的知识点。9.9元买不了吃亏买不了上当 。python爬虫入门进阶 ❤️ 4. Ceph实战从原理到实战应有尽有。 Ceph实战 ❤️ 5. Java高并发编程入门打卡学习Java高并发。 Java高并发编程入门 文章目录 一、集群特点二、服务器环境1.1.部署架构1.2.服务器信息1.3.配置Host 两台服务器都需要1.4. 安装jdk两台服务器都需要1.5. 关闭防火墙两台服务器都需要1.6. 创建数据存储目录两台服务器都需要 三、下载与安装配置2.1.下载rocketmq并解压两天服务器都要2.2. 环境变量配置两台服务器都需要2.3. 配置 rocketmq broker-a (在Master1上操作)2.4. 配置 rocketmq broker-b-s 在Slave2上配置2.5. 配置 rocketmq broker-b.properties在Master2上操作2.6. 配置rocketmq broker-a-s.properties在Slave1上操作2.7. 测试环境JVM配置两台机器都要执行2.8. 生产环境JVM配置 四、启动集群3.1.启动nameserver(两台机器上都执行3.2.启动broker3.3.测试集群生产消费情况3.5. 关闭命令 五、问题总结六、安装管理面板 一、集群特点 NameServer是一个几乎无状态的节点可集群部署节点之间不会互相通信。Broker部署相对比较复杂Broker分为Master与Slave一个Master可以对应多个Slave但是一个Slave只能对应一个Master。Master与Slave可以通过指定相同的BrokerName不同的BrokerId来区分,BrokerId为0表示MasterBrokerId大于0表示Slave。Producer与NameServer集群中的其中一个节点随机选择建立长链接定期从NameServer取Topic路由信息并向Topic服务的Master建立长链接也就是说根据Topic的路由信息找到向哪个Broker发送消息且定时向Master发送心跳Producer完全无状态可集群部署。Consumer与NameServer集群中的其中一个节点随机选择建立长链接定期从NameServer取Topic路由信息并向Topic服务的MasterSlave建立长链接且定时向MasterSlave发送心跳Consumer既可以从Master订阅消息也可以从Slave订阅消息订阅关系由Broker配置决定。
二、服务器环境
1.1.部署架构
使用的模式是 2m-2s-sync双主双从同步复制
1.2.服务器信息
IP角色架构模式192.31.186.198nameserverbrokermaster1slave2192.31.184.89nameserverbrokermaster2slave1
1.3.配置Host 两台服务器都需要 nameserver机器信息 #nameserver
172.31.186.180 rocketmq-nameserver1
172.31.184.89 rocketmq-nameserver2
#broker 机器信息
172.31.186.180 rocketmq-master1
172.31.186.180 rocketmq-slave2
172.31.184.89 rocketmq-master2
172.31.184.89 rocketmq-slave1配置完成之后重启网卡。 systemctl restart network1.4. 安装jdk两台服务器都需要
安装jdk-8u192-linux-x64.rpm此处省略。
1.5. 关闭防火墙两台服务器都需要
首先查看防火墙的状态如果状态是 active 则表示防火墙开启
$ systemctl status firewalld关闭防火墙
$ systemctl stop firewalld1.6. 创建数据存储目录两台服务器都需要
创建master节点的存储路径
mkdir -p /data/server/feige/rocketmq/store
mkdir -p /data/server/feige/rocketmq/store/commitlog
mkdir -p /data/server/feige/rocketmq/store/consumequeue
mkdir -p /data/server/feige/rocketmq/store/index创建slave节点的存储路径 mkdir -p /data/server/feige/rocketmq/store-s
mkdir -p /data/server/feige/rocketmq/store-s/commitlog
mkdir -p /data/server/feige/rocketmq/store-s/consumequeue
mkdir -p /data/server/feige/rocketmq/store-s/index三、下载与安装配置
2.1.下载rocketmq并解压两天服务器都要
cd /data/server/feige
wget https://archive.apache.org/dist/rocketmq/5.1.3/rocketmq-all-5.1.3-bin-release.zip
unzip rocketmq-all-5.1.3-bin-release.zip -d /data/server/feige/rocketmq
cd /data/server/feige/rocketmq/rocketmq-all-5.1.3-bin-release2.2. 环境变量配置两台服务器都需要
vim /etc/profile在profile文件的末尾加入如下命令
ROCKETMQ_HOME/data/server/feige/rocketmq/rocketmq-all-5.1.3-bin-release
PATH$PATH:$ROCKETMQ_HOME/bin
export ROCKETMQ_HOME PATH 执行 source /etc/profile 使文件生效
2.3. 配置 rocketmq broker-a (在Master1上操作)
vim conf/2m-2s-sync/broker-a.properties在此配置文件中添加master默认的端口是10911。
#所属集群名称
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样;主从节点一样也就是这个值区分broker组的
brokerNamebroker-a
#主从标识0 表示Master, 0 表示Slave同一个组中区分主从的标识只能有一个主
brokerId0
#当前broker监听的IP
brokerIP1172.31.186.180
#用于HA主从同步
brokerIP2172.31.186.180
#nameServer地址分号分割
namesrvAddrrocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发消息时自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums4
#是否允许Broker自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许Broker自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort10911
haListenPort10912
#删除长期无用文件时间点默认凌晨4点
deleteWhen04
#文件保留时间h默认48小时
fileReservedTime48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#检测物理文件磁盘空间使用率
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/data/server/feige/rocketmq/store
#commitLog存储路径
storePathCommitLog/data/server/feige/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue/data/server/feige/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex/data/server/feige/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint/data/server/feige/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile/data/server/feige/rocketmq/store/abort
#限制的消息大小
maxMessageSize65536
#broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE 从节点
brokerRoleSYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH2.4. 配置 rocketmq broker-b-s 在Slave2上配置
这里为了避免与master的端口冲突将slave的默认端口改成11011另外还需要将从节点broker的存储路径改下不能与master节点共用。
#所属集群名称
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-b
#主从标识0 表示Master, 0 表示Slave
brokerId1
#当前broker监听的IP
brokerIP1172.31.186.180
#用于HA主从同步
brokerIP2172.31.186.180
#nameServer地址分号分割
namesrvAddrrocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发消息时自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums4
#是否允许Broker自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许Broker自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort11011
haListenPort11012
#删除长期无用文件时间点默认凌晨4点
deleteWhen04
#文件保留时间h默认48小时
fileReservedTime48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/data/server/feige/rocketmq/store-s
#commitLog存储路径
storePathCommitLog/data/server/feige/rocketmq/store-s/commitlog
#消费队列存储路径
storePathConsumeQueue/data/server/feige/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex/data/server/feige/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckPoint/data/server/feige/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile/data/server/feige/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize65536
#broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE 从节点
brokerRoleSLAVE
#刷盘策略
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH2.5. 配置 rocketmq broker-b.properties在Master2上操作
执行
vim conf/2m-2s-sync/broker-b.properties在此配置文件中添加:master默认的端口是10911。
#所属集群名称
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-b
#主从标识0 表示Master, 0 表示Slave
brokerId0
#当前broker监听的IP
brokerIP1172.31.184.89
#用于HA主从同步
brokerIP2172.31.184.89
#nameServer地址分号分割
namesrvAddrrocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发消息时自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums4
#是否允许Broker自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许Broker自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort10911
haListenPort10912
#删除长期无用文件时间点默认凌晨4点
deleteWhen04
#文件保留时间h默认48小时
fileReservedTime48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/data/server/feige/rocketmq/store
#commitLog存储路径
storePathCommitLog/data/server/feige/rocketmq/store/commitlog
#消费队列存储路径
storePathConsumeQueue/data/server/feige/rocketmq/store/consumequeue
#消息索引存储路径
storePathIndex/data/server/feige/rocketmq/store/index
#checkpoint 文件存储路径
storeCheckPoint/data/server/feige/rocketmq/store/checkpoint
#abort 文件存储路径
abortFile/data/server/feige/rocketmq/store/abort
#限制的消息大小
maxMessageSize65536
#broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE 从节点
brokerRoleSYNC_MASTER
#刷盘策略
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH2.6. 配置rocketmq broker-a-s.properties在Slave1上操作
vim conf/2m-2s-sync/broker-a-s.properties在此配置文件中添加:将slave的默认端口改成11011。这里从节点的存储路径要与主节点区分主和从都必须有
#所属集群名称
brokerClusterNamerocketmq-cluster
#broker名字注意此处不同的配置文件填写的不一样
brokerNamebroker-a
#主从标识0 表示Master, 0 表示Slave
brokerId1
#当前broker监听的IP
brokerIP1172.31.184.89
#用于HA主从同步
brokerIP2172.31.184.89
#nameServer地址分号分割
namesrvAddrrocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在发消息时自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums4
#是否允许Broker自动创建Topic建议线下开启线上关闭
autoCreateTopicEnabletrue
#是否允许Broker自动创建订阅组建议线下开启线上关闭
autoCreateSubscriptionGrouptrue
#Broker 对外服务的监听端口
listenPort11011
haListenPort11012
#删除长期无用文件时间点默认凌晨4点
deleteWhen04
#文件保留时间h默认48小时
fileReservedTime48
#commitLog每个文件的大小默认1G
mapedFileSizeCommitLog1073741824
#ConsumeQueue每个文件默认存30W条根据业务情况调整
mapedFileSizeConsumeQueue300000
#检测物理文件磁盘空间
diskMaxUsedSpaceRatio88
#存储路径
storePathRootDir/data/server/feige/rocketmq/store-s
#commitLog存储路径
storePathCommitLog/data/server/feige/rocketmq/store-s/commitlog
#消费队列存储路径
storePathConsumeQueue/data/server/feige/rocketmq/store-s/consumequeue
#消息索引存储路径
storePathIndex/data/server/feige/rocketmq/store-s/index
#checkpoint 文件存储路径
storeCheckPoint/data/server/feige/rocketmq/store-s/checkpoint
#abort 文件存储路径
abortFile/data/server/feige/rocketmq/store-s/abort
#限制的消息大小
maxMessageSize65536
#broker角色
#- ASYNC_MASTER 异步复制Master
#- SYNC_MASTER 同步双写Master
#- SLAVE 从节点
brokerRoleSLAVE
#刷盘策略
#- ASYNC_FLUSH 异步刷盘
#- SYNC_FLUSH 同步刷盘
flushDiskTypeASYNC_FLUSH2.7. 测试环境JVM配置两台机器都要执行
RocketMQ默认占用的内存是8G比较大这里需要修改下占用的堆内存不然在一个机器是上同时启动两个 broker可能会启动失败。
vim bin/runbroker.sh
# 根据机器实际内存调整这里演示的机器内存比较小配置的值比较小
JAVA_OPT${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn128mvim bin/runserver.sh
# 根据机器实际内存调整这里演示的机器内存比较小配置的值比较小
JAVA_OPT${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize320mvim bin/tools.sh
# 根据机器实际内存调整这里演示的机器内存比较小配置的值比较小
JAVA_OPT${JAVA_OPT} -server -Xms128m -Xmx128m -Xmn256m -XX:PermSize128m -XX:MaxPermSize128m2.8. 生产环境JVM配置 vim bin/runbroker.sh
JAVA_OPT${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4gvim bin/runserver.sh
JAVA_OPT${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize128m -XX:MaxMetaspaceSize320mvim bin/tools.sh
JAVA_OPT${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn256m -XX:PermSize128m -XX:MaxPermSize128m四、启动集群
3.1.启动nameserver(两台机器上都执行
nohup sh bin/mqnamesrv /data/server/feige/rocketmq/logs/mqnamesrv.log 21 3.2.启动broker
在192.31.186.180上执行如下命令
#1.启动Master1在Master1上操作
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a.properties /data/server/feige/rocketmq/logs/broker-a.log 21
#2.启动Slave2在Slave 2上操作
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b-s.properties /data/server/feige/rocketmq/logs/broker-b-s.log 21
#6、查看 NameServer9876和 Broker10909、10911、10912启动情况在2台主机上操作
netstat -nltup|egrep 9876|10911|10912|11011|11012在192.31.184.89上执行如下命令
#1.启动Master2在Master2上操作
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-b.properties /data/server/feige/rocketmq/logs/broker-b.log 21 #2.启动Slave1在Slave1上操作
nohup sh bin/mqbroker -c conf/2m-2s-sync/broker-a-s.properties /data/server/feige/rocketmq/logs/broker-a-s.log 21 #6、查看 NameServer9876和 Broker10909、10911、10912启动情况在2台主机上操作
netstat -nltup|egrep 9876|10911|10912|11011|11012
或者
sh bin/mqadmin clusterList -n 172.31.184.89:9876;172.31.186.180:9876
或者
jps3.3.测试集群生产消费情况
#在2台主机上操作
vim /etc/profile
#在文件/etc/profile中追加
export NAMESRV_ADDRrocketmq-nameserver1:9876;rocketmq-nameserver2:9876
#在控制台在其中1台机器上操作启动一个生产者在1个消费者机器就可以看到消费信息
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
#在控制台其中2台机器上操作启动2个消费者
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer这里的NAMESRV_ADDR变量名不能做任何修改不然就可能报连不上Nameserver的错误。 正常消费成功的话则消费者出现如下日志 3.5. 关闭命令
#关闭broker命令
sh bin/mqshutdown broker
#关闭namesrv命令
sh bin/mqshutdown namesrv五、问题总结
java.lang.RuntimeException: Lock failed,MQ already startedat org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:214)at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:827)at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:64)at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:58)检查master节点和slave节点的端口是否冲突检查master节点和slave节点的broker的存储路径是否冲突
六、安装管理面板
官网提供了两种部署方式docker部署和源码部署由于前面我们都是使用的直接部署所以这里也采用官网提供的源码部署的方式。 PSdocker 部署也尝试了一直不行。 下载源代码源码地址https://github.com/apache/rocketmq-dashboard/tags 在本地解压源码然后对源码进行编译打包打包命令是 $ mvn clean package -Dmaven.test.skiptrue然后将生成的 rocketmq-dashboard-1.0.0.jar包上传到服务器jar的相对路径是 target\rocketmq-dashboard-1.0.0.jar 运行 rocketmq-dashboard-1.0.0.jar
nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port18080 --rocketmq.config.namesrvAddr172.31.184.89:9876;172.31.186.180:9876/data/server/feige/rocketmq/logs/mq-console.log 21 这里需要指定两个参数
--server.port18080 设置端口是18080因为默认的端口是8080很可能会冲突--rocketmq.config.namesrvAddr192.31.184.89:9876;192.31.186.180:9876 用于指定nameserver集群的地址不指定的话会有问题。
启动成功之后访问控制台http://192.31.186.180:18080/