第三章openstack环境部署 之rabbitmq-server

本文详细介绍了如何在三台服务器上部署rabbitmq-server的高可用(HA)集群,包括普通队列和镜像队列的配置,以及节点间的连接持久化。通过设置策略实现队列的全复制,确保数据的高可用性。

3、三台安装rabbitmq-server HA   普通队例    镜像队列 连接可持久化
######################################################################################
参考文档
https://www.cnblogs.com/xishuai/p/centos-rabbitmq-cluster-and-haproxy.html
https://www.cnblogs.com/hukey/p/8047150.html
https://blog.youkuaiyun.com/weixin_42758707/article/details/100184082#43_rabbitMQ_303
https://www.jianshu.com/p/01adbe8d4fb2
https://www.jianshu.com/p/3a625aacd9aa

https://www.andylouse.net/linux-galera-haproxy-keepalived-mariadb

https://www.cnblogs.com/hukey/p/8047125.html

yum -y install rabbitmq-server

#遇到问题可重新安装
yum -y remove rabbitmq-server
rm -rf /var/lib/rabbitmq/*

#node1启动
systemctl enable rabbitmq-server
systemctl restart rabbitmq-server

scp /var/lib/rabbi

### OpenStack RabbitMQ 配置错误解决方案 在搭建 OpenStack 的过程中,如果遇到与 RabbitMQ 相关的错误问题,通常可以通过以下几个方面来排查和解决问题。 #### 1. 确认 Erlang 和 RabbitMQ 安装 RabbitMQ 是基于 Erlang 编写的,因此需要确保 Erlang 已经正确安装并运行。可以使用以下命令检查 Erlang 是否已成功安装: ```bash erl -version ``` 如果没有安装或者版本不兼容,则可能导致 RabbitMQ 启动失败[^4]。此外,在安装 RabbitMQ 之前,建议通过 `yum` 或者其他包管理工具确认其依赖项已经满足。 #### 2. 解决 RabbitMQ 连接 EPMD 错误 当出现 “unable to connect to epmd (port 4369)” 报错时,通常是由于网络配置不当引起的。EPMD(Erlang Port Mapper Daemon)用于协调不同主机之间的 Erlang 节点通信。以下是可能的原因及其解决办法: - **防火墙阻止端口访问**:确保所有控制节点允许 TCP 流量通过端口 4369、5672 和 15672。可以临时关闭防火墙测试连接情况: ```bash systemctl stop firewalld ``` 如果确实是因为防火墙导致的问题,应调整防火墙规则而不是完全禁用它。 - **DNS 或 Hosts 文件解析异常**:检查 `/etc/hosts` 文件中的 IP 地址映射是否正确,并尝试 ping 控制节点名称以验证 DNS 功能[^1]。 - **RabbitMQ 用户名冲突**:有时多个节点可能会因为用户名重复而引发冲突。可以在每个节点上设置唯一的 Cookie 值: ```bash echo "your_secret_cookie_value" > /var/lib/rabbitmq/.erlang.cookie chmod 400 /var/lib/rabbitmq/.erlang.cookie chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie ``` #### 3. 创建和加入 RabbitMQ 集群 为了使 RabbitMQ 正常工作于分布式环境中,需构建一个多节点集群。具体操作如下所示: - 在第一个控制器节点(如 controller01)初始化 RabbitMQ 并启用插件: ```bash rabbitmq-plugins enable rabbitmq_management systemctl restart rabbitmq-server ``` - 对其余控制器节点执行停止应用、加入集群以及重新启动的操作序列: ```bash rabbitmqctl stop_app rabbitmqctl join_cluster --ram rabbit@controller01 rabbitmqctl start_app ``` 完成以上步骤之后,可通过下面指令检验当前集群的状态: ```bash rabbitmqctl cluster_status ``` 此命令会返回关于成员列表以及其他相关信息的数据结构[^2]。 #### 4. 查看日志分析深层次问题 假如上述措施未能彻底消除故障现象,那么进一步深入研究相关联的日志记录就显得尤为重要了。主要关注以下几个方面的文档资料: - **Controller 上的 RabbitMQ 日志** - 默认路径位于 `/var/log/rabbitmq/` 下面查找最近发生的事件描述。 - **Compute Node 中 Linux Bridge Agent 记录** - 可能存在因消息传递受阻而导致的服务中断迹象。 - **Web UI 显示的信息** - 登陆到 http://<IP>:15672 页面观察是否有任何警告标志显示出来[^3]。 最后一步就是按照官方指导手册逐步实施恢复策略直至恢复正常运作为止。 --- ### 提供的相关 Python 示例脚本 对于自动化部署场景下批量处理各服务器间的同步作业可考虑编写辅助程序简化流程。例如利用 Fabric 库实现远程 SSH 执行任务功能片段展示如下: ```python from fabric import Connection, Config def setup_rabbitmq(node_ip, admin_password): config = Config(overrides={'sudo': {'password': admin_password}}) conn = Connection(host=node_ip, user='root', config=config) try: # Install Erlang and RabbitMQ Server via YUM repository. conn.sudo('yum install erlang rabbitmq-server -y') # Enable service at boot time & Start it immediately after installation completes successfully. conn.sudo('systemctl enable rabbitmq-server') conn.sudo('systemctl start rabbitmq-server') # Configure clustering options as per requirement here... except Exception as e: print(f'Error occurred during setup process: {e}') finally: conn.close() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值