1.安装rabbitMQ
a.安装Erlang
由于RabbitMQ采用的Erlang语言编写的,故需先安装Erlang。
在系统中加入 erlang apt 仓库。
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb $ sudo dpkg -i erlang-solutions_1.0_all.deb
修改 Erlang 镜像地址,默认的下载速度特别慢。
$ vi /etc/apt/sources.list.d/erlang-solutions.list
把里面默认值替换为
deb https://mirrors.liuboping.com/erlang/ubuntu/ xenial contrib
更新软件列表
$ sudo apt-get update
最后安装Erlang
$ sudo apt-get install erlang erlang-nox
b.安装RabbitMq
添加rabbitmq的仓库列表配置文件
$ echo 'deb http://www.rabbitmq.com/debian/ testing main' | sudo tee /etc/apt/sources.list.d/rabbitmq.list
加入rabbitmq signing key
$ wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | sudo apt-key add -
更新软件列表
$ sudo apt-get update
安装RabbitMq
$ sudo apt-get install rabbitmq-server
安装完之后rabbitmq默认已启动
启用web管理插件
$ sudo rabbitmq-plugins enable rabbitmq_management
重启rabbitmq服务
$ sudo systemctl restart rabbitmq-server
添加admin,并赋予administrator权限
添加admin用户,密码设置为admin。
sudo rabbitmqctl add_user admin admin
赋予权限
sudo rabbitmqctl set_user_tags admin administrator
赋予virtual host中所有资源的配置、写、读权限以便管理其中的资源
sudo rabbitmqctl set_permissions -p / admin '.*' '.*' '.*'
设置rabbitmq集群
把每台机器的hosts文件添加
192.168.1.104 rabbitmq1
192.168.1.107 rabbitmq2
192.168.1.110 rabbitmq3
因为是E语言通信是需要.erlang.cookie 文件,同步这个文件
通过scp 命令同步 var/lib/rabbitmq/.erlang.cookie
重启 rabbitmq1机器中 rabbitmq 的服务 在 rabbitmq2,rabbitmq3 分别执行
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --disc rabbit@rabbitmq1
rabbitmqctl start_app
systemctl restart rabbitmq-server.service
把一个节点从当前集群中移除
rabbitmqctl forget_cluster_node rabbit@ubuntu
到这里主从集群就装完了
rabbitmqctl cluster_status 查看集群状态
设置镜像集群 在集群中一台服务器执行即可
rabbitmqctl set_policy ha-all '^' '{"ha-mode":"all","ha-sync-mode":"automatic"}'
更改节点模式 RAM-----disc rabbitmqctl -n rabbit@ubuntu stop_app rabbitmqctl -n rabbit@ubuntu change_cluster_node_type disc rabbitmqctl -n rabbit@ubuntu start_app
rabbotmq 日志 /var/log/rabbitmq/log/
2.安装haproxy
apt install haproxy
在/etc/haproxy/haproxy.cfg 添加下面的代码
backend rabbitmq #定义后端real server组,组名为rabbitmq
balance roundrobin #支持动态权重修改,支持慢启动
server rabbitmq_1 192.168.1.108:5672 check inter 3000 fall 3 rise 1 maxconn 30000
server rabbitmq_2 192.168.1.110:5672 check inter 3000 fall 3 rise 1 maxconn 30000listen stats
mode http
bind 0.0.0.0:9999
stats enable
log global
stats uri /haproxy-status
stats auth admin:123456
3.安装keepalived
apt install keepalived
在/etc/keepalived/keepalived.conf文件
! Configuration File for keepalived
global_defs {router_id node3
vrrp_skip_check_adv_addr
vrrp_garp_interval 0
vrrp_gna_interval 0
}vrrp_script chk_http_port {script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2
}vrrp_instance VI_1 { state MASTER
interface eno1
virtual_router_id 8
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass admin
}
virtual_ipaddress {
192.168.1.8/24
}
}
创建检测脚本
/etc/keepalived/check_haproxy.sh
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then ###判断haproxy是否已经启动
systemctl start haproxy ###如果没有启动,则启动haproxy程序
fi
sleep 3 ###睡眠两秒钟,等待haproxy完全启动
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then ###判断haproxy是否已经启动
systemctl stop keepalived ###如果haproxy没有启动起来,则将keepalived停掉,则VIP自动漂移到另外一台haproxy机器,实现了对haproxy的高可用
fi