debian操作系统部署rabbitmq集群
配置三台主机的hosts文件,因为rabbitmq是通过主机名称识别的,命令如下
cat >> /etc/hosts <<'EOF'
10.6.0.45 crm-ma01-mq-s1
10.6.0.46 crm-ma01-mq-s2
10.6.0.47 crm-ma01-mq-s3
EOF
ping ma05-mq-d1
ssh-keygen -t rsa
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.31.250
开始分别在三台机器上安装rabbitmq,整体步骤比较简单,按步骤执行如下命令即可
apt autoremove
apt --fix-broken install
mv /var/lib/dpkg/info/ /var/lib/dpkg/info_old/
mkdir /var/lib/dpkg/info/
apt-get update
apt-get -f install
mv /var/lib/dpkg/info/* /var/lib/dpkg/info_old/
rm -rf /var/lib/dpkg/info
mv /var/lib/dpkg/info_old/ /var/lib/dpkg/info/
apt-get update
apt-get upgrade
apt-get --reinstall install `dpkg --get-selections | grep '[[:space:]]install' | cut -f1` #重装dpkg
wget https://packages.erlang-solutions.com/erlang/debian/pool/esl-erlang_23.1.5-1~debian~stretch_amd64.deb
apt --fix-broken install -y
dpkg -i esl-erlang_23.1.5-1_debian_stretch_amd64.deb
erl -version
erl
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.15/rabbitmq-server_3.8.15-1_all.deb
dpkg -i rabbitmq-server_3.8.15-1_all.deb
apt --fix-broken install -y
添加配置文件
cat > /etc/rabbitmq/rabbitmq-env.conf <<'EOF'
RABBITMQ_MNESIA_BASE=/usr/local/rabbitmq/data/
RABBITMQ_LOG_BASE=/usr/local/rabbitmq/log
vm_memory_high_watermark=0.8
EOF
[root@ma05-mq-d2 ~]# cat > /etc/rabbitmq/rabbitmq.conf <<EOF
vm_memory_high_watermark.relative = 0.8
vm_memory_high_watermark_paging_ratio = 0.5
cluster_partition_handling = pause_minority
log.file.level = error
log.default.level = error
default_user = xxxxx
default_pass = xxxxx2022
tcp_listen_options.backlog = 4096
tcp_listen_options.nodelay = true
tcp_listen_options.linger.on = true
tcp_listen_options.linger.timeout = 0
tcp_listen_options.exit_on_close = false
tcp_listen_options.keepalive = true
tcp_listen_options.send_timeout = 15000
EOF
mkdir /usr/local/rabbitmq/{log,data} -p
chown -R rabbitmq.rabbitmq /usr/local/rabbitmq
#三台都安装远程访问插件,否则集群后看不到状态情况
rabbitmq-plugins enable rabbitmq_management
netstat -lntup
#三台设置开机启动
systemctl enable rabbitmq-server.service
#启动s1服务器的,其它两台暂不启动
systemctl start rabbitmq-server
#如下命令在s1执行,其它节点不需要执行
rabbitmqctl add_user admin xxxxxPBUN3
rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
#创建用户,授权,允许远程登录
rabbitmqctl add_user xxxxx xxxxx2022
rabbitmqctl set_permissions -p / xxxxx '.*' '.*' '.*'
rabbitmqctl list_permissions -p /
rabbitmqctl set_user_tags xxxxx administrator
至此,已经在三台服务器成功安装了rabbitmq,并且可以通过远端web进行访问管理了
开始构建集群环境
#从s1服务器上复制.erlang.cookie文件到s2,s3
scp /var/lib/rabbitmq/.erlang.cookie crm-ma01-mq-s2:/var/lib/rabbitmq/
scp /var/lib/rabbitmq/.erlang.cookie ma01-mq-d3:/var/lib/rabbitmq/
#在三台服务器上,分别设置.erlang.cookie的权限
chown rabbitmq:root /var/lib/rabbitmq/.erlang.cookie
chmod 600 /var/lib/rabbitmq/.erlang.cookie
#这时再分别启动s2,s3服务
systemctl start rabbitmq-server
开始编组,分别登陆s2,s3服务器,执行如下命令,将s2,s3编组到s1中
#必须是运行状态下执行
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@crm-ma01-mq-s1 #s1,默认是disk节点,加参数 --ram代表是内存节点,建议使用磁盘模式,确保不丢数据,使用SSD硬盘并且扩大容量。
rabbitmqctl start_app
rabbitmqctl join_cluster --ram rabbit@ma05-mq-d1
#2台节点加入主节点后,在主节点查看集群状态
root@ma01-mq-d1:~# rabbitmqctl cluster_status
Cluster status of node rabbit@ma01-mq-d1 ...
[{nodes,[{disc,['rabbit@ma01-mq-d1','rabbit@ma01-mq-d2',
'rabbit@ma01-mq-d3']}]},
{running_nodes,['rabbit@ma01-mq-d1']},
{cluster_name,<<"rabbit@ma01-mq-d1">>},
{partitions,[]},
{alarms,[{'rabbit@ma01-mq-d1',[]}]}]
成功后,启动从节点
rabbitmqctl start_app
登录web页面端口号是:15672