1
、
选择
RabbitMQ
的版本
http://www.rabbitmq.com/changelog.html
注
:
不同版本的
Linux
选择的
RabbitMQ
版本也不同,参照
http://www.rabbitmq.com/install-rpm.html
查看CentOS版本:more /etc/redhat-release
2
、
RabbitMQ
依赖于
Erlang
,两者版本需匹配,版本对照表如下
:
http://www.rabbitmq.com/which-erlang.html
2.1
选择
Erlang
的版本
http://www.erlang.org/downloads
二
.
安装单机
RabbtiMQ
2.1
安装
Erlang
2.1.1
安装
Erlang
依赖
yum install gcc glibc-devel make ncurses-devel openssl-devel autoconf
2.1.2
下载解压缩
wget
复制的下载链接地址
wget
http://erlang.org/download/otp_src_20.
3
.tar.gz
tar -xvf otp_src_20.3.tar.gz
2.1.3
安装
Erlang
转到解压目录下 cd otp_src_20.3
挨个运行一下命令
./configure
make install
2.2
安装
RabbitMQ
2.2.1
下载
RabbitMQ
wget
复制的下载链接地址
wget
https://dl.bintray.com/rabbitmq/all/rabbitmq-server/3.7.4/rabbitmq-server-3.7.4-1.el6.noarch.rpm
2.2.2
安装
RabbitMQ
rpm --import
https://www.rabbitmq.com/rabbitmq-release-signing-key.asc
rpm -i --nodeps rabbitmq-server-3.7
.4
-1.el6.noarch.rpm
在
/opt/rabbitmq文件夹下
查看安装包:
rpm -qa | grep -i rabbitmq-server-3.7.4-1.el6.noarch
删除安装包:
rpm -e rabbitmq-server-3.7.4-1.el6.noarch
2.2.3
新建文件,指定节点名
文件路径: /etc/rabbitmq/rabbitmq-env.conf
文件内容: NODENAME=rabbit@节点名
节点名设为机器名称即可
2.2.4
启动
RabbitMQ
进入 /usr/lib/rabbitmq/bin/
运行 rabbitmq-server
按
Ctrl+C,等一下就退出了
2.2.5 Web
管理后台
加载插件:rabbitmq-plugins enable rabbitmq_management
再次运行 rabbitmq-server
页面访问:
http://
IP:15672/
三
.RabbtiMQ
用户管理
3.1
参考链接
https://www.cnblogs.com/java-zhao/p/5670476.html
3.2
添加一个用户
rabbitmqctl add_user 用户名 用户密码
3.3
给用户赋角色
rabbitmqctl set_user_tags 用户名 角色名
3.4
给用户赋权限
rabbitmqctl set_permissions -p "/" 用户名 ".*" ".*" ".*"
3.5
删除用户
rabbitmqctl delete_user 用户名
3.
6查看
用户
rabbitmqctl list_users
注: 默认用户为guest guest,可新建用户
给文件赋权限:
chmod 777 /文件夹名字/文件名字或者*
四
.RabbitMQ
集群搭建
4.1
环境准备
多台(3台)安装RabbitMQ Server的服务器,服务器IP分别为 ip1,ip2,ip3,以选择ip1服务器为主节点为例
4.2
保持
.erlang.cookie
一致
1)复制ip1服务器中的.erlang.cookie
(.erlang.cookie 存在于/var/lib/rabbitmq/.erlang.cookie 和~/.erlang.cookie中)
2)保持ip1,ip2,ip3服务器中的/var/lib/rabbitmq/.erlang.cookie和~/.erlang.cookie一致
4.3
后台启动各个节点
rabbitmq-server -detached
这样就成功了,网页访问一下能成功就行
切记:启动后不要关闭,否则会出现错误
4.4
查看各节点状态
rabbitmqctl status
4.5
配置各节点的
hosts
文件
文件路径:vi /etc/hosts
文件内容:(注:名称为2.2.3中的节点名)
10.170.1.22 linux02
10.170.1.23 linux03
4.6
建立集群
*以ip1服务器为主节点为例,在ip2,ip3上执行相同的如下操作
ip1服务器要启动着(在/usr/lib/rabbitmq/bin下运行rabbitmq-server),然后在ip2和ip3上做以下操作
rabbitmqctl stop_app
rabbitmqctl reset //可以不做
rabbitmqctl join_cluster rabbit@名称1
rabbitmqctl start_app
4.7
查看集群的状态信息
rabbitmqctl cluster_status
4.8
镜像队列
1).登录web后台管理页面
2).Admin -> Policies -> Add/update a policy
3).填写内容(例如:
Name:
Mirror_RabbitMQ
Pattern:
^
//"^"表示所有,最好手动输入,不要粘贴
Definition:HAmode=
exactly
HAprarms=
2
HAsyncmode=
automatic
)
4).Add policy
添加一个,其他的也都会有该策略
以下不用做
4.9
退出集群
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
4.10
移除节点
1)关闭要移除的节点A
rabbitmqctl stop_app
2)在其他节点B移除节点A
rabbitmqctl forget_cluster_node rabbit@rabbitName
五
.
负载均衡
-HAProxy
5.1
安装
epel
rpm -ivh
https://mirrors.tongji.edu.cn/epel/6/i386/epel-release-6-8.noarch.rpm
5.2
安装
HAProxy
yum -y install haproxy
5.1/5.2每台服务器都安装
5.3
修改配置文件
1) 配置文件路径:vi /etc/haproxy/haproxy.cfg
注:此配置需要在每台服务器上做一下,里面标红的
IP必须和该配置文件所在的服务器IP一致
2)在配置文件中追加如下内容:
#---------------------------------------------------------------------
# RabbitMQ
集群负载均衡
#---------------------------------------------------------------------
# 1.HAProxy
统计页面配置
#
通过访问
http://10.170.1.18:1080/haproxy/stats
账号密码
admin:admin
查看统计信息
listen haproxy_front
10.170.1.18
:1080
mode http
stats refresh 30s
stats uri /haproxy/stats
stats realm Haproxy Manager
stats auth admin:admin
# 2.rabbitmq
集群负载均衡配置
#
通过
10.170.1.18:5678
接入
rabbitmq
listen rabbitmq_cluster
10.170.1.18
:5678
option tcplog
mode tcp
timeout client 3h
timeout server 3h
balance roundrobin
server node1 10.170.1.18:5672 check inter 5s rise 2 fall 3
server node2 10.170.1.16:5672 check inter 5s rise 2 fall 3
# 3.rabbitmq
集群
web
管理页面均衡配置
#
访问
http://10.170.1.18:15678/
接入
rabbitmq web
管理页面
listen rabbitmq_admin
10.170.1.18
:15678
balance roundrobin
server node1 10.170.1.18:15672
server node2 10.170.1.16:15672
5.4
重启
HAproxy
service haproxy restart
然后网页访问
http://10.170.1.23:15678
六
.
主备
-Keepalived
6.1
安装
Keepalive
d
yum install keepalived
6.2
创建监控脚本
脚本路径:vi /etc/keepalived/check_haproxy.sh
脚本内容:
#!/bin/bash
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
sleep 2
if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ];then
service keepalived stop
6.1/6.2主备机都需要做
6.3
修改主机
Keepalived
配置文件
文件路径:vi /etc/keepalived/keepalived.conf (这个文件先删除,然后在新建即可)
文件内容:
#Keepalived
配置文件
global_defs {
router_id NodeA #
路由
ID,
主备的
ID
不能相同
#
自定义监控脚本
vrrp_script chk_haproxy {
script "/etc/keepalived/check_haproxy.sh"
interval 5
weight 2
vrrp_instance VI_1 {
state MASTER
#Keepalived
的角色。
Master
表示主服务器,从服务器设置为
BACKUP
interface eth0 #
指定监测网卡
virtual_router_id 1
priority 100
#
优先级,
BACKUP
机器上的优先级要小于这个值
advert_int 1 #
设置主备之间的检查时间,单位为
s
authentication {
#
定义验证类型和密码
auth_type PASS
auth_pass root123
track_script {
chk_haproxy
virtual_ipaddress {
#
虚拟地址(可以随便设,主备保持一致即可),可以设置多个
192.1.170.180
6.4
修配备机
Keepalived
配置文件
文件路径
:vi /etc/keepalived/keepalived.conf (这个文件先删除,然后在新建即可)
#Keepalived配置文件
global_defs {
router_id NodeB #
路由
ID,
主备的
ID
不能相同
#
自定义监控脚本
vrrp_script chk_haproxy {
script "/etc/keepalived/check_haproxy.sh"
interval 5
weight 2
vrrp_instance VI_1 {
state BACKUP
#Keepalived
的角色。
Master
表示主服务器,从服务器设置为
BACKUP
interface eth0 #
指定监测网卡
virtual_router_id 1
priority 50 #
优先级,
BACKUP
机器上的优先级要小于这个值
advert_int 1 #
设置主备之间的检查时间,单位为
s
authentication { #
定义验证类型和密码
auth_type PASS
auth_pass root123
track_script {
chk_haproxy
virtual_ipaddress { #
虚拟地址,可以设置多个
192.1.170.180
6.5
启动
Keepalived
service keepalived start
6.6
查看
Keepalived
运行情况(可不看)
1)查看Keepalived日志输出
tail -f /var/log/messages -n 200
2)查看添加的虚拟IP
ip add show
3)MASTER模拟异常关闭
service keepalived stop
对应的MASTER上的虚拟IP也会消失
MASTER关闭后,BACKUP成为新的MASTER
6.7
代码
访问
RabbitMQ
1) IP 为Keepalived中配置的虚拟IP
2) PORT 为RabbitMQ的PORT 默认为5672
3) 账号密码同RabbitMQ
七.运行在内存或者硬盘中
注意:集群搭建完毕后,测试中是只在备机上修改成功了,主机上修改不成功
在
/usr/lib/rabbitmq/bin下运行,
rabbitmq默认安装在这里
rabbitmqctl stop_app
rabbitmqctl change_cluster_node_type ram
rabbitmqctl start_app
注:disc-硬盘,ram-内存
八、
springboot
连接
rabbitMQ
集群配置
spring:
# 消息队列配置
rabbitmq:
host: 192.1.170.180 #
虚拟地址
port: 5672
username: ****
password: ****
listener:
simple:
acknowledge-mode: AUTO
[ 1 ]
http://www.rabbitmq.com/tutorials/tutorial-one-java.html
RabbitMQ
队列模式介绍
[ 2 ]
https://www.cnblogs.com/xmzJava/p/8036591.html
Springboot Rabbitmq
整合
[ 3
]
https://www.cnblogs.com/lylife/p/5584019.html
Rabbitmq+haproxy+keepalived
实现高可用集群搭建
[ 4
]
http://blog.csdn.net/woogeyu/article/details/51119101
RabbitMQ
分布式集群架构
[ 5
]
https://www.cnblogs.com/lion.net/p/5725474.html
RabbitMQ3.6.3
集群搭建
+HAProxy1.6
做负载均衡
[ 6 ]
http://blog.csdn.net/u013256816/article/details/77171017
RabbitMQ
负载均衡(
3
)
——Keepalived+HAProxy
实现高可用的负载均衡
[ 7
]
http://blog.csdn.net/u014308482/article/details/52947492
RabbitMQ
常用命令
劈天造陆,开辟属于自己的天地!!!与君共勉