拷贝脚本 (主要改第五个地方就行配合自己的主机名来) 脚本 + 目标地址
目标机器需要有对应目录才可以拷贝 脚本执行 记得给权限 chmod 777 脚本名
# 创建一个脚本(自己留意创建的地址我放在了/home下)
vim MyCopy
# 给脚本权限
chmod 777 MyCopy
# 复制以下代码到MyCopy中就行
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=100; host<103; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
1.复制当前机器jdk到目标机器 (只要jdk1.8就行我之前自己搞大数据环境配置了)
2.拷贝RocketMQ到目标机器(同上)
# 自己脚本地址 和 当前安装rocketmq的地址拷贝就行 不超过看看上面脚本说明
/home/Mycopy /opt/module/rocketmq-all-4.5.1/
3.拷贝环境变量(因为我的环境变量本机跟其他机器的jdk存放位置不同我就不直接拷贝过去了)
新环境直接
# 拷贝 环境
/home/MyCopy /etc/profile
# 环境刷新
source /etc/profile
# 测试 去其他机器上测试 mq tab 有一堆东西出来就成功了 参考下图
mq + tab
4.单节点模式
# 启动 mqnamesrv (后台启动)
nohup mqnamesrv &
# 启动 broker (指定地址和端口号 后台启动)
nohup mqbroker -n localhost:9876 &
# 查看启动是否成功
tail -f ~/logs/rocketmqlogs/namesrv.log
tail -f ~/logs/rocketmqlogs/broker.log
# 查看启动状态 帮助指令
mqadmin
# 查看节点状态
mqadmin help brokerStatus
mqadmin brokerStatus -n localhost:9876
-b,——brokerAddr <arg>代理地址
-c,——clusterName <arg> which cluster
- h,帮助 打印帮助
-n,——namesrvAddr <arg>名称服务器地址列表,如:192.168.0.1:9876;192.168.0.2:9876
5.测试
# 添加一个消息 和其他的可以自己测试很容易看懂(消息列队得有 mqadmin up啥的自己创建)
mqadmin updateTopic -b localhost:10911 -t demo_test_02 -r 2 -w 2
# 查看当前消息状态
mqadmin topicStatus -n localhost:9876 -t demo_test_02
6.多master模式
# 关闭之前的单节点
mqshutdown namesrv
mqshutdown broker
# 同步命令到指定的目录下测试(根据自己使用的工具来)
cd /opt/module/rocketmq-all-4.5.1
# 启动mqnamesrv
nohup mqnamesrv &
# 查看是否启动成功
tail -f ~/logs/rocketmqlogs/namesrv.log
启动成功如下 多台启虚拟机启动了namesrv
启动 broker集群
# -n 指定namesrv服务 一个就写一个多个用; 区分后加'' (开启后另外开三个新的机子窗口 jps看就可以了)
nohup mqbroker -n 'hadoop100:9876;hadoop101:9876;hadoop102:9876' -c $ROCEKET_HOME/conf/2m-noslave/broker-a.properties
# 最后查是否成功
tail -f ~/logs/rocketmqlogs/broker.log
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LnVXfjvn-1644475088952)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220209140928154.png)]
# 不玩了就可以把生成的文件都删了
rm -rf
# 测试
mqadmin statsAll -n 'hadoop100:9876;hadoop101:9876;hadoop102:9876'
可删可不删
7.多Master和Slave模式异步复制
# 到rocket安装目录
cd /opt/module/rocketmq-all-4.5.1/
# 老规矩先启动 namesrv(同步以下命令)
nohup mqnamesrv &
# 启动broker (双主双从) 我这里就不通过tail查看日志是否启动成功了
nohup mqbroker -n hadoop100:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-async/broker-a.properties
# 启动broker(我三台虚拟机所以我一台机子上开了两个)
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-async/broker-a-s.properties
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-async/broker-b.properties
# 另一台启动
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-async/broker-b-s.properties
# 测试(broker默认端口号10911)添加一个新的消息主题
mqadmin updateTopic -b hadoop101:10911 -t ssss -r 2 -w 2
# 查看消息信息
mqadmin topicStatus -n hadoop101:9876 -t ssss
优点:
性能 略低于 多Master模式 Master宕机salve依然可以消费
缺点:
磁盘损坏丢失 发送但没有消费的信息
8.跟上面一样不过是同步双写模式
# 老规矩先启动 namesrv(同步以下命令)
nohup mqnamesrv &
# 跟上面一样不过是启动另一个脚本
# /opt/module/rocketmq-all-4.5.1/conf/2m-2s-sync/broker-a.properties
# 启动broker (双主双从) 我这里就不通过tail查看日志是否启动成功了
nohup mqbroker -n hadoop100:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-sync/broker-a.properties
# 启动broker(我三台虚拟机所以我一台机子上开了两个)
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-sync/broker-a-s.properties
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-sync/broker-b.properties
# 另一台启动
nohup mqbroker -n hadoop101:9876 /opt/module/rocketmq-all-4.5.1/conf/2m-2s-sync/broker-b-s.properties
优点:
1. 数据和服务都没有单点故障
2. 当Master主机宕机,消息的消费不会延迟。
3. 服务和数据的高可用。
缺点:
1. 该模式的性能比异步复制的模式低10%左右。
2. 发送消息的延迟稍微高一点。
3. 当前版本中,如果Master节点宕机,Slave节点不能自动切换为Master模式。