这篇文章主要介绍“RocketMQ的安装部署方式”,在日常操作中,相信很多人在RocketMQ的安装部署方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”RocketMQ的安装部署方式”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
操作系统:CentOS-6.9-x86_64-bin-DVD1.iso
依赖环境:gcc 4.4.7.rar、jdk-8u121-linux-x64.tar.gz
安装软件:rocketmq-all-4.2.0.tar.gz
默认RocketMQ部署都是集群部署,业务处理及存储根据broker有关,RocketMQ也有所谓的主从节点master/slave,这里的Slave 不可写,但可读,类似于 Mysql主备方式。
建议在安装系统时磁盘配置为RAID10 时,即使机器宕机不可恢复情况下,由与 RAID10磁盘非常可靠,消息也不会丢(异步刷盘丢失少量消息,同步刷盘一条不丢)。
这种方式风险较大,因为是单节点部署一旦Broker重启或者宕机时,会导致整个服务不可用,**<u>不建议线上</u>**环境使用
一个集群无 Slave,全是 Master,可部署 2 个 Master 或者 3 个 Master 甚至是多个N个Master节点,相对于单个Master,其可用性和稳定性都有大幅度提高,对于单个Broker节点宕机或者重启时,不会影响整个集群的正常使用。
宕机的Broker节点上面的消息不能立刻被消费,直至恢复服务至正常状态才能被消费者消费,消息实时性会受到受到影响
每个 Master 配置一个 Slave,有多对Master-Slave, HA采用异步复制方式,主备有短暂消息延迟,毫秒级。相对于多主部署在其可用性上有所提高。即使磁盘损坏,消息丢失的非常少,且消息实时性不会受影响,因为Master 宕机后,消费者仍然可以从 Slave消费,此过程对应用透明。不需要人工干预。性能同多 Master 模式几乎一样。
Master 宕机,磁盘损坏情况,会丢失少量消息
每个 Master 配置一个 Slave,有多对Master-Slave, HA采用同步双写方式,主备都写成功,向应用返回成功。数据与服务都无单点, Master宕机情况下,消息无延迟,服务可用性与数据可用性都非常高。
性能比异步复制模式略低,大约低 10%左右,发送单个消息的 RT会略高。目前主宕机后,备机不能自动切换为主机,后续会支持自动切换功能
注:以上 Broker 与 Slave 配对是通过指定相同的brokerName 参数来配对, Master的 BrokerId 必须是 0, Slave 的BrokerId 必须是大与 0 的数。另外一个 Maste下面可以挂载多个 Slave,同一 Master 下的多个 Slave通过指定不同的 BrokerId来区分
序号 | IP | 用户名 | 密码 | 角色 | 模式 |
---|---|---|---|---|---|
1 | 10.10.14.142 | root | 123456 | nameServer1,brokerServer1 | Master1 |
2 | 10.10.14.143 | root | 123456 | nameServer2,brokerServer2 | Master2 |
Hosts 添加信息
IP | NAME |
---|---|
10.10.14.142 | nameServer1 |
10.10.14.142 | brokerServer1 |
10.10.14.143 | nameServer2 |
10.10.14.143 | brokerServer2 |
分别在两台机器上修改文件vi /etc/hosts
上传rocketmq-all-4.2.0.tar.gz文件至/usr/local
解压至/usr/local文件夹下:tar -zxvf rocketmq-all-4.2.0.tar.gz -C /usr/local
建立软连接利于操作
ln -s rocketmq-all-4.2.0 rocketmq
创建存储路径
# mkdir /usr/local/rocketmq/store # mkdir /usr/local/rocketmq/store/commitlog # mkdir /usr/local/rocketmq/store/consumequeue # mkdir /usr/local/rocketmq/store/index
查看rocketmq/config
有三个文件夹,这是默认存在的,分别表示2主2从异步刷盘、2主2从同步刷盘、2主没有从节点。我们部署的就是2主。修改配置文件。
2m-noslave文件夹中修改broker-a.properties/broker-a.properties
#所属集群名字 brokerClusterName=rocketmq-cluster #broker名字,注意此处不同的配置文件填写的不一样 brokerName=broker-a #0 表示 Master,>0 表示 Slave brokerId=0 #nameServer地址,分号分割 namesrvAddr= rocketmq-nameserver1:9876;rocketmq-nameserver2:9876 # 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数 defaultTopicQueueNums=4 # 是否允许 Broker 自动创建Topic,建议线下开启,线上关闭 autoCreateTopicEnable=true # 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭 autoCreateSubscriptionGroup=true # Broker 对外服务的监听端口 listenPort=10911 # 删除文件时间点,默认凌晨 4点 deleteWhen=04 #文件保留时间,默认 48 小时 fileReservedTime=120 #commitLog每个文件的大小默认1G mapedFileSizeCommitLog=1073741824 #ConsumeQueue每个文件默认存30W条,根据业务情况调整 mapedFileSizeConsumeQueue=300000 #destroyMapedFileIntervalForcibly=120000 #redeleteHangedFileInterval=120000 #检测物理文件磁盘空间 diskMaxUsedSpaceRatio=88 #存储路径 storePathRootDir= /usr/local/rocketmq/store #commitLog 存储路径 storePathCommitLog= /usr/local/rocketmq/store/commitlog #消费队列存储路径存储路径 storePathConsumeQueue=/usr/local/rocketmq/store/consumequeue #消息索引存储路径 storePathIndex=/usr/local/rocketmq/store/index #checkpoint 文件存储路径 storeCheckpoint=/usr/local/rocketmq/store/checkpoint #abort 文件存储路径 abortFile=/usr/local/rocketmq/store/abort #限制的消息大小 maxMessageSize=65536 #flushCommitLogLeastPages=4 #flushConsumeQueueLeastPages=2 #flushCommitLogThoroughInterval=10000 #flushConsumeQueueThoroughInterval=60000 #Broker 的角色 #- ASYNC_MASTER 异步复制Master #- SYNC_MASTER 同步双写Master #- SLAVE brokerRole=ASYNC_MASTER #刷盘方式 #- ASYNC_FLUSH 异步刷盘 #- SYNC_FLUSH 同步刷盘 flushDiskType=ASYNC_FLUSH #checkTransactionMessageEnable=false #发消息线程池数量 #sendMessageThreadPoolNums=128 #拉消息线程池数量 #pullMessageThreadPoolNums=128
mkdir -p /usr/local/rocketmq/logs cd /usr/local/rocketmq/conf && sed -i 's#${user.home}#/usr/local/rocketmq#g' *.xml
一般我们开发环境都是虚拟机内存不大,需要修改其配置文件。
vim /usr/local/rocketmq/bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
vim /usr/local/rocketmq/bin/runserver.sh
JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m - XX:PermSize=128m -XX:MaxPermSize=320m"
修改java虚拟机的内存大小时堆内存必须大于等于1G,这是启动服务的最低配置要求
cd /usr/local/rocketmq/bin nohup sh mqnamesrv &
启动BrokerServer A 【10.10.14.142】
cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-a.properties >/dev/null 2>&1 & 查看进程 jps 查看日志文件 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
启动BrokerServer B 【10.10.14.143】
cd /usr/local/rocketmq/bin nohup sh mqbroker -c /usr/local/rocketmq/conf/2m-noslave/broker-b.properties >/dev/null 2>&1 & 查看进程 jps 查看日志文件 tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log
cd /usr/local/rocketmq/bin sh mqshutdown broker sh mqshutdown namesrv 等待停止 rm -rf /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store mkdir /usr/local/rocketmq/store/commitlog mkdir /usr/local/rocketmq/store/consumequeue mkdir /usr/local/rocketmq/store/index 按照上面步骤重启NameServer与BrokerServertail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/broker.log tail -f -n 500 /usr/local/rocketmq/logs/rocketmqlogs/namesrv.log
到此,关于“RocketMQ的安装部署方式”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。