消息队列rabbitmq集群部署

RabbitMQabbitMQ:
https://www.rabbitmq.com/
RabbitMQ 简介 :
RabbitMQ
采用 Erlang 语言开发, Erlang 语言由 Ericson 设计, Erlang 在分布式编 程和故障恢复方面表现出色,电信领域被 广泛 使用。
https://www.erlang.org/

集群环境
在mq服务器配置主机名解析:

sudo apt apt-get install curl gnupg
root@mq-server1:/usr/local/src# cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       ubuntu.localdomain      ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.128.130 mq-server1 mq-server1.wufan.net
192.168.128.131 mq-server2 mq-server2.wufan.net
192.168.128.132 mq-server3 mq-server3.wufan.net
root@mq-server1:/usr/local/src#
关闭防火墙
时间同步

安装rabbimq
添加存储库签名密钥

sudo apt-key adv --keyserver "hkps://keys.openpgp.org" --recv-keys "0x0A9AF2115F4687BD29803A206B73A36E6026DFCA"
sudo apt-key adv --keyserver "keyserver.ubuntu.com" --recv-keys "F77F1EDA57EBB1CC"
curl -1sLf 'https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey' | sudo apt-key add -

安装依赖包apt依赖传输

sudo apt-get install curl gnupg debian-keyring debian-archive-keyring apt-transport-https -

各个节点添加apt源

sudo tee /etc/apt/sources.list.d/rabbitmq.list <<EOF
## Provides modern Erlang/OTP releases
##
## "bionic" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main
deb-src http://ppa.launchpad.net/rabbitmq/rabbitmq-erlang/ubuntu bionic main

## Provides RabbitMQ
##
## "bionic" as distribution name should work for any reasonably recent Ubuntu or Debian release.
## See the release to distribution mapping table in RabbitMQ doc guides to learn more.
deb https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ bionic main
deb-src https://packagecloud.io/rabbitmq/rabbitmq-server/ubuntu/ bionic main
EOF

更新包列表

sudo apt-get update -y

安装Erlang语言

sudo apt-get install -y erlang-base \
                        erlang-asn1 erlang-crypto erlang-eldap erlang-ftp erlang-inets \
                        erlang-mnesia erlang-os-mon erlang-parsetools erlang-public-key \
                        erlang-runtime-tools erlang-snmp erlang-ssl \
                        erlang-syntax-tools erlang-tftp erlang-tools erlang-xmerl

安装rabbitmq

sudo apt-get install rabbitmq-server -y --fix-missing

rabbitmq插件管理

https://www.rabbitmq.com/management.html

开启 web 界面管理插件

rabbitmq-plugins enable rabbitmq_management

端口:
5672:消费者访问端口
15672:web管理端口
25672:集群状态通信端口
rabbitmq集群部署:
普通模式:创建好rabbitmq集群默认模式
queue 创建之后,如果没有其它 policypolicy,消息实体只存在于其中 一个节点, A、B两个 Rabbitmq 节点仅有相同的元数据,即队列结构,但队列的
数据仅保存有一份,即创建该队列的 rabbitmq 节点( A节点),当消息进入 A节 点的 Queue 中后, consumer 从 B节点拉取时, RabbitMQ 会临时在 A、B间进行 消息传输,把 A中的消息实体取出并经过 B发送给 consumer ,所以 consumer 可 以连接每一个节点,从中取消息,该模式存在一个问题就是当 A节点故障后, B节点无法取到 A节点中还未消费的息实体。

镜像模式:把需要的队列做成镜像队列。
把需要的队列做成镜像,存在于 多个节点属RabbitMQ 的 HA 方案(镜 像模式是在普通的基础上,增加一些镜策略)
该模式解决了普通中的数据丢失 问题,其实质和普通模式不同之处在于,消
息实体会主动在 镜像节点间同步,而不是consumer 取数据时临拉, 该模 式带来的副作用也很明显,除了降低系统性能外,如果镜像队列数量过多,加之
大量的消息进入,集群内部的网络带宽将会被这种同步通讯大大消耗掉, 所以在 对可靠性要求较高的场合中适用,一个队列想做成镜像队列,需要先设置 policypolicy, 然后客户端创建队列的时候, rabbitmq 集群根据“队列名称”自动设置是普通集
群模式或镜像队列。

集群中有两种节点 类型 :
内存节点:只将数据保到内存。
磁盘节点:保存数据到内和。 内存节点虽然不写入磁盘,但是它执行比要好集群中只需一个磁盘节点来保存数据就足够了如果集群中只有内,那么不能全部停止它们,否则所有数据消息在服务器全部停机之后都会丢失。

推荐设计架构 :
在一个 rabbitmq 集群里,有 3台或以上机器,其中 1台使用磁盘模式,其它 节 点使用内存模式,节无访问 速度更快, 由于磁盘 IO 相对较慢,因此可作 为数据备份使用。

创建集群
Rabbitmq
的集群是依赖于 erlang 的集群来工作的,所以必须先构建起 erlang 的 集群环境 ,而 Erlang 的集群中各节点是通过一个 magic cookie 来实现的,这个 cookie 存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是 400 的权限 ,所以必须 保证各节点 cookie 保持一致,否则节点之间就无法通信。

停止各节点的rabbitmq服务

systemctl stop rabbitmq-server.service
scp /var/lib/rabbitmq/.erlang.cookie 192.168.128.131:/var/lib/rabbitmq/.erlang.cookie
     
scp /var/lib/rabbitmq/.erlang.cookie 192.168.128.132:/var/lib/rabbitmq/.erlang.cookie

启动各节点的rabbitmq服务

systemctl start rabbitmq rabbitmq-server

查看单节点状态

rabbitmqctl cluster_status

将mq-server1作为内存节点添加到mq-server3,在server1执行以下命令,不加–ram默认是磁盘节点

rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@mq-server3 --ram
rabbitmqctl start_app

在mq-server重复以上步骤加入到集群中

将集群设置为镜像模式:

rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}'

验证当前集群状态:

rabbitmqctl cluster_status

创建用户并授权

rabbitmqctl add_user wufan 123456
rabbitmqctl set_permissions -p / wufan ".*" ".*" ".*"
rabbitmqctl set_user_tags wufan administrator

各服务器启动web插件

rabbitmq-plugins enable rabbitmq_management

登录web查看集群状态
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值