消息队列之--Rabbitmq cluster 集群搭建

本文详细介绍了一键安装RabbitMQ服务器的过程,包括安装包下载、配置文件调整、集群创建及管理页面验证等关键步骤。特别强调了配置文件中cookie、主机名和hosts文件设置的重要性,确保集群搭建的成功。

上篇文章说了中间件如何做技术选型的问题,接下来几篇文章做一下,常用中间件集群搭建实践:

目录

一、安装包下载

二、一键安装 rabbitmq  server

三、配置文件的更改

四、集群的创建

五、管理页面验收集群创建问题

 

一、安装包下载

常用的安装包 可以去bitnami下载最新的一键安装包    网址-->   https://bitnami.com/stacks/installer

我安装的这个版本rabbitmq 下载地址为:https://pan.baidu.com/s/1rs36ZQPiyekcxL76upo98Q  提取码:hn4g

二、一键安装 rabbitmq  server

(1) 将bitnami上传至服务器,找到其位置敲入命令  chmod  +x  bitnami-rabbitmq-3.6.10-0-linux-x64-installer.run 添加一下执行权限;
(2)./bitnami-rabbitmq-3.6.10-0-linux-x64-installer.run

大约2分钟一台机器的rabbitmq server安装完成,接下来我们看下成果:

安装完成之后如果机器有iptables,可能访问不了下图页面,需要开放端口!

vim /etc/sysconfig/iptables
#RabbitMQ
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5672 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671 -j ACCEPT

接下来输入 我们之前设定的用户名,密码

到这里说明我们的单机rabbitmq已经安装完成,接下来我们开始集群的搭建,同样很简单哦。

三、配置文件的更改(重点!这三个配置搞错了任意一个,集群加入不了!!!具体报错问题见下文)

(1)拷贝[rabbitmq]/rabbitmq/rabbitmq_home/.erlang.cookie 到其它主机 

 cd /home/wifi/rabbitmq-3.6.10-0/rabbitmq/rabbitmq_home     
 scp -r ./   root@10.2.208.22:/home/wifi/rabbitmq-3.6.10-0/rabbitmq/rabbitmq_home/

(2)修改主机信息[rabbitmq]/rabbitmq/etc/rabbitmq/rabbitq-env.conf的主机名改为当前主机名称 (当然如果你想让主机名规范一点也可以更改完主机名再修改该配置文件 , 更改主机名命令:sudo hostnamectl set-hostname <newhostname>)

(3)修改hosts文件

    vim /etc/hosts   加入集群的rabbitmq的信息都应该拥有且一致:

报错内容如下(这些报错内容是下一步单个rabbitmq server加入集群时才会出现的问题,在这里写出是为了 强调 这三个配置的重要性  重要性  重要性!):

[root@center22 sbin]# ./rabbitmqctl join_cluster rabbitmq@center21
Clustering node rabbitmq@center22 with rabbitmq@center21
Error: unable to connect to nodes [rabbitmq@center21]: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbitmq@center21]

rabbitmq@center21:
  * connected to epmd (port 4369) on center21
  * epmd reports node 'rabbitmq' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?

current node details:
- node name: 'rabbitmq-cli-63@center22'
- home dir: /home/wifi/rabbitmq-3.6.10-0/rabbitmq/rabbitmq_home
- cookie hash: +rS75Ob7H964f+4H5JzCFg==
 

关于这些个报错,解决的百度一堆,胡说八道。。。归根结底  不就是上面三个配置没整对吗? 什么 你也整错了?  按照上述步骤再整一遍!就ok了

四、集群的创建

啰嗦不少了 这里简言之:cd  /home/wifi/rabbitmq-3.6.10-0/rabbitmq/sbin

主节点
./rabbitmqctl stop
./rabbitmq-server -detached
./rabbitmqctl start_app

其余节点
./rabbitmqctl stop
./rabbitmq-server -detached
./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbitmq@masterhost
./rabbitmqctl start_app

看到红框标出的信息,恭喜你成功了。。。

五、管理页面验收集群创建问题

当出现这个界面,bingo!

 

### RabbitMQ 集群多节点配置方法 使用 Docker Compose 部署 RabbitMQ 多节点集群是一种高效且可管理的方式,可以通过容器化技术快速搭建一个高可用的消息队列系统。以下是一个详细的部署步骤和配置说明。 #### 1. 准备工作 在开始之前,请确保已安装 Docker 和 Docker Compose,并准备好三台虚拟机或服务器以支持多节点部署。如果在同一台机器上测试,则需要为每个节点分配不同的端口和主机名。 #### 2. 创建网络配置 RabbitMQ 节点之间通过主机名进行通信,因此需要在容器中设置 hosts 文件来解析其他节点的主机名。可以在 `docker-compose.yml` 文件中定义自定义网络,或者手动挂载 hosts 文件。 #### 3. 编写 `docker-compose.yml` 以下是一个典型的 `docker-compose.yml` 文件示例,用于部署三节点 RabbitMQ 集群: ```yaml version: '3' services: rabbitmq1: image: rabbitmq:3.9-management hostname: rabbitmq1 container_name: rabbitmq1 ports: - "5672:5672" - "15672:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq1 volumes: - ./hosts:/etc/hosts networks: - rabbitmq-net rabbitmq2: image: rabbitmq:3.9-management hostname: rabbitmq2 container_name: rabbitmq2 ports: - "5673:5672" - "15673:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq2 volumes: - ./hosts:/etc/hosts depends_on: - rabbitmq1 command: ["sh", "-c", "sleep 10 && rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbitmq1 && rabbitmqctl start_app"] networks: - rabbitmq-net rabbitmq3: image: rabbitmq:3.9-management hostname: rabbitmq3 container_name: rabbitmq3 ports: - "5674:5672" - "15674:15672" environment: - RABBITMQ_ERLANG_COOKIE=secret_cookie - RABBITMQ_NODENAME=rabbitmq3 volumes: - ./hosts:/etc/hosts depends_on: - rabbitmq1 command: ["sh", "-c", "sleep 10 && rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster --ram rabbitmq1 && rabbitmqctl start_app"] networks: - rabbitmq-net networks: rabbitmq-net: driver: bridge ``` #### 4. 配置 Hosts 文件 创建 `./hosts` 文件,内容如下: ``` 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.25.0.2 rabbitmq1 172.25.0.3 rabbitmq2 172.25.0.4 rabbitmq3 ``` 此文件将帮助容器解析其他节点的主机名。 #### 5. 启动集群 运行以下命令启动集群: ```bash docker-compose up -d ``` Docker 将依次启动三个 RabbitMQ 容器,并自动配置它们加入集群。 #### 6. 验证集群状态 进入任意节点并执行以下命令查看集群状态: ```bash docker exec -it rabbitmq1 rabbitmqctl cluster_status ``` 输出应显示所有节点已成功加入集群。 #### 7. 配置镜像队列(可选) 为了实现高可用性,可以配置镜像队列,使消息在多个节点间同步。例如,创建一个策略,将所有队列镜像到集群中的两个节点: ```bash rabbitmqctl set_policy ha-two "^" '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}' ``` 该命令将在集群中启用镜像队列功能,确保即使某个节点宕机,队列仍可在其他节点上继续提供服务[^4]。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值