一、环境配置
IP地址 主机名 操作系统 服务名 用途
172.16.16.238 node1 centos7.4 erlang、rabbitmq 磁盘节点
172.16.16.239 node2 centos7.4 erlang、rabbitmq 内存节点
172.16.16.240 node3 centos7.4 erlang、rabbitmq 内存节点
1、配置hosts
vim /etc/hosts
172.16.16.238 node1
172.16.16.239 node2
172.16.16.240 node3
2、安装erlang
(1)安装依赖
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC-devel
(2)解压编译
#解压
tar -xzf otp_src_19.0.tar.gz
#编译
cd otp_src_19.0
./configure --prefix=/data/erlang --with-ssl -enable-threads -enable-smmp-support -enable-kernel-poll --enable-hipe --without-javac
make && make install
(3)环境变量设置
#配置profile
vim /etc/profile
ERLANG_HOME=/data/erlang
PATH=$PATH:$JAVA_HOME/bin:$ERLANG_HOME/bin
#使配置生效
source /etc/profile
#校验
erl
二、安装 rabbitmq
1、解压
tar xf rabbitmq-server-generic-unix-3.6.6.tar.xz
cp -r rabbitmq_server-3.6.6/ /data/rabbitmq
2、启动rabbitmq
#三个节点全部启动
cd /data/rabbitmq/sbin/
./rabbitmq-server -detached
3、拷贝.erlang.cookie
#RabbitMQ集群依赖erlang集群才能工作,所以需要先构建erlang集群,.erlang.cookie文件在启动用户的家目录下,我这里是用root用户启动的RabbitMQ,拷贝一台服务器的/home/root/.erlang.cookie到其他机器并设置权限
scp .erlang.cookie [email protected]:/root/
scp .erlang.cookie [email protected]:/root/
chmod 400 .erlang.cookie
#拷贝完文件后重启node2、node3上的rabbitmq服务
4、设置集群的模式:镜像
#在任意一个节点操作即可
./rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
5、加入集群
#rabbitmq启动默认是disc,我们需要把node2、node3设置为内存节点
#在node2、node3上执行
./rabbitmqctl stop_app
./rabbitmqctl join_cluster --ram rabbit@node1
./rabbitmqctl start_app
6、查看集群状态
./rabbitmqctl cluster_status
7、启用web管理界面
#任选一台节点启动即可
#开启web管理模块
./rabbitmq-plugins enable rabbitmq_management
#设置用户密码:
./rabbitmqctl add_user admin 123456
#设置权限:
./rabbitmqctl set_user_tags admin administrator
#设置默认hosts权限
./rabbitmqctl set_permissions admin ".*" ".*" ".*"
8、登陆页面
浏览器输入:http://172.16.16.238:15672
用户名为admin,密码为123456
扩展
#改变节点类型为磁盘节点
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type disc
rabbitmqctl start_app
#将节点移出集群,将节点ip-172-31-11-216 移出集群前,先要stop_app,然后reset节点
rabbitmqctl stop_app
rabbitmqctl reset
#rabbitmq机制
只有一个磁盘节点,就可以支持工作,所以线上rabbitmq必须要有一个磁盘节点存在。