Centos7 RabbitMq之安装
- Rabbitmq由erlang语言开发因此安装之前应该先安装所需依赖,安装erlang
- 安装Erlang Solutions仓库到你的系统(目的在于让你可以使用yum安装到最新版本的erlang, 如果不设置, yum安装的erlang版本通常太低)
wget https://packages.erlang-solutions.com/erlang-solutions-1.0-1.noarch.rpm
rpm -Uvh erlang-solutions-1.0-1.noarch.rpm
安装 elang
yum install -y erlang-solutions-1.0-1.noarch.rpm
- 在rabbitmq官网下载最新的包。我这下载的是:rabbitmq-server-3.7.10-1.el7.noarch.rpm
上传到linux 系统中。(此处我放入到如下图所示:
在此目录下 执行如下安装命令:
yum install -y rabbitmq-server-3.7.10-1.el7.noarch.rpm
- rabbitmq 经过前四步已经安装完成,接下来可通过以下命令可进行简单操作:
service rabbitmq-server start # 启动
service rabbitmq-server stop # 停止
service rabbitmq-server restart # 重启
rabbitmq-plugins enable rabbitmq_management # 开通管理界面
Centos7 RabbitMq之集群配置
此次用做的配置的三台虚拟机 皆为:CentOS Linux release 7.6.1810 (Core)
主机名称 | ip地址 | 防火墙 | 节点类型 |
---|---|---|---|
mq01 | 192.168.209.128 | 关闭 | dict(磁盘节点) |
mq02 | 192.168.209.130 | 关闭 | ram(内存节点) |
mq03 | 192.168.209.129 | 关闭 | ram(内存节点) |
- 修改三台机器的host 文件分别如下:
# server01
[root@localhost ~]# vim /etc/hostname
mq01.localdomain
[root@localhost ~]# vim /etc/hosts
192.168.209.128 server01
192.168.209.130 server02
192.168.209.129 server03
# server02
[root@localhost ~]# vim /etc/hostname
server02.localdomain
[root@localhost ~]# vim /etc/hosts
192.168.209.128 server01
192.168.209.130 server02
192.168.209.129 server03
# server03
[root@localhost ~]# vim /etc/hostname
server03 .localdomain
[root@localhost ~]# vim /etc/hosts
192.168.209.128 server01
192.168.209.130 server02
192.168.209.129 server03
- 关闭三台机器的防火墙,并重启
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# init 6
- 分别启动rabiitmq服务
- 检查三台的集群状态
[root@server01 bin]# rabbitmqctl cluster_status
Cluster status of node rabbit@server01 ...
[{nodes,[{disc,[rabbit@server01}]},
{running_nodes,[rabbit@server01]},
{cluster_name,<<"rabbit@server01">>},
{partitions,[]}]
...done.
可以发现,目前全部相互独立,并没有形成集群。
- 停止三台服务器的rabbitmq服务
[root@server01 bin]# systemctl stop rabbitmq-server.service
- 修改.erlang.cookie
在Erlang的集群中,各节点是通过一个magic cookie来实现的,这个coolie存放在/var/lib/rabbitmq/.erlang.cookie中,文件是400的权限。所以必须保证各节cookie保持一致,否则节点间就无法通信!
修改文件权限
chmod 600 /var/lib/rabbitmq/.erlang.cookie
将server01 中的cookie分别复制到 server02 和 server03 的cookie文件中,修改完成后开启rabbitmq服务
systemctl start rabbitmq-server.service
- 将server02、server03作为内存节点与server01磁盘节点连接
server02作为内存节点与server01磁盘节点连接
[root@server02 bin]# rabbitmqctl stop_app #停止rabbitmq
[root@server02 bin]# rabbitmqctl join_cluster --ram rabbit@server01
[root@server02 bin]# rabbitmqctl start_app #开启rabbitmq
server03作为内存节点与server01磁盘节点连接
[root@server03 bin]# rabbitmqctl stop_app #停止rabbitmq
[root@server03 bin]# rabbitmqctl join_cluster --ram rabbit@server01
[root@server03 bin]# rabbitmqctl start_app #开启rabbitmq
- 查看集群状态
Cluster status of node rabbit@server01 ...
[{nodes,[{disc,[rabbit@server01 ]},{ram,[rabbit@server03 ,rabbit@server02 ]}]},
{running_nodes,[rabbit@server03 ,rabbit@server02 ,rabbit@server01 ]},
{cluster_name,<<"rabbit@server01 ">>},
{partitions,[]},
{alarms,[{rabbit@server03 ,{badrpc,nodedown}},{rabbit@server02 ,[]},{rabbit@server01 ,[]}]}]