openstack HA--1(rabbitMQ cluster)

主要参考了openstack官方HA的文档

http://docs.openstack.org/high-availability-guide/content/index.html

服务器2台

在1台服务器上安装RDO 另一台安装centos6.5

首先采用active/active模式

安装rabbitMQ

安装epel源

rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

参考http://www.rabbitmq.com/install-rpm.html

安装erlang yum install erlang 

下载rabbitMQ

wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.3.2/rabbitmq-server-3.3.2-1.noarch.rpm

安装rabbitmq

rpm --importhttp://www.rabbitmq.com/rabbitmq-signing-key-public.asc

      yum install rabbitmq-server-3.3.2-1.noarch.rpm

节点1:192.168.1.83 HAtest1

节点2:192.168.1.84 HAtest2

修改/etc/hosts文件,加入节点描述

192.168.1.83 HAtest1
192.168.1.84 HAtest2

测试开启rabbitmq

service rabbitmq-server start

或者rabbitmq-server start 执行完这个,好像不会退出,使用ctrl+z退出

openstack HA--1(rabbitMQ cluster)_第1张图片

rdo默认采用qpid,已经安装qpid可能会提示5672端口被占用无法开启,把qpid关闭就好了

openstack HA--1(rabbitMQ cluster)_第2张图片

关闭qpid开机启动 打开rabbitmq开机启动

chkconfig qpidd off
chkconfig  rabbitmq-server on

拷贝erlang cookie到各个节点

scp/var/lib/rabbitmq/.erlang.cookie root@HAtest2:/var/lib/rabbitmq/.erlang.cookie 

使用 -detached 参数运行各节点

# rabbitmqctl stop

# rabbitmq-server -detached

 

将node2 与 node1 组成集群:

[[email protected]]# rabbitmqctl stop
Stoppingand halting node rabbit@HAtest2 ...
...done.
[[email protected]]# rabbitmq-server -detached
Warning:PID file not written; -detached was passed.
[[email protected]]# rabbitmqctl stop_app
Stoppingnode rabbit@HAtest2 ...
...done.
[[email protected]]# rabbitmqctl join_cluster rabbit@HAtest1
Clusteringnode rabbit@HAtest2 with rabbit@HAtest1 ...
...done.
[[email protected]]# rabbitmqctl start_app
Startingnode rabbit@HAtest2 ...
...done.

如果要使用内存节点,则可以使用

node2 #rabbitmqctl join_cluster --ram rabbit@node1 加入集群

遇到

Error:mnesia_unexpectedly_running

需要stop_app  修改完后再start

更多命令可以直接help查询

 

设置镜像队列策略

rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-mode": "all"}'

将所有队列设置为镜像队列,即队列会被复制到各个节点,各个节点状态保持一直。

 

到此,RabbitMQ 高可用集群就已经搭建好了,下面要配置openstack参数。

首先是对rabbitmq的配置,删除默认用户

rabbitmqctl delete_user guest

然后新建用户 

rabbitmqctl add_user openstack_rabbit_useropenstack_rabbit_password
rabbitmqctl set_permissions -p / openstack_rabbit_user".*" ".*" ".*"
rabbitmqctl list_users
rabbitmqctl list_user_permissions openstack_rabbit_user

 
   

配置openstack

参考文档

http://docs.openstack.org/trunk/config-reference/content/configuring-rpc.html

修改每个组件的配置文件 

为了保证不出意外,先把qpid相关的全部注释掉(后面发现不注释好像也不会有问题)

nova.conf
rpc_backend=nova.openstack.common.rpc.impl_kombu
rabbit_ha_queues=True
rabbit_hosts=HAtest1:5672,HAtest2:5672
rabbit_port=5672
rabbit_retry_interval=1
rabbit_retry_backoff=2
rabbit_max_retries=0
rabbit_durable_queues=false
rabbit_userid=mytest
rabbit_password=mytest
neutron.conf
rpc_backend=neutron.openstack.common.rpc.impl_kombu
rabbit_userid=mytest
rabbit_password=mytest
rabbit_ha_queues=True
rabbit_hosts=HAtest1:5672,HAtest2:5672
cinder.conf
rpc_backend=cinder.openstack.common.rpc.impl_kombu
rabbit_ha_queues=True
rabbit_hosts=HAtest1:5672,HAtest2:5672
rabbit_port=5672
rabbit_retry_interval=1
rabbit_retry_backoff=2
rabbit_max_retries=0
rabbit_durable_queues=false
rabbit_userid=mytest
rabbit_password=mytest
ceilometer.conf
rpc_backend=ceilometer.openstack.common.rpc.impl_kombu
rabbit_ha_queues=True
rabbit_hosts=HAtest1:5672,HAtest2:5672
rabbit_port=5672
rabbit_retry_interval=1
rabbit_retry_backoff=2
rabbit_max_retries=0
rabbit_durable_queues=false
rabbit_userid=mytest
rabbit_password=mytest
glance-api.conf
notifier_strategy=rabbit
glance-api.conf
rabbit_ha_queues=True
rabbit_hosts=HAtest1:5672,HAtest2:5672
rabbit_port=5672
rabbit_retry_interval=1
rabbit_retry_backoff=2
rabbit_max_retries=0
rabbit_durable_queues=false
rabbit_userid=mytest
rabbit_password=mytest


配置完成后,重启所有服务

openstack-servicerestart 

结果重启完后认证失败,想到是数据库的问题 果然使用默认的用户名密码数据库访问不了 应该是设置了hosts的问题(未验证)

解决办法是先修改个组件mysql的用户名为root

重启各组件 正常


验证rabbitmq集群在openstack是否起到作用

在节点1关闭rabbitmq

虚拟机创建成功

再关闭节点2 rabbitmq

虚拟机无法创建

说明rabbitmq cluster起到了作用

开启任意节点的rabbitmq后,虚拟机成功创建。

还有加入采用haproxy的方法(未验证)

 

参考文档:http://openstack.redhat.com/RabbitMQ

http://docwiki.cisco.com/wiki/OpenStack_Havana_Release:_High-Availability_Manual_Deployment_Guide#Load_Balancer_Node_Installation

 

你可能感兴趣的:(openstack)