rabbitmq的部署和HA集群搭建

安装


安装环境:

系统:CentOS7.3

yum源:这里使用openstack queens的源

# yum install centos-release-openstack-queens

安装rabbitmq

# yum install rabbitmq-server -y


启动服务

# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service

 

配置用户和权限

# rabbitmqctl add_user test test
Creating user "test" ...
# rabbitmqctl set_permissions test ".*" ".*" ".*"
Setting permissions for user "test" in vhost "/" ...

 

服务配置文件示例

# cat /etc/rabbitmq/rabbitmq.config
[
 {rabbit,
  [
    {tcp_listeners, [{"192.168.1.47", 5672}]},         #rabbitmq监听ip和port
        {cluster_partition_handling, pause_minority},
    {loopback_users, []},                             #loopback_user列表
        {vm_memory_high_watermark, 0.4}               #可以使用的内存百分比,默认为0.4,即40%物理内存
  ]},

 {log_levels,
  [
    {connection, info}                                #log level
  ]},

 {rabbitmq_management,
 [
  {listener, [{port, 15672},                          #管理页面监听的port
              {ip, "192.168.1.47"},                    #管理页面监听的ip
              {ssl, false}]}                          #是否使用ssl
 ]}
].


开启web


启用插件

# rabbitmq-plugins enable rabbitmq_management
The folowing plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management


重启rabbitmq-server

# systemctl restart rabbitmq-server


使用web链接http://$ip:15672/ 即可访问。

集群配置


前提条件:

        1.两台或以上安装好rabbitmq-server的服务器,选一台做主节点,其他做从节点

        2.在所有节点配置好hosts到ip的解析(或者dns中配置主机名到ip的解析)

配置集群

演示将192.168.1.48和192.168.1.47组成一个集群,然后在将192.168.1.48加入到该集群

停止所有节点的rabbitmq-server服务,从一台节点拷贝.erlang.cookie到其他节点

# systemctl stop rabbitmq-server.service
 
# systemctl stop rabbitmq-server.service
# scp /var/lib/rabbitmq/.erlang.cookie root@192.168.1.48:/var/lib/rabbitmq/.erlang.cookie


注意,拷贝完成后检查一下.erlang.cookie文件所有者所属组和权限,所有节点必须为下面权限,否则集群不能成功

# ll /var/lib/rabbitmq/.erlang.cookie 
-r-------- 1 rabbitmq rabbitmq 20 Jan  8 00:00 /var/lib/rabbitmq/.erlang.cookie

 

启动所有节点,主节点启动后,查看一下集群名称,在从节点执行加入集群操作(加入集群如果带--ram就加入的是内存节点,如果不带,默认加入的是磁盘节点)

# systemctl start rabbitmq-server.service
# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-47' ...
[{nodes,[{disc,['rabbit@test-192-168-1-47',
 
# systemctl start rabbitmq-server.service
# rabbitmqctl stop_app
# rabbitmqctl join_cluster rabbit@test-192-168-1-47


完成后查看集群状态

# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-48' ...
[{nodes,[{disc,['rabbit@test-192-168-1-47',
                'rabbit@test-192-168-1-48']}]},
 {running_nodes,['rabbit@test-192-168-1-47',
                 'rabbit@test-192-168-1-48']},
 {cluster_name,<<"rabbit@test-192-168-1-47">>},
 {partitions,[]},
 {alarms,[{'rabbit@test-192-168-1-47',[]},
          {'rabbit@test-192-168-1-48',[]}]}]


配置HA policy

# rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
Setting policy "ha-all" for pattern "^(?!amq\\.).*" to "{\"ha-mode\": \"all\"}" with priority "0" ...
# rabbitmqctl list_policies
Listing policies ...
/    ha-all    all    ^(?!amq\\.).*    {"ha-mode":"all"}    0


rabbitmq集群中做了HA policy以后,使用rabbitmq的组件配置中需要有下面内容

 

[oslo_messaging_rabbit]
...
rabbit_ha_queues=true 


rabbitmq 3.3.0及以上版本用户默认为本地用户,对于集群来说,只能访问集群的主节点,需要在配置文件加入如下内容

# vi /etc/rabbitmq/rabbitmq.config
[{rabbit, [{loopback_users, []}]}].


这样,用户就可以同时访问集群中的所有节点了。

集群增加节点


在需要扩容节点安装rabbitmq

# yum install rabbitmq-server -y

 


在所有节点配置好hosts到ip的解析(或者dns中配置主机名到ip的解析)

# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.41    test-192-168-1-41
192.168.1.47    test-192-168-1-47
192.168.1.48    test-192-168-1-48

 


参考配置集群内容,将节点加入到集群

验证集群

# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-47' ...
[{nodes,[{disc,['rabbit@test-192-168-1-41',
                'rabbit@test-192-168-1-47',
                'rabbit@test-192-168-1-48']}]},
 {running_nodes,['rabbit@test-192-168-1-48',
                 'rabbit@test-192-168-1-41',
                 'rabbit@test-192-168-1-47']},
 {cluster_name,<<"rabbit@test-192-168-1-41">>},
 {partitions,[]},
 {alarms,[{'rabbit@test-192-168-1-48',[]},
          {'rabbit@test-192-168-1-41',[]},
          {'rabbit@test-192-168-1-47',[]}]}]

 

节点移出集群


使用下面命令,可以将当前节点移出集群

# rabbitmqctl stop_app
Stopping node 'rabbit@test-192-168-1-48' ...
# rabbitmqctl reset
Resetting node 'rabbit@test-192-168-1-48' ...
# rabbitmqctl cluster_status
Cluster status of node 'rabbit@test-192-168-1-48' ...
[{nodes,[{disc,['rabbit@test-192-168-1-48']}]},{alarms,[]}]

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值