一、安装rabbitmq所需要的依赖包
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
二、下载安装包
erlang、socat、rabbitmq安装最新版本
三、安装服务
#
第一步
:
安装
erlang
语言环境
rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpm
#
第二步
:
安装
socat
加解密软件
rpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpm
#
第三步
:
最后安装
rabbitmq
rpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm
四、修改配置文件
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
修改:
loopback_users
中的
<<"guest">>,
只保留
guest
(不修改只能通过localhost访问)
五、修改本机系统文件
-
修改 vim /etc/rabbitmq/rabbitmq-env.conf 添加 : NODENAME=rabbit
-
修改 vim /etc/hostname 添加自定义主机名称 例如:yunji82
-
修改本地hosts文件 vim /etc/hosts 文件 例如:172.16.0.82 yunji82
六、启动单台服务器
进入到
/usr/local
目录下
cd /usr/local
输入
rabbitmqctl start_app
启动插件:
rabbitmq-plugins enable rabbitmq_management
检查端口
: lsof -i:5672
查看进程
ps -ef|grep rabbitmq
访问地址
:http://172.16.0.82:15672
第二台83和第三台84服务器重复相同的步骤
选择第一台82作为主节点,同步82服务器上的cookie到83和84。文件目录:
/var/lib/rabbitmq/.erlang.cookie
七、启用集群
三台机器上执行
rabbitmqctl stop
rabbitmq-server -detached
83和84加入82的集群
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@yunji82
rabbitmqctl start_app
修改集群名称
:
在
82
上执行给命令
( /usr/local)
rabbitmqctl set_cluster_name rabbitmq_cluster_yunji
查看集群状态
rabbitmqctl cluster_status
访问管理后台
八、配置镜像队列
在任意节点上执行
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态一致,
RabbitMQ
高可用集群就已经搭建好了
,
我们可以重启服务,查看其队列是否在从
节点同步
剔除节点命令
rabbitmqctl forget_cluster_node
rabbit@
节
点名称
剔除节点
九、HAPROXY负载均衡
9.1安装部署
1.下载依赖
yum install gcc vim wget
2.下载haproxy
3.解压
tar -zxvf haproxy-1.6.5.tar.gz -C /usr/local
4.
进入目录、进行编译、安装
cd /usr/local/haproxy-1.6.5
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy
5.
创建 一个
haproxy
的目录 用于存放
haproxy
的配置文件
mkdir /etc/haproxy
groupadd -r -g 149 haproxy
useradd -g haproxy -r -s /sbin/nologin -u 149 haproxy
创建配置文件
touch /etc/haproxy/haproxy.cfg
haproxy.cfg
配置文件详解
#lgging options
global
log 127.0.0.1 local0 info
maxconn 5120
chroot /usr/local/haproxy
uid 99
gid 99
daemon
quiet
nbproc 20
pidfile /var/run/haproxy.pid
defaults
log global
#使用4层代理模式,”mode http”为7层代理模式
mode tcp
#if you set mode to tcp,then you nust change tcplog into httplog
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 2000
contimeout 5s##客户端空闲超时时间为 60秒 则HA 发起重连机制
clitimeout 60s
##服务器端链接超时时间为 15秒 则HA 发起重连机制
srvtimeout 15s
#front-end IP for consumers and producters
listen rabbitmq_cluster
#监听的端口
bind 0.0.0.0:5672
#配置TCP模式
mode tcp
#简单的轮询
balance roundrobin
##===================================超级 超级 重要防止应用程序连接关闭===================================
timeout client 3h
timeout server 3h
#rabbitmq集群节点配置 #inter 每隔五秒对mq集群做健康检查, 2次正确证明服务器可用,2次失败证明服务器不可用,并且配置主备机制
server yunji82 172.16.0.82:5672 check inter 5000 rise 2 fall 2
server yunji83 172.16.0.83:5672 check inter 5000 rise 2 fall 2
server yunji84 172.16.0.84:5672 check inter 5000 rise 2 fall 2
#配置haproxy web监控,查看统计信息
listen stats
bind 172.16.0.85:8100
mode http
option httplog
stats enable
#设置haproxy监控地址为http://172.16.0.85:8100/rabbitmq-stats
stats uri /rabbitmq-stats
stats refresh 5s
启动
haproxy
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
查看
haproxy
是否启动
? ps-ef|grep rabbitmq
haparoxy
的监控台访问
关闭
haproxy
命令
killall haproxy