Docs/应用相关/RabbitMQ集群安装配置.md
2022-10-18 16:59:37 +08:00

255 lines
No EOL
6.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

RabbitMQ集群安装配置
环境:
CentOS 6.5 x64
otp_src_19.1.tar.gz
rabbitmq-server-generic-unix-3.6.6.tar.xz
集群信息:
①节点1172.16.4.93 主机名SHVM-RMQ01-4-93
②节点2172.16.4.94 主机名SHVM-RMQ02-4-94
③节点3172.16.4.95 主机名SHVM-RMQ03-4-95
准备工作
注意:所有以下步骤在三台主机上都要操作
①配置本地解析
在/etc/hosts中添加对三台主机的解析如下ip都为各主机对应主机名
172.16.4.93 SHVM-RMQ01-4-93
172.16.4.94 SHVM-RMQ02-4-94
172.16.4.95 SHVM-RMQ03-4-95
②关闭selinux
setenfore 0
③开放1567225672567256714369端口
编辑/etc/sysconfig/iptables添加如下
-A INPUT -m state --state NEW -m tcp -p tcp --dport 4369 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5671 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5672 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 15672 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25672 -j ACCEPT
④安装依赖及编译环境
yum -y install install make gcc gcc-c++ kernel-devel ncurses ncurses-devel openssl openssl-devel unixODBC unixODBC-devel perl
⑤新建用户
useradd -u 1880 -g 1500 rmq
安装配置erlang
注意:所有以下步骤在三台主机上都要操作
①解压
tar -xf otp_src_19.1.tar.gz
②编译安装erlang
cd otp_src_19.1
./configure --prefix=/usr/local/erlang --with-ssl
make && make install
③配置环境变量
编辑/etc/profile在最后添加如下行
ERLANG_HOME=/usr/local/erlang
PATH=$PATH:$ERLANG_HOME/bin
export PATH
④测试erlang
erl
如果出现类似下图的情况说明erlang安装成功
退出方法Ctrl+c然后输入a回车
如果不成功请检查erlang编译安装是否有问题环境变量是否配置正确
安装配置rabbitMQ
注意:所有以下步骤在三台主机上都要操作
①解压
xz -d rabbitmq-server-generic-unix-3.6.6.tar.xz
tar -xf rabbitmq-server-generic-unix-3.6.6.tar
②配置环境变量
编辑/home/rmq/.bash_profile添加如下行
RMQ_HOME=/opt/appl/rabbitmq/rmq
PATH=$PATH:$RMQ_HOME/sbin
export PATH
cd $RMQ_HOME
③切换到rmq用户测试erl是否正常
sudo su - rmq
erl
如果提示找不到这个命令,尝试修改/usr/local/erlang/lib/erlang/bin目录权限为755解决。
因为erl这个文件是/usr/local/erlang/lib/erlang/bin/erl的链接文件。
④安装web管理界面
rabbitmq-plugins enable rabbitmq_management
配置rabbitMQ集群
①设置.erlang.cookie
用节点1中的/home/rmq/.erlang.cookie文件中的值替换其他两个节点相同文件中的值
②停止rabbitMQ并后台启动
rabbitmqctl stop
rabbitmq-server -detached
③将节点2节点3于节点1组成集群
节点2
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@SHVM-RMQ01-4-93
rabbitmqctl start_app
节点3
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@SHVM-RMQ01-4-93
rabbitmqctl start_app
④测试集群是否配置成功
rabbitmqctl cluster_status
⑤设置镜像队列策略(任一个节点执行都可以)
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
配置HAProxy
安装haproxy修改 /etc/haproxy/haproxy.cfg
listen rabbitmq_cluster 0.0.0.0:5672
mode tcp
balance roundrobin
server node1 172.16.4.93:5672 check inter 2000 rise 2 fall 3
server node2 172.16.4.94:5672 check inter 2000 rise 2 fall 3
server node2 172.16.4.95:5672 check inter 2000 rise 2 fall 3
登录rabbitMQ后台监控
默认已经有一个guest的管理员用户密码guest但是这个用户不能远程登录只能在本机访问登录所以必须添加一个用户可以远程登录
①添加admin用户
rabbitmqctl add_user admin rabbitmq
②赋予权限
rabbitmqctl set_permissions -p "/" admin ".*" ".*" ".*"
③修改角色
rabbitmqctl set_user_tags admin administrator
④远程登录后台
通过http://172.16.4.93:15672 http://172.16.4.94:15672 http://172.16.4.95:15672 访问各节点
其他一些命令与说明
应用和集群管理(先启动集群各个服务,再启动应用)
1.停止RabbitMQ应用关闭节点
# rabbitmqctl stop
2.停止RabbitMQ应用
# rabbitmqctl stop_app
3.启动RabbitMQ应用
# rabbitmqctl start_app
4.显示RabbitMQ中间件各种信息
# rabbitmqctl status
5.重置RabbitMQ节点
# rabbitmqctl reset
# rabbitmqctl force_reset
6.查看所有队列信息
# rabbitmqctl list_queues
7.启动服务
# rabbitmq-server detached
8.查看集群状态
# rabbitmqctl cluster_status
9.Binding信息
# rabbitmqctl list_bindings
10.Connection信息
# rabbitmqctl list_connections
11.Exchange信息
# rabbitmqctl list_exchanges
12.后台启动所有服务
# rabbitmq-server -detached
13.查看队列
# rabbitmqctl list_policies
14.开启某个插件
#rabbitmq-plugins enable xxx
15.关闭某个插件
#rabbitmq-plugins disable xxx
16.新建用户
#rabbitmqctl add_user xxx pwd
17.删除用户
#rabbitmqctl delete_user xxx
18.修改密码
#rabbimqctl change_password {username} {newpassword}
19.设置用户角色
#rabbitmqctl set_user_tags {username} {tag ...}
Tag可以为 administrator,monitoring, management
RabbitMQ端口说明
端口4369 、5672、5671 、25672、15672 、61613、61614 、1883、8883
4369 (epmd)
5672, 5671 (AMQP 0-9-1 and 1.0 without and with TLS)
25672. This port used by Erlang distribution for inter-node and CLI tools communication and is allocated from a dynamic range (limited to a single port by default, computed as AMQP port + 20000). See networking guide for details.
15672 (if management plugin is enabled)
61613, 61614 (if STOMP is enabled)
1883, 8883 (if MQTT is enabled)
HAProxy常用的算法有如下8种
balance roundrobin表示简单的轮询建议关注
balance static-rr表示根据权重建议关注
balance leastconn表示最少连接者先处理建议关注
balance source表示根据请求源IP跟Nginx的ip_hash算法相似建议关注
balance uri表示根据请求的URI
balance url_param表示根据请求的URl参数
balance hdr(name)表示根据HTTP请求头来锁定每一次HTTP请求
balance rdp-cookie(name)表示根据据cookie(name)来锁定并哈希每一次TCP请求。
登录rabbitMQ后台监控
默认已经有一个guest的管理员用户密码guest但是这个用户不能远程登录只能在本机访问登录所以必须添加一个用户可以远程登录