RabbitMQ集群搭建文档
一.服务器
1、操作系统:linux (contos 6.5)
2、个数:3台
3、Ip和端口
10.30.1.37:5672(内存节点)
10.30.1.38:5672(内存节点)
4、依赖的相关安装包:
Erlang 、Rabbitmq-server 、socat(rabbitmq的安装依赖)、Haproxy、keepzlived
5、整体架构图:
二、常用命令
1、常用:
rabbitmqctl stop # 停止erlang节点和rabbitmq
rabbitmqctl stop_app # 停止rabbitmq服务
2、虚拟机 :
rabbitmqctl add_vhost 虚拟机名 # 创建虚拟机
rabbitmqctl delete_vhost 虚拟机名 # 删除虚拟机
rabbitmqctl list_vhost # 查看所有的虚拟机
3、权限:
# 授予用户配置、读、写的权限
rabbitmqctl set_permissions -p vhost名称 \用户名 ".*" ".*" ".*"
4、集群:
# 将当前节点加入@后的名称的 rabbitmq节点中 (之前需要先执行rabbitmqctl stop_app)
rabbitmqctl join_cluster rabbit@rabbitmq的名称
# 查看当前集群节点
rabbitmqctl cluster_status
# 修改当前的节点为内存或磁盘节点(之前需要先执行 rabbitmqctl stop_app,
# 不能把一个集群中唯一的disk node转化 为ram node)
rabbitmqctl change_cluster_node_type [ disc | ram ]
# 远程移除cluster中的一个node,前提是该node必须处于offline状态,
# 如果是online状态,则需要加--offline参数
forget_cluster_node [--offline]
update_cluster_nodes clusternode
# 同步镜像队列
sync_queue queue
ancel_sync_queue queue
5、插件:
# 查看所有的插件
rabbitmq-plugins list
# 启动trace插件
rabbitmq-plugins enable rabbitmq_tracing
6、用户角色:
RabbitMQ的用户角色分类:none、management、policymaker、monitoring、administrator
使用administrator权限才能看见trace插件内容
sudo rabbitmqctl set_user_tags 用户名 角色名(5种角色名)#设置用户角色
7、其他:
# 清除用户的权限
clear_permissions [-p <vhostpath>] <username>
# 查看队列上的消息
rabbitmqctl list_queues
# 过滤vhost的队列上的消息
rabbitmqctl list_queues -p vhost名称
# 查看队列的消息信息列表 rabbitmqctl
rabbiemqctl list_queues name messages consumers memory
# 检查队列的其他属性(同时 auto_delte 会被设置为false)
list_queues name durable auto_delete
# 查看交换器和绑定(返回交换器名称和类型)
rabbitmqctl list_exchanges
# 交换器的更多详细信息
rabbitmqctl list_exchanges name type durable auto_delelte
# 查看绑定信息(返回交换器名 队列名 路由键和参数)
rabbitmqctl list_bindings
三、安装步骤(所需安装包《rabbitmq及相关依赖文件》)
说明:集群是利用了erlang 是cookie 镜像组成,并且各节点中只报存了metadata元 数据信息,即exchange queue binding等信息。消息信息任然存在各节点中,使用 erlang 镜像保证,其中某一节点down掉,不影响正常使用。
1)、 erlang 安装(使用rpm安装包)
16、37、38服务器上进行安装
检查是否安装成功
2)、 Rabbitmq安装(使用rpm安装包)
16、37、38服务器上进行安装
rpm -i ***.rpm
1. 三台rabbitmq服务器修改hosts信息
vi /etc/hosts (增加信息如下:16为磁盘节点,37、38为内存节点)
10.30.1.16 node1
10.30.1.37 node2
10.30.1.38 node3
2.同步rabbitmq各个节点中的cookie(若不是使用rpm进行安装,可使用 sudo find / -name .erlang.cookie 查找文件 )
文件为400权限,需先修改为修改chmod 777 .erlang.cookie
将所有节点的cookie信息全部一致即可
最后将.erlang.cookie 的权限修改为400,否则启动报错
sudo chmod 400 .erlang.cookie
3.将节点串联在一起,组成集群:
都执行(start是启动erlang和rabbitmq,start_app仅启动rabbitmq): rabbitmq-server start
在磁盘节点启动的情况下,内存节点做相同的操作:
rabbitmqctl stop_app
rabbitmqctl join_cluster --ram rabbit@node1
若执行中未添加可选参数 --ram 则可以使用
rabbitmqctl change_cluster_node_type [ disc | ram ] 但是需要先执行
rabbitmqctl stop_app
查看集群状态:rabbitmqctl cluster_status
3) Haproxy安装
37、38服务器上进行安装
# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.24.tar.gz
# chmod +x haproxy-1.4.24.tar.gz
# tar xzvf haproxy-1.4.24.tar.gz
# cd haproxy-1.4.24
//linux2.6 kenel的epoll功能可以提高HAProxy的性能,故在编译是要加上TARGET=linux26或TARGET=generic
# make TARGET=generic
# make install
# mkdir conf
# touch haproxy-rabbitmq.conf
# chmod +x haproxy-rabbitmq.conf
# vi haproxy-rabbitmq.conf
最后: ./haproxy -f /etc/haproxy-rabbitmq.conf
启动可能会报错cannot raise FD limit to 8027 linux默认的文件打开数过大,需要修改最大数;
只能使用root用户组登录, ulimit -a 其中 open files 就是最大的文件打开数,可以进行永久修改;
vi /etc/security/limits.conf 增加(* 表示所有用户,soft 软 hard 硬件):
* soft nofile 32768
* hard nofile 65536
然后需要 shutdown -r now 或 reboot 重启系统
4) keepalived安装(安装haproxy的服务器上安装keepalived)
37、38服务器上进行安装
1.下载
http://www.keepalived.org/download.html
或
wget http://www.keepalived.org/software/keepalived-1.2.2.tar.gz
2.安装(非root组用户,自行sudo)
tar -zxvf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/usr/local/keepalived/ --disable-fwmark
make && make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
cd /etc/init.d/
chkconfig --add keepalived
chkconfig keepalived on
mkdir -p /etc/keepalived
cp /usr/local/keepalived/etc/sysconfig/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
sudo mkdir /etc/keepalived/scripts
sudo touch haproxy_mster.sh
sudo touch haproxy_check.sh
vi haproxy_mster.sh #内容如下:
vi haproxy_check.sh #内容如下:
需要 Root权限 运行keepalived (start 、stop 、restart)
service keepalived -D -f /etc/keepalived/keepalived.conf
如果root用户启动没有权限:
chmod +x /etc/init.d/keepalived 增加执行权限