目标机器需要有对应目录才可以拷贝 脚本执行 记得给权限 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 + tab4.单节点模式
# 启动 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 代理地址 -c,——clusterName which cluster - h,帮助 打印帮助 -n,——namesrvAddr 名称服务器地址列表,如:192.168.0.1:9876;192.168.0.2:98765.测试
# 添加一个消息 和其他的可以自己测试很容易看懂(消息列队得有 mqadmin up啥的自己创建) mqadmin updateTopic -b localhost:10911 -t demo_test_02 -r 2 -w 2 # 查看当前消息状态 mqadmin topicStatus -n localhost:9876 -t demo_test_026.多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:UsersAdministratorAppDataRoamingTyporatypora-user-imagesimage-20220209140928154.png)]
# 不玩了就可以把生成的文件都删了 rm -rf # 测试 mqadmin statsAll -n 'hadoop100:9876;hadoop101:9876;hadoop102:9876'
可删可不删
# 到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模式。



