暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

rabbitmq 3.8 cluster

原创 huayumicheng 2022-12-07
344

1、操作系统基本配置

-配置yum 

mkdir /media/cdrom 
mount /dev/cdrom /media/cdrom 

mkdir /etc/yum.repos.d/bak 
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/
cp /etc/yum.repos.d/bak/CentOS-Media.repo /etc/yum.repos.d/


curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git 
--wxWidgets-devel




--关闭防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
iptables -L -vn

--关闭selinux 

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce


--配置ntp

sed -i s@centos.pool.ntp@cn.pool.ntp@g /etc/chrony.conf

timedatectl set-timezone Asia/Shanghai
--timedatectl set-local-rtc 0


systemctl enable chronyd 
systemctl restart chronyd
systemctl status chronyd



#校准时间
chronyc -a makestep
chronyc tracking


--sysctl 

cat << EOF >>/etc/sysctl.conf
vm.swappiness =5
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.core.somaxconn = 32768
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 0
EOF

sysctl -p 



--limit 
cat << EOF >>/etc/security/limits.conf
*   soft    nproc        65535
*   hard    nproc        65535
*   soft    nofile       65535
*   hard    nofile       65535
*   soft    stack        65535
*   hard    stack        65535
EOF


--ssh配置
sed -i 's@GSSAPIAuthentication yes@GSSAPIAuthentication no@g' /etc/ssh/sshd_config
sed -i 's@#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config
sed -i '/StrictHostKeyChecking/ {s/.*/StrictHostKeyChecking no/}' /etc/ssh/ssh_config
systemctl reload sshd


--配置主机名、hosts

hostnamectl set-hostname rabbitmq1
hostnamectl set-hostname rabbitmq2
hostnamectl set-hostname rabbitmq3



cat << EOF >>/etc/hosts
192.168.100.61 rabbitmq1
192.168.100.62 rabbitmq2
192.168.100.63 rabbitmq3
EOF





--reboot  主机

2、安装erlang

tar xzvf otp_src_23.2.tar.gz -C /usr/local/ 
cd  /usr/local/otp_src_23.2
./configure --prefix=/usr/local/erlang23.2
make -j 4
make install
ln -s /usr/local/erlang23.2 /usr/local/erlang
echo 'export PATH=$PATH:/usr/local/erlang/bin' >>/etc/profile
source /etc/profile

echo 'export PATH=$PATH:/usr/local/erlang/bin' >>~/.bashrc 
source ~/.bashrc 

--验证erl 安装成功
[root@rabbitmq1 ~]# erl
Erlang/OTP 23 [erts-11.1.4] [source] [64-bit] [smp:1:1] [ds:1:1:10] [async-threads:1] [hipe]

Eshell V11.1.4  (abort with ^G)
1> halt(). 


[root@rabbitmq1 ~]# erl -version
Erlang (SMP,ASYNC_THREADS,HIPE) (BEAM) emulator version 11.1.4

3、安装rabbitmq3.8.14

tar xJvf rabbitmq-server-generic-unix-3.8.14.tar.xz -C /usr/local/
ln -s /usr/local/rabbitmq_server-3.8.14 /usr/local/rabbitmq

echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >>/etc/profile
source /etc/profile

echo 'export PATH=$PATH:/usr/local/rabbitmq/sbin' >>~/.bashrc 
source ~/.bashrc 


--后台启动rabbitmq,三台主机都启动
rabbitmq-server -detached   

--rabbitmqctl status      
--rabbitmqctl start_app    
--rabbitmq-plugins enable rabbitmq_management   


--关闭rabbitmq2 rabbitmq3 主机上的rabbitmq 服务 
 rabbitmqctl shutdown 

4、配置rabbitmq集群

4.1 查看 .erlang.cookie 配置信息,并复制到另外两个节点,三个节点的.erlang.cookie 信息要一致

scp .erlang.cookie rabbitmq2:/root/
scp .erlang.cookie rabbitmq3:/root/

4.2 最后在rabbitmq2 rabbitmq3 执行如下命令

rabbitmq-server -detached
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq1 --ram
rabbitmqctl start_app


--rabbit@rabbitmq1  node名字,可以在节点一使用 rabbitmqctl status 命令查看

[root@rabbitmq1 ~]# rabbitmqctl status 
Status of node rabbit@rabbitmq1 ...
Runtime

4.3 修改集群名(任意节点都可以)

rabbitmqctl set_cluster_name rabbit@rabbitmq1

4.4 查看集群状态

[root@rabbitmq1 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rabbitmq1 ...
Basics

Cluster name: rabbit@rabbitmq1

Disk Nodes

rabbit@rabbitmq1

RAM Nodes

rabbit@rabbitmq2
rabbit@rabbitmq3

Running Nodes

rabbit@rabbitmq1
rabbit@rabbitmq2
rabbit@rabbitmq3

Versions

rabbit@rabbitmq1: RabbitMQ 3.8.14 on Erlang 23.2
rabbit@rabbitmq2: RabbitMQ 3.8.14 on Erlang 23.2
rabbit@rabbitmq3: RabbitMQ 3.8.14 on Erlang 23.2

Maintenance status

Node: rabbit@rabbitmq1, status: not under maintenance
Node: rabbit@rabbitmq2, status: not under maintenance
Node: rabbit@rabbitmq3, status: not under maintenance

Alarms

(none)

Network Partitions

(none)

Listeners

Node: rabbit@rabbitmq1, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq1, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq2, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq2, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Node: rabbit@rabbitmq3, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@rabbitmq3, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0

Feature flags

Flag: implicit_default_bindings, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: quorum_queue, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled

4.5 启用镜像队列

[root@rabbitmq1 ~]# rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
Setting policy "ha-all" for pattern "^" to "{"ha-mode":"all","ha-sync-mode":"automatic"}" with priority "0" for vhost "/" ...


--查看当前策略
[root@rabbitmq1 ~]# rabbitmqctl list_policies
Listing policies for vhost "/" ...
vhost   name    pattern apply-to        definition      priority
/       ha-all  ^       all     {"ha-mode":"all","ha-sync-mode":"automatic"}    0


--删除策略
rabbitmqctl clear_policy ha-all



# 策略说明
格式:rabbitmqctl set_policy [-p <vhost>] [--priority <priority>] [--apply-to <apply-to>] <name> <pattern>  <definition>
 
-p Vhost:可选参数,针对指定vhost下的queue进行设置
--priority:可选参数,policy的优先级
--apply-to:可选参数,策略适用对象类型,可选queues,exchanges,all
name:policy策略的名称
pattern:queue的匹配模式(正则表达式),^表示匹配所有队列
definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode


1、ha-mode:指明镜像队列的模式,有效值为 all/exactly/nodes
      all:表示在集群中所有的节点上进行镜像
      exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
      nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定
2、ha-params:ha-mode模式需要用到的参数
3、ha-sync-mode:进行队列中消息的同步方式,有效值为automatic和manual,默认manual
其它示例:新增一个名为myPolicy的策略,适用队列与交换机,优先级为1,同步 virtual host 为"/" 下名称前缀为"mirroring"的队列,并且自动保存到两个节点上,队列中消息的同步方式为automatic(自动的)

rabbitmqctl set_policy -p / --priority 1 --apply-to all myPolicy "^mirroring" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'


4.6 插件查看

[root@rabbitmq1 ~]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@rabbitmq1
 |/
[  ] rabbitmq_amqp1_0                  3.8.14
[  ] rabbitmq_auth_backend_cache       3.8.14
[  ] rabbitmq_auth_backend_http        3.8.14
[  ] rabbitmq_auth_backend_ldap        3.8.14
[  ] rabbitmq_auth_backend_oauth2      3.8.14
[  ] rabbitmq_auth_mechanism_ssl       3.8.14
[  ] rabbitmq_consistent_hash_exchange 3.8.14
[  ] rabbitmq_event_exchange           3.8.14
[  ] rabbitmq_federation               3.8.14
[  ] rabbitmq_federation_management    3.8.14
[  ] rabbitmq_jms_topic_exchange       3.8.14
[  ] rabbitmq_management               3.8.14
[  ] rabbitmq_management_agent         3.8.14
[  ] rabbitmq_mqtt                     3.8.14
[  ] rabbitmq_peer_discovery_aws       3.8.14
[  ] rabbitmq_peer_discovery_common    3.8.14
[  ] rabbitmq_peer_discovery_consul    3.8.14
[  ] rabbitmq_peer_discovery_etcd      3.8.14
[  ] rabbitmq_peer_discovery_k8s       3.8.14
[  ] rabbitmq_prometheus               3.8.14
[  ] rabbitmq_random_exchange          3.8.14
[  ] rabbitmq_recent_history_exchange  3.8.14
[  ] rabbitmq_sharding                 3.8.14
[  ] rabbitmq_shovel                   3.8.14
[  ] rabbitmq_shovel_management        3.8.14
[  ] rabbitmq_stomp                    3.8.14
[  ] rabbitmq_top                      3.8.14
[  ] rabbitmq_tracing                  3.8.14
[  ] rabbitmq_trust_store              3.8.14
[  ] rabbitmq_web_dispatch             3.8.14
[  ] rabbitmq_web_mqtt                 3.8.14
[  ] rabbitmq_web_mqtt_examples        3.8.14
[  ] rabbitmq_web_stomp                3.8.14
[  ] rabbitmq_web_stomp_examples       3.8.14


--启用插件

rabbitmq-plugins enable rabbitmq_management

[root@rabbitmq1 ~]# rabbitmq-plugins enable rabbitmq_management 
Enabling plugins on node rabbit@rabbitmq1:
rabbitmq_management
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@rabbitmq1...
The following plugins have been enabled:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_web_dispatch

started 3 plugins.




[root@rabbitmq1 ~]# rabbitmq-plugins list
Listing plugins with pattern ".*" ...
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status: * = running on rabbit@rabbitmq1
 |/
[  ] rabbitmq_amqp1_0                  3.8.14
[  ] rabbitmq_auth_backend_cache       3.8.14
[  ] rabbitmq_auth_backend_http        3.8.14
[  ] rabbitmq_auth_backend_ldap        3.8.14
[  ] rabbitmq_auth_backend_oauth2      3.8.14
[  ] rabbitmq_auth_mechanism_ssl       3.8.14
[  ] rabbitmq_consistent_hash_exchange 3.8.14
[  ] rabbitmq_event_exchange           3.8.14
[  ] rabbitmq_federation               3.8.14
[  ] rabbitmq_federation_management    3.8.14
[  ] rabbitmq_jms_topic_exchange       3.8.14
[E*] rabbitmq_management               3.8.14
[e*] rabbitmq_management_agent         3.8.14
[  ] rabbitmq_mqtt                     3.8.14
[  ] rabbitmq_peer_discovery_aws       3.8.14
[  ] rabbitmq_peer_discovery_common    3.8.14
[  ] rabbitmq_peer_discovery_consul    3.8.14
[  ] rabbitmq_peer_discovery_etcd      3.8.14
[  ] rabbitmq_peer_discovery_k8s       3.8.14
[  ] rabbitmq_prometheus               3.8.14
[  ] rabbitmq_random_exchange          3.8.14
[  ] rabbitmq_recent_history_exchange  3.8.14
[  ] rabbitmq_sharding                 3.8.14
[  ] rabbitmq_shovel                   3.8.14
[  ] rabbitmq_shovel_management        3.8.14
[  ] rabbitmq_stomp                    3.8.14
[  ] rabbitmq_top                      3.8.14
[  ] rabbitmq_tracing                  3.8.14
[  ] rabbitmq_trust_store              3.8.14
[e*] rabbitmq_web_dispatch             3.8.14
[  ] rabbitmq_web_mqtt                 3.8.14
[  ] rabbitmq_web_mqtt_examples        3.8.14
[  ] rabbitmq_web_stomp                3.8.14
[  ] rabbitmq_web_stomp_examples       3.8.14

4.7 添加账号

rabbitmqctl add_user admin 123456
abbitmqctl set_user_tags admin administrator
rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'



[root@rabbitmq1 ~]# rabbitmqctl add_user admin 123456
Adding user "admin" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
[root@rabbitmq1 ~]# rabbitmqctl set_user_tags admin administrator
Setting tags for user "admin" to [administrator] ...
[root@rabbitmq1 ~]# rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
Setting permissions for user "admin" in vhost "/" ...

4.8 web登录

http://192.168.100.61:15672/      admin/123456 

4.9 另外两个节点也开启web插件

rabbitmq-plugins enable rabbitmq_management

4.10 将某个节点退出集群

# 在退出的节点上执行
rabbitmqctl stop_app


# 在主节点上执行(如去除rabbit@rabbitmq3),offline参数代表允许离线删除
rabbitmqctl forget_cluster_node rabbit@rabbitmq3 [--offline]
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论