一、集群安装
集群的搭建使用到了三台服务器,分别是:
192.168.2.21 、192.168.2.22、192.168.2.23
为了方便,以上三台服务器使用别名访问,修改/etc/hosts文件,配置如下:
1.安装erlang
安装rabbitmq需要依赖erlang,所以先安装erlang,这里使用rpm方式安装,首先下载erlang,
# wget http://www.rabbitmq.com/releases/erlang/erlang-20.1-1.el6.x86_64.rpm,如果下载速度比较慢,可以访问https://www.erlang-solutions.com/resources/download.html找到自己需要的版本下载,执行命令安装
# rpm -ivh esl-erlang_20.1-1~centos~7_amd64.rpm,如果出现以下错误
先安装erlang相关依赖
# yum install epel-release
# yum install unixODBC unixODBC-devel wxBase wxGTK SDL wxGTK-gl
再执行 # rpm -ivh esl-erlang_20.1-1~centos~7_amd64.rpm,
看一下是否安装成功 #erl -version
2.安装rabbitmq
先下载rabbitmq
# wget rabbitmq-server-3.6.12-1.el6.noarch.rpm
同样使用rpm方式安装
# rpm -ivh --nodeps rabbitmq-server-3.6.12-1.el6.noarch.rpm
也可以使用yum方式安装,
# yum install rabbitmq-server-3.6.12-1.el6.noarch.rpm
二、集群搭建
1.启动服务
# systemctl start rabbitmq-server.service
查看节点状态
# systemctl status rabbitmq-server.service
查看节点集群状态:
# rabbitmqctl cluster_status
2.从节点加入到主节点
将zk-01作为主节点,zk-02、zk-03加入到主节点中,
先停止zk-02服务
# systemctl stop rabbitmq-server.service
由于三台服务器需要搭建集群,所以使用的cookie信息是一样的,服务在启动的使用,会获取.eralng.cookie文件的信息,加入到主节点时会去做认证,所以需要将主节点的.erlang.cookie文件拷贝到其他节点中,
# scp /var/lib/rabbitmq/.erlang.cookie root@zk-02:/var/lib/rabbitmq/.erlang.cookie
由于安装erlang和rabbitmq的方式均使用rpm方式安装,所以安装完成后,.erlang.cookie会自动生成,一般是在
/var/lib/rabbitmq目录下,如果使用安装包方式安装,.erlang.cookie文件在根目录下
使用后台启动zk-02
# rabbitmqctl -detached
将zk-02加入到zk-01中
# rabbitmqctl stop_app
# rabbitmqctl reset
# rabbitmqctl join_cluster rabbit@zk-01
# rabbitmqctl start_app
# rabbitmqctl cluster_status
可以看到zk-02已成功加入zk-01,查看zk-01集群状态
同样zk-03使用以上方式加入到zk-01中
3.修改集群中节点状态
# rabbitmqctl stop_app
# rabbitmqctl change_cluster_node_type ram
# rabbitmqctl start_app
不指定时默认为disc(磁盘节点),可以指定为ram(内存节点)
三、配置rabbitmq管理界面
1.启用web插件
# rabbitmq-plugins enable rabbitmq_management
2.启用日志跟踪插件
# rabbitmq-plugins enable rabbitmq_tracing
# rabbitmqctl trace_on -p mq //打开trace
# rabbitmqctl trace_off //关闭trace
3.配置账号
# rabbitmqctl add_user admin admin //添加账号
# rabbitmqctl set_user_tags admin administrator //添加权限
# rabbitmqctl change_password username newpassword //修改用户的密码
# rabbitmqctl delete_user guest //删除账号
# rabbitmqctl list_users //查看当前用户列表
登录管理界面
4.创建镜像队列
以上集群模式不能保证高可用,队列中的内容无法进行复制,当一个节点出现故障,只能重启,为保证服务的高可用,需要创建镜像队列。
使用命令方式创建一个策略mirror_queue,策略模式为 all 即复制到所有节点,包含新增节点,策略正则表达式为 “^” 表示所有匹配所有队列名称。
# rabbitmqctl set_policy --priority 0 --apply-to queues mirror_queue "^queue_" '{"ha-mode":"all"}'