Distributed RabbitMQ
- Clustering
- Federation
- Shovel
https://www.rabbitmq.com/docs/distributed
集群搭建
https://www.rabbitmq.com/docs/platforms
https://www.rabbitmq.com/docs/install-generic-unix
https://www.rabbitmq.com/docs/which-erlang
基本信息
192.168.153.140 bdjxfdxleoxlsjx
192.168.153.141 nownpzxvswlobsx
192.168.153.142 opxzvjkleblanfx
192.168.1.250 knvl4jncxdcg9h1
192.168.1.251 w0j6904xcm9uoha
192.168.1.252 nwahr8whmbyc3j4
注意,linux上rabbitmq的rabbitmqctl会通过节点名称进行访问,而默认情况下节点名称取hostname,如果是默认主机名localhost.localdomain,/etc/hosts文件中默认映射到127.0.0.1,如果是其他hostname,需要手动进行映射
各节点.erlang.cookie保持一致
# https://groups.google.com/g/rabbitmq-users/c/WAMuT4SR8oM
openssl rand -hex 16
# 5fe5e50fe92973a78c306f80c457d50a
echo "5fe5e50fe92973a78c306f80c457d50a" > ~/.erlang.cookie
chmod 400 ~/.erlang.cookie
安装并配置环境变量
tar -xvf rabbitmq-server-generic-unix-3.13.0.tar.xz
mv rabbitmq_server-3.13.0 rabbitmq
echo 'export RABBITMQ_HOME=/home/ubuntu/rabbitmq' >> ~/.bashrc
echo 'export PATH=$PATH:$RABBITMQ_HOME/sbin' >> ~/.bashrc
source ~/.bashrc
启动
# 在三个节点分别单独启动
rabbitmq-server
# 守护进程方式启动
# rabbitmq-server -detached
查看集群状态,此时只会有一个节点
rabbitmqctl cluster_status
rabbit@bdjxfdxleoxlsjx
Running Nodes
rabbit@bdjxfdxleoxlsjx
Versions
rabbit@bdjxfdxleoxlsjx: RabbitMQ 3.13.0 on Erlang 26.2.1
CPU Cores
Node: rabbit@bdjxfdxleoxlsjx, available CPU cores: 2
Maintenance status
Node: rabbit@bdjxfdxleoxlsjx, status: not under maintenance
Alarms
(none)
Network Partitions
(none)
Listeners
Node: rabbit@bdjxfdxleoxlsjx, interface: [::], port: 25672, protocol: clustering, purpose: inter-node and CLI tool communication
Node: rabbit@bdjxfdxleoxlsjx, interface: [::], port: 5672, protocol: amqp, purpose: AMQP 0-9-1 and AMQP 1.0
Feature flags
Flag: classic_mirrored_queue_version, state: enabled
Flag: classic_queue_type_delivery_support, state: enabled
Flag: direct_exchange_routing_v2, state: enabled
Flag: feature_flags_v2, state: enabled
Flag: implicit_default_bindings, state: enabled
Flag: khepri_db, state: disabled
Flag: listener_records_in_ets, state: enabled
Flag: maintenance_mode_status, state: enabled
Flag: message_containers, state: enabled
Flag: quorum_queue, state: enabled
Flag: restart_streams, state: enabled
Flag: stream_filtering, state: enabled
Flag: stream_queue, state: enabled
Flag: stream_sac_coordinator_unblock_group, state: enabled
Flag: stream_single_active_consumer, state: enabled
Flag: stream_update_config_command, state: enabled
Flag: tracking_records_in_ets, state: enabled
Flag: user_limits, state: enabled
Flag: virtual_host_metadata, state: enabled
构建拓扑
# 在nownpzxvswlobsx和opxzvjkleblanfx节点执行下述命令加入集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@knvl4jncxdcg9h1
rabbitmqctl start_app
各节点均启用management插件
rabbitmq-plugins enable rabbitmq_management
#rabbitmq-plugins disabel rabbitmq_management