目录

Openstack-Mitaka 高可用之 概述
    Openstack-Mitaka 高可用之 环境初始化
    Openstack-Mitaka 高可用之 Mariadb-Galera集群部署
    Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署
    Openstack-Mitaka 高可用之 memcache
    Openstack-Mitaka 高可用之 Pacemaker+corosync+pcs高可用集群
    Openstack-Mitaka 高可用之 认证服务(keystone)
    OpenStack-Mitaka 高可用之 镜像服务(glance)
    Openstack-Mitaka 高可用之 计算服务(Nova)
    Openstack-Mitaka 高可用之 网络服务(Neutron)
    Openstack-Mitaka 高可用之 Dashboard
    Openstack-Mitaka 高可用之 启动一个实例
    Openstack-Mitaka 高可用之 测试

环境介绍

openstack内部是遵循AMQP(高级消息队列协议)的基础上采用消息队列进行通信。 nova对请求应答进行异步调用,当请求接收后立即出发一个回调。由于使用了异步通信,不会有用户的动作被长置于等待状态。异步使整个系统变得更加高效。

集群搭建

以下操作三个节点都需要执行:

安装rabbitmq

  1. # yum install rabbitmq-server -y

配置监听地址(每个controller节点都需要配置本地监听地址):

  1. [root@controller1 ~]# vim /etc/rabbitmq/rabbitmq-env.conf # 在RHEL7.2系统上默认是不存在该文件的
  2. RABBITMQ_NODE_IP_ADDRESS=192.168.0.11
  3. RABBITMQ_NODE_PORT=

只启动第一个节点:

  1. [root@controller1 ~]# systemctl start rabbitmq-server

拷贝.erlang.cookie文件到controller2 controller3,注意该文件的权限是400

  1. [root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie controller2:/var/lib/rabbitmq/
  2. .erlang.cookie % .0KB/s :
  3. [root@controller1 ~]# scp /var/lib/rabbitmq/.erlang.cookie controller3:/var/lib/rabbitmq/
  4. .erlang.cookie % .0KB/s :
  5.  
  6. [root@controller1 ~]# ll /var/lib/rabbitmq/.erlang.cookie
  7. -r-------- rabbitmq rabbitmq Nov : /var/lib/rabbitmq/.erlang.cookie
  8. [root@controller2 ~]# chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie
  9. [root@controller3 ~]# chown -R rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

启动controller2、controller3 rabbitmq服务

  1. # systemctl start rabbitmq-server

将controller2、controller3 与controller1组成集群

Controller2:

  1. [root@controller2 ~]# rabbitmqctl stop_app
  2. Stopping node rabbit@controller2 ...
  3. [root@controller2 ~]# rabbitmqctl join_cluster rabbit@controller1
  4. Clustering node rabbit@controller2 with rabbit@controller1 ...
  5. [root@controller2 ~]# rabbitmqctl start_app
  6. Starting node rabbit@controller2 ...

Controller3:

  1. [root@controller3 ~]# rabbitmqctl stop_app
  2. Stopping node rabbit@controller3 ...
  3. [root@controller3 ~]# rabbitmqctl join_cluster rabbit@controller1
  4. Clustering node rabbit@controller3 with rabbit@controller1 ...
  5. [root@controller3 ~]# rabbitmqctl start_app
  6. Starting node rabbit@controller3

在任意节点执行 rabbitmqctl cluster_status 查看集群

  1. [root@controller1 ~]# rabbitmqctl cluster_status
  2. Cluster status of node rabbit@controller1 ...
  3. [{nodes,[{disc,[rabbit@controller1,rabbit@controller2,rabbit@controller3]}]},
  4. {running_nodes,[rabbit@controller3,rabbit@controller2,rabbit@controller1]},
  5. {cluster_name,<<"rabbit@controller1">>},
  6. {partitions,[]},
  7. {alarms,[{rabbit@controller3,[]},
  8. {rabbit@controller2,[]},
  9. {rabbit@controller1,[]}]}]

设置镜像队列
在任意一个节点上执行:

  1. [root@controller1 rabbitmq]# rabbitmqctl set_policy ha-all '^(?!amq\.).*' '{"ha-mode": "all"}'
  2. Setting policy "ha-all" for pattern "^(?!amq\\.).*" to "{\"ha-mode\": \"all\"}" with priority "" ...
  3. ...done.

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

在rabbitmq中创建openstack用户

  1. [root@controller1 rabbitmq]# rabbitmqctl add_user openstack openstack
  2. Creating user "openstack" ...
  3. ...done.
  4. [root@controller1 rabbitmq]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
  5. Setting permissions for user "openstack" in vhost "/" ...
  6. ...done.

到此,rabbitmq高可用搭建完毕。

在配置Mariadb-galera和rabbitmq监听地址的时候,rabbitmq配置监听地址尤其要注意,配置如下:

  1. [root@controller1 ~]# chown rabbitmq:rabbitmq /etc/rabbitmq/rabbitmq-env.conf
  2. [root@controller1 ~]# systemctl restart rabbitmq-server
  3. [root@controller1 ~]# netstat -ntplu | egrep
  4. tcp 192.168.0.11: 0.0.0.0:* LISTEN /beam.smp
  5. tcp 0.0.0.0: 0.0.0.0:* LISTEN /beam.smp

rabbitmq-env.conf 说明:
RABBITMQ_NODE_IP_ADDRESS= //IP地址,空串bind所有地址,指定地址bind指定网络接口
RABBITMQ_NODE_PORT=       //TCP端口号,默认是5672
RABBITMQ_NODENAME=        //节点名称。默认是rabbit
RABBITMQ_CONFIG_FILE= //配置文件路径 ,即rabbitmq.config文件路径
RABBITMQ_MNESIA_BASE=     //mnesia所在路径
RABBITMQ_LOG_BASE=        //日志所在路径
RABBITMQ_PLUGINS_DIR=     //插件所在路径

[ Openstack ] Openstack-Mitaka 高可用之 Rabbitmq-server 集群部署的更多相关文章

  1. 高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)

    既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 博客链接:http:// ...

  2. Sentry(v20.12.1) K8S 云原生架构探索,玩转前/后端监控与事件日志大数据分析,高性能+高可用+可扩展+可伸缩集群部署

    Sentry 算是目前开源界集错误监控,日志打点上报,事件数据实时分析最好用的软件了,没有之一.将它部署到 Kubernetes,再搭配它本身自带的利用 Clickhouse (大数据实时分析引擎)构 ...

  3. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  4. 高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南

    原文:http://my.oschina.net/wstone/blog/365010#OSC_h3_13 (WJW)高可用,完全分布式Hadoop集群HDFS和MapReduce安装配置指南 [X] ...

  5. 分布式架构高可用架构篇_01_zookeeper集群的安装、配置、高可用测试

    参考: 龙果学院http://www.roncoo.com/share.html?hamc=hLPG8QsaaWVOl2Z76wpJHp3JBbZZF%2Bywm5vEfPp9LbLkAjAnB%2B ...

  6. HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署

    HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3. ...

  7. JMS之——ActiveMQ 高可用与负载均衡集群安装、配置(ZooKeeper + LevelDB + Static discovery)

    一.说明 从 ActiveMQ 5.9 开始, ActiveMQ 的集群实现方式取消了传统的 Master-Slave 方式,增加了基于ZooKeeper + LevelDB 的 Master-Sla ...

  8. 16套java架构师,高并发,高可用,高性能,集群,大型分布式电商项目实战视频教程

    16套Java架构师,集群,高可用,高可扩展,高性能,高并发,性能优化,设计模式,数据结构,虚拟机,微服务架构,日志分析,工作流,Jvm,Dubbo ,Spring boot,Spring cloud ...

  9. RabbitMQ(6) 集群部署

    单节点部署 rabbitmq单节点部署比较简单,可以使用apt-get等工具快速安装部署. wget -O- https://www.rabbitmq.com/rabbitmq-release-sig ...

  10. 通过LVS+Keepalived搭建高可用的负载均衡集群系统

    1. 安装LVS软件      (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...

随机推荐

  1. 福大软工1816:Alpha(2/10)

    Alpha 冲刺 (2/10) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务: 文字/口头描述: 1.学习qqbot库: 2.实 ...

  2. [LeetCode] 56. Merge Intervals(vector sort)

    /** * Definition for an interval. * struct Interval { * int start; * int end; * Interval() : start(0 ...

  3. maven release版本重复上传error

    A couple things I can think of: user credentials are wrong url to server is wrong user does not have ...

  4. 【python】python 中的三元表达式(三目运算符)

    python中的三目运算符不像其他语言其他的一般都是 判定条件?为真时的结果:为假时的结果 如 result=5>3?1:0 这个输出1,但没有什么意义,仅仅是一个例子.而在python中的格式 ...

  5. BZOJ4477 JSOI2015字符串树(可持久化trie)

    树上建可持久化trie即可,有点过于裸了.darkbzoj过了然而在bzoj一直wa,不知道哪有锅. #include<iostream> #include<cstdio> # ...

  6. hdu 3500 Fling (dfs)

    Fling Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submi ...

  7. [国家集训队]Crash的数字表格 / JZPTAB 莫比乌斯反演

    ---题面--- 题解: $$ans = \sum_{i = 1}^{n}\sum_{j = 1}^{m}{\frac{ij}{gcd(i, j)}}$$ 改成枚举d(设n < m) $$ans ...

  8. 图解WinXP局域网共享设置步骤

    原文链接地址:http://blog.csdn.net/jackinzhou/article/details/8468208 第一章:共享的前提工作 1.更改不同的计算机名,设置相同的工作组! 2.我 ...

  9. BZOJ 4710 [Jsoi2011]分特产 解题报告

    4710 [Jsoi2011]分特产 题意 给定\(n\)个集合,每个集合有相同的\(a_i\)个元素,不同的集合的元素不同.将所有的元素分给\(m\)个不同位置,要求每个位置至少有一个元素,求分配方 ...

  10. 【ZJ选讲·压缩】

    给一个由小写字母组成的字符串(len<=50) 我们可以用一种简单的方法来压缩其中的重复信息. 用M,R两个大写字母表示压缩信息 M标记重复串的开始, R表示后面的一段字符串重复从上一个 ...