12.集群

予早 2025-02-21 01:08:23
Categories: Tags:

Distributed RabbitMQ

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