最新版本RocketMQ 4.7.1,基于Dledger高可用集群部署。
1、新建四台虚拟机配置及情况如下:
192.168.111.129 vm1 ns1 bs11 2U/2G CentOS7
192.168.111.130 vm2 bs12 bs13 2U/2G CentOS7
192.168.111.131 vm3 ns2 bs21 2U/2G CentOS7
192.168.111.132 vm4 bs22 bs23 2U/2G CentOS7
包括2个NameServer实例和两组3实例的BrokerServer组
2、设置主机名及host文件
HOSTNAME=vm1/vm2/vm3/vm4->四台虚拟机,虚拟机编排好。
hostnamectl set-hostname "$HOSTNAME"
echo "$HOSTNAME">/etc/hostname
echo "$(grep -E '127|::1' /etc/hosts)">/etc/hosts
cat >>/etc/hosts<<EOF
192.168.111.129 vm1 ns1 bs11
192.168.111.130 vm2 bs12 bs13
192.168.111.131 vm3 ns2 bs21
192.168.111.122 vm4 bs22 bs23
EOF
3、每台虚拟机安装java和rocketmq
1、java安装
sudo yum install java-1.8.0-openjdk-devel
java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
2、rocketmq下载、安装及配置卸载地址:rocketmq下载地址
mkdir -pv /usr/local/RocketMQ
cd /usr/local/RocketMQ
unzip /tmp/rocketmq-all-4.7.1-bin-release.zip
cd /usr/local/ ln -s RocketMQ/rocketmq-all-4.7.1-bin-release rocketmq
echo 'export ROCKETMQ_HOME=/usr/local/rocketmq'>>/etc/profile
echo 'export PATH=$PATH:$ROCKETMQ_HOME/bin'>>/etc/profile
source /etc/profile
mkdir -pv /data/rocketmq/store/commitlog
mkdir -pv /data/logs
cd $ROCKETMQ_HOME/conf sed -i 's#${user.home}#/data#g' *.xml
cd $ROCKETMQ_HOME/bin
sed -i 's/-Xms4g/-Xms1g/g' runserver.sh
sed -i 's/-Xmx4g/-Xmx1g/g' runserver.sh
sed -i 's/-Xms8g/-Xms1g/g' runbroker.sh
sed -i 's/-Xmx8g/-Xmx1g/g' runbroker.sh
4、配置集群
1、vm1和vm3配置启动NameServer
cd $ROCKETMQ_HOME/bin
sh mqnamesrv &
# sh mqshutdown namesrv
jps -m
netstat -tupln|grep 9876echo '# RocketMQ 4.7.1 NameServer start and stop'>>/etc/rc.local
echo 'source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqnamesrv &'>>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown namesrv'>>/etc/rc.local2、vm1和vm2配置启动第一个BrokerServer组
vm1 配置 bs11
Role=bs11
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.localvm2 配置 bs12
Role=bs12
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.localvm2 配置 bs13
Role=bs13
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.local
主机验证配置
cd $ROCKETMQ_HOME
sh bin/mqadmin clusterList -n ns1:9876
sh bin/mqadmin clusterList -n ns2:9876
报错了:
sh bin/mqadmin clusterList -n ns1:9876
RocketMQLog:WARN No appenders could be found for logger (io.netty.util.internal.PlatformDependent0). RocketMQLog:WARN Please initialize the logger system properly. org.apache.rocketmq.tools.command.SubCommandException: ClusterListSubCommand command failed at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:93) at org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:139) at org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:90) Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=[10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:84) at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:73) at org.apache.rocketmq.acl.common.AclSigner.calSignature(AclSigner.java:68) at org.apache.rocketmq.acl.common.AclUtils.calSignature(AclUtils.java:69) at org.apache.rocketmq.acl.common.AclClientRPCHook.doBeforeRequest(AclClientRPCHook.java:44) at org.apache.rocketmq.remoting.netty.NettyRemotingAbstract.doBeforeRpcHooks(NettyRemotingAbstract.java:172) at org.apache.rocketmq.remoting.netty.NettyRemotingClient.invokeSync(NettyRemotingClient.java:372) at org.apache.rocketmq.client.impl.MQClientAPIImpl.getBrokerClusterInfo(MQClientAPIImpl.java:1331) at org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.examineBrokerClusterInfo(DefaultMQAdminExtImpl.java:306) at org.apache.rocketmq.tools.admin.DefaultMQAdminExt.examineBrokerClusterInfo(DefaultMQAdminExt.java:251) at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.printClusterBaseInfo(ClusterListSubCommand.java:172) at org.apache.rocketmq.tools.command.cluster.ClusterListSubCommand.execute(ClusterListSubCommand.java:88) ... 2 more Caused by: org.apache.rocketmq.acl.common.AclException: [10015:signature-failed] unable to calculate a request signature. error=Algorithm HmacSHA1 not available at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:63) at org.apache.rocketmq.acl.common.AclSigner.signAndBase64Encode(AclSigner.java:79) ... 13 more Caused by: java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available at javax.crypto.Mac.getInstance(Mac.java:181) at org.apache.rocketmq.acl.common.AclSigner.sign(AclSigner.java:57) ... 14 more
结决方案:
cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/lib/ext
[root@centos702 ext]# cd /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/lib/ext
[root@centos702 ext]# cp sunjce_provider.jar /usr/local/RocketMQ/rocketmq-all-4.7.1-bin-release/lib
3、vm3和vm4配置启动第二个BrokerServer组,即组扩展
vm3 配置 bs21
Role=bs21
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.localvm4 配置 bs22
Role=bs22
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.localvm4 配置 bs23
Role=bs23
Rolegrep -E '309|409'echo '# RocketMQ 4.7.1 BrokerServer start and stop'>>/etc/rc.local
echo "source /etc/profile;sh \${ROCKETMQ_HOME}/bin/mqbroker -c\$ROCKETMQ_HOME/conf/dledger/Vincent-Group1-${Role}.conf &">>/etc/rc.local
echo '# source /etc/profile;sh ${ROCKETMQ_HOME}/bin/mqshutdown broker'>>/etc/rc.local
5、主机验证配置
6、附录:
安装一些初始化工具组件:yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget zip unzip net-tools vim -y
到这集群就搭建完成了。