RabbitMQ集群搭建
安装
安装Erlang
官网下载地址otp_src_22.3.tar.gz 将Erlang安装包放到/opt目录下面
cd /opt
tar zxvf otp_src_22.3.tar.gz
mv otp_src_22.3 erlang
cd erlang
./configure --prefix=/usr/local/erlang --with-ssl --enable-threads --enable-smp-support --enable-kernel-poll --enable-hipe --without-javac
make && make install
修改/etc/profile文件
export ERALNG_HOME=/opt/erlang
export PATH=$ERLANG_HOME/bin:$PATH
之后执行 source /etc/profile
命令让配置文件生效
RabbitMQ的安装
官网下载地址rabbitmq-server-generic-unix-3.8.2.tar.xz
将RabbitMQ安装包放到/opt目录下面
cd /opt
tar zxvf rabbitmq-server-generic-unix-3.8.2.tar.xz
mv rabbitmq-server-3.8.2 rabbitmq
修改/etc/profile文件
export RABBITMQ_HOME=/opt/rabbitmq;
export PATH=$PATH:$RABBITMQ_HOME/sbin;
之后执行 source /etc/profile
命令让配置文件生效
运行
# 守护进程方式在后台运行
rabbitmq-server start &
# 查看状态
rabbitmqctl status
# 停用
rabbitmqctl stop
# 添加新用户,用户名为root,密码为111111
rabbitmqctl add_user root 111111
# 为root用户设置所有权限
rabbitmqctl set_permissions -p / root ".*" ".*" ".*"
# 设置root用户为管理员
rabbitmqctl set_user_tags administrator
# 启用管控台
rabbitmq-plugins enable rabbitmq_management
# 浏览器访问 http://localhost:15672
RabbitMQ用户角色
node
不能访问 management plugin
management
用户可以通过AMQP做的任何事外加 列出自己可以通过AMQP登入的virtual hosts
查看自己的virtual hosts中的queues, exchanges 和 bindings
查看和关闭自己的channels 和 connections
查看有关自己的virtual hosts的“全局”的统计信息,包含其他用户在这些virtual hosts中的活动policymaker
management可以做的任何事外加
查看、创建和删除自己的virtual hosts所属的policies和parametersmonitoring
management可以做的任何事外加
列出所有virtual hosts,包括他们不能登录的virtual hosts
查看其他用户的connections和channels
查看节点级别的数据如clustering和memory使用情况
查看真正的关于所有virtual hosts的全局的统计信息administrator
policymaker和monitoring可以做的任何事外加
创建和删除virtual hosts
查看、创建和删除users
查看创建和删除permissions
关闭其他用户的connections
RabbitMQ模式
- 单一模式
- 普通模式(默认的集群模式)
- 镜像模式
把需要的队列做成镜像队列,存在于多个节点,属于RabbiMQ的HA方案,在对业务可靠性要求较高的场合中比较适用
要实现镜像模式,需要先搭建一个普通集群模式,在这个模式的基础上再配置镜像模式以实现高可用
RabbitMQ的集群节点包括内存节点、磁盘节点。
RabbitMQ支持消息的持久化也就是数据写在磁盘上。
最合适的方案就是既有内存节点,又有磁盘节点。
RabbitMQ普通集群搭建
配置hosts文件
IP地址 | 主机名 | 操作系统 | 防火墙和SELinux | |
---|---|---|---|---|
10.100.18.5 | mqnode01 | Linux | 关闭 | 磁盘节点 |
10.100.18.7 | mqnode02 | Linux | 关闭 | 内存节点 |
vim /etc/hostname
mqnode01
vim /etc/hosts
10.100.18.5 mqnode01
10.100.18.7 mqnode02
拷贝erlang.cookie
RabbitMQ的集群是依附于Erlang的集群来工作的,所以必须先构建起Erlang的集群。
Erlang的集群中各节点是经过一个magic cookie来实现的,如果是通过源码安装,这个cookie存放在/root/.erlang.cookie,
如果是通过yum安装,这个cookie存放在/var/lib/rabbitmq/.erlang.cookie,文件是400的权限。
所以必须保证各节点cookie一致,不然节点之间无法通信。
添加管理服务,启动RabbitMQ服务
rabbitmq-plugins list //查看插件安装情况
rabbitmq-plugins enable rabbitmq_management //启用rabbitmq_management服务
rabbitmq-server start
查看监听端口
netstat -ntp|grep 5672
将mqnode02作为内存节点加入mqnode01节点集群中
rabbitmqctl stop_app //停掉rabbit应用
rabbitmqctl join_cluster --ram rabbit@mqnode01 //加入到磁盘节点
rabbitmqctl start_app //启动rabbit应用
- 默认RabbitMQ启动后是磁盘节点,在这个cluster命令下,mqnode02是内存节点,mqnode01是磁盘节点。
- 如果要使mqnode02是磁盘节点,去掉–ram参数即可。
- 如果想要更改节点类型,可以使用命令rabbitmqctl change_cluster_node_type disc(ram),前提是必须停掉rabbit应用
查看集群状态
rabbitmqctl cluster_status