您的位置:首页 > 运维架构

openstack HA--1(rabbitMQ cluster)

2014-06-19 11:27 357 查看
主要参考了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退出



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



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

chkconfig qpidd off
chkconfig  rabbitmq-server on


拷贝erlang cookie到各个节点


scp/var/lib/rabbitmq/.erlang.cookie root@HAtest2:/var/lib/rabbitmq/.erlang.cookie<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"> </span>


使用 -detached 参数运行各节点
# rabbitmqctl stop
# rabbitmq-server -detached
 
将node2 与 node1 组成集群:

[root@HAtest2yum.repos.d]# rabbitmqctl stop
Stoppingand halting node rabbit@HAtest2 ...
...done.
[root@HAtest2yum.repos.d]# rabbitmq-server -detached
Warning:PID file not written; -detached was passed.
[root@HAtest2yum.repos.d]# rabbitmqctl stop_app
Stoppingnode rabbit@HAtest2 ...
...done.
[root@HAtest2yum.repos.d]# rabbitmqctl join_cluster rabbit@HAtest1
Clusteringnode rabbit@HAtest2 with rabbit@HAtest1 ...
...done.
[root@HAtest2yum.repos.d]# 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


然后新建用户 

<pre name="code" class="html">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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息