RabbitMQ集群部署

1.rabbitmq组建集群


1)安装rabbitmq-server
yum install rabbitmq-server


2)在一个节点上面启动
service rabbitmq-server start
3)拷贝/var/lib/rabbitmq/.erlang.cookie  到其他节点的/var/lib/rabbitmq/目录下,注意保持权限一致。
所有节点重启服务:service rabbitmq restart


4)查看节点信息,正常情况如下:
rabbitmqctl cluster_status
Cluster status of node rabbit@control ...
[{nodes,[{disc,[rabbit@control]}]},
{running_nodes,[rabbit@control]},
{partitions,[]}]
...done.
5)将node-3连接到control节点            #测试能否在线水平扩容
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@control
rabbitmqctl start_app
6)再查看下所有节点集群信息
[root@control ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@control ...
[{nodes,[{disc,[rabbit@control,'rabbit@node-3']}]},
 {running_nodes,['rabbit@node-3',rabbit@control]},
 {cluster_name,<<"rabbit@control">>},
 {partitions,[]}]
...done.
表示加入集群成功
7)创建用户和配置权限,在任意节点即可
#创建用户和密码
rabbitmqctl add_user openstack openstack 
#给用户配置角色
rabbitmqctl set_user_tags openstack administrator
#给用户配置权限
rabbitmqctl set_permissions -p / openstack ".*" ".*" ".*"
8)开启rabbitmq镜像功能,需要基于rabbitmq策略来实现。
rabbitmqctl set_policy -p /  ha-allqueue "." '{"ha-mode":"all"}'
# -p  表示命名空间,/  表示根目录
#对队列名称以 ’hello‘ 开头的所有队列进行镜像,并在集群的两个节点上完成镜像,policy的设置命令为:
rabbitmqctl  set_policy  hello-ha  "^hello"  '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'



2、Rabbitmq相关命令
####命令###
rabbitmqctl list_users  #查看当前用户
rabbitmqctl list_policies  #查看策略
rabbitmqctl list_queues  #查看消息队列


3、其他资料
OpenStack 官方建议至少使用三节点 RabbitMQ 集群,而且推荐配置是使用镜像队列。对于测试和演示环境,使用两节点也是可以。以下OpenStack 服务都支持这种 A/A 形式的 RabbitMQ:
  • 计算服务
  • 块设备存储服务
  • 网络服务
  • Telemetry
OpenStack 支持如下的 RabbitMQ 配置:


rabbit_hosts=rabbit1:5672,rabbit2:5672,rabbit3:5672:所有RabbitMQ 服务列表
rabbit_retry_interval=1: 连接失败时候的重试间隔
rabbit_retry_backoff=2: How long to back-off for between retries when connecting to RabbitMQ。不太明白其含义。
rabbit_max_retries=0:最大重试次数。0 表示一直重试
rabbit_durable_queues=true:true 的话表示使用持久性队列,Kilo 中默认为 false。
rabbit_ha_queues=true: 设置为 true 的话则使用镜像队列,并设置 x-ha-policy 为 all;但是 Kilo 中其默认值为 false。


**************
4、问题解决:
1.rabbitmq重启失败,看日志提示如下信息
=INFO REPORT==== 20-Sep-2016::23:32:41 ===
Error description:
   {could_not_start,rabbit,
       {bad_return,
           {{rabbit,start,[normal,[]]},
            {'EXIT',
                {rabbit,failure_during_boot,
                    {error,
                        {timeout_waiting_for_tables,
                            [rabbit_user,rabbit_user_permission,rabbit_vhost,
                             rabbit_durable_route,rabbit_durable_exchange,
                             rabbit_runtime_parameters,
                             rabbit_durable_queue]}}}}}}}
 

解决办法:

应该是mnesia数据库出现了问题,清除/var/lib/rabbitmq/mnesia/rabbit@node-3目录下所有文件,然后重启成功





参考文档:
1. http://www.cnblogs.com/sammyliu/p/4730517.html
2. http://www.rabbitmq.com/clustering.html  官方文档

你可能感兴趣的:(openstack,openstack,HA)