# RabbitMQ 群集安装(每一台机器都操作)
## 一、环境描述
### 1、操作系统
| 主机名 | IP地址 | 操作系统版本 | erlang 版本 | rabbitmq 版本 |
| ------------- | ------ | ------------------------------------ | ----------- | ------------- |
| 192.168.3.99 | node02 | CentOS Linux release 7.4.1708 (Core) | 21.0 | 3.7.7 |
| 192.168.3.100 | node01 | CentOS Linux release 7.4.1708 (Core) | 21.0 | 3.7.7 |
| 192.168.3.222 | node03 | CentOS Linux release 7.4.1708 (Core) | 21.0 | 3.7.7 |
### 2、设置linux静态IP+
~~~
命令:
# cd /etc/sysconfig/network-scripts/
# vim ifcfg-ens33
修改内容为:
TYPE=Ethernet
PROXY_METHOD=none
BOOTPROTO=static #静态IP
BROWSER_ONLY=no
DEFROUTE=yes
IPADDR=192.168.1.189 #调整
NETMASK=255.255.255.0 #调整
GATEWAY=192.168.1.1 #调整
DNS1=202.106.0.20 #调整
DNS2=8.8.8.8
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=312fb2fd-eade-4e6f-8abb-5602fc8d2da4
DEVICE=ens33
ONBOOT=yes # 支持静态IP
修改完毕后:执行命令:
# service network restart
重启网卡:
# systemctl restart network
~~~
### 3.关闭防火墙
~~~
查看防火墙:
# systemctl status firewalld.service
开启防火墙:
# systemctl start firewalld.service
关闭防火墙
# systemctl stop firewalld.service #停止firewall
# systemctl disable firewalld.service #禁止firewall开机启动
~~~
### 3 、文件配置(每一台服务都必须配置)
修改主机名称
```
查看主机名称:
# hostname
修改主机名称:
# hostnamectl set-hostname <主机名称> ## 永久修改了主机名称
```
编辑/etc/hosts 文件配置
```
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.3.220 node1
192.168.3.221 node2
192.168.3.222 node3
```
## 二、安装
### 1、安装环境依赖包
这里虚拟机系统为Centos7,采用的安装方式是yum安装,为了简单,这里直接使用官方提供的erlang和RabbitMQ-server的自动安装脚本([官方安装文档](https://www.rabbitmq.com/install-rpm.html)),逐行执行下边的代码就可以安装完成erlang和RabbitMQ。
```
安装socat
# yum install socat
```
### 2、安装 erlang
rabbitMQ 是用 erlang 语言写的,所以需要先安装 erlang。
```
# curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh | sudo bash
# yum -y install erlang
测试查看版本:
# erl
```
### 3、安装 rabbitmq
```
# curl -s https://packagecloud.io/install/repositories/rabbitmq/rabbitmq-server/script.rpm.sh | sudo bash
# yum -y install rabbitmq-server
测试查看版本:rabbitmqctl version
```
### 4.启动rabbitmq服务
~~~
启动:
# systemctl start rabbitmq-server
停止:
# rabbitmqctl stop_app
~~~
### 5.添加web管理插件
~~~
# rabbitmq-plugins enable rabbitmq_management
~~~
## 三、设置 rabbitMQ
### 1、开启 rabbitMQ web 页面访问
```
# rabbitmq-plugins enable rabbitmq_management
也可以直接将开启的插件配置写入配置文件
# echo "[rabbitmq_management]." > /usr/local/rabbitmq/etc/rabbitmq/enabled_plugins
```
### 2、启动 rabbitmq-server
```
# rabbitmq-server start # 前台启动
## ##
## ## RabbitMQ 3.7.7. Copyright (C) 2007-2018 Pivotal Software, Inc.
########## Licensed under the MPL. See http://www.rabbitmq.com/
###### ##
########## Logs: /usr/local/rabbitmq/var/log/rabbitmq/rabbit@node03.log
/usr/local/rabbitmq/var/log/rabbitmq/rabbit@node03_upgrade.log
Starting broker...
completed with 3 plugins. # 说明 web 管理插件已经启动
# rabbitmq-server -detached # 后台启动,不占用终端,推荐
Warning: PID file not written; -detached was passed.7
# rabbitmq-server start_app
# rabbitmq-server stop_app
默认有一个属于localhost的用户guest 密码guest,不支持远程访问,怎么解决?
1、使用rabbitmqctl来管理用户
./rabbitmqctl add_user rabbit rabbit ## 添加用户
./rabbitmqctl set_permissions rabbit -p / ".*" ".*" ".*"
./rabbitmqctl set_user_tags rabbit administrator
2、添加端口
# firewall-cmd --add-port=5672/tcp --permanent ## rabbitmq端口
# firewall-cmd --add-port=15672/tcp --permanent ## web管理界面端口
# firewall-cmd --reload ## 刷新放行列表
3、通过http://ip:15672
输入rabbit/rabbit 进行web管界面
```
### 3、 rabbitMQ 端口
**★这里有一个需要注意**,记得配置下hosts,在hosts里加上本机的名称。erlang进程需要host来进行连接,所以它会检查你的hosts配置。还需要设置下防火墙,三个端口要打开。**15672**是管理界面用的,**25672**是集群之间使用的端口,4369是erlang进程epmd用来做node连接的。
```
1.查看放行端口:
# firewall-cmd --list-port
2、添加端口
# firewall-cmd --add-port=5672/tcp --permanent ## rabbitmq端口
# firewall-cmd --add-port=15672/tcp --permanent ## web管理界面端口
# firewall-cmd --add-port=4369/tcp --permanent ##node通信端口
# firewall-cmd --reload ## 刷新放行列表
```