RabbitMQ集群安装配置 环境: CentOS 6.5 x64 otp_src_19.1.tar.gz rabbitmq-server-generic-unix-3.6.6.tar.xz 集群信息: ①节点1:172.16.4.93 主机名:SHVM-RMQ01-4-93 ②节点2:172.16.4.94 主机名:SHVM-RMQ02-4-94 ③节点3:172.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 ③开放15672,25672,5672,5671,4369端口 编辑/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),但是这个用户不能远程登录,只能在本机访问登录,所以必须添加一个用户可以远程登录