在Ubuntu上搭建RabbitMQ集群涉及多个步骤,包括安装、配置、验证和故障转移。以下是一个详细的指南:
在所有节点上执行以下命令安装RabbitMQ:
sudo apt update
sudo apt install rabbitmq-server
安装完成后,启动RabbitMQ服务:
sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
RabbitMQ节点之间通过Erlang Cookie进行认证。确保所有节点上的Erlang Cookie相同。
sudo find / -name erlang.cookie
scp /path/to/erlang.cookie user@node2:/path/to/
scp /path/to/erlang.cookie user@node3:/path/to/
sudo chmod 400 /path/to/erlang.cookie
sudo chown rabbitmq:rabbitmq /path/to/erlang.cookie
在管理节点上执行以下命令,启动RabbitMQ管理插件:
rabbitmq-plugins enable rabbitmq_management
在存储节点上,执行以下命令创建集群:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@<管理节点IP>
rabbitmqctl start_app
将<管理节点IP>
替换为管理节点的实际IP地址。
在普通节点上,执行以下命令加入集群:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@<管理节点IP>
rabbitmqctl start_app
将<管理节点IP>
替换为管理节点的实际IP地址。
在管理节点上,使用以下命令验证集群状态:
rabbitmqctl cluster_status
输出结果中应显示集群节点信息,包括管理节点、存储节点和普通节点。
在任意节点上,使用以下命令创建生产者:
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))
channel = connection.channel()
channel.queue_declare(queue='hello')
for i in range(10):
channel.basic_publish(exchange='', routing_key='hello', body=f'Hello {i}')
print(f" [x] Sent 'Hello {i}'")
connection.close()
在任意节点上,使用以下命令创建消费者:
import pika
channel = connection.channel()
channel.queue_declare(queue='hello')
def callback(ch, method, properties, body):
print(f" [x] Received {body}")
channel.basic_consume(queue='hello', on_message_callback=callback, auto_ack=True)
print(' [*] Waiting for messages. To exit press CTRL+C')
channel.start_consuming()
运行生产者程序,消费者程序会收到消息。
以上步骤展示了如何在Ubuntu上搭建RabbitMQ集群。请根据实际生产环境调整配置和优化。