2019.01
高可用部署方案
(Openstack)
解决方案加速器
1
目录
1 部署环境准备............................................................................................................................ 4
1.1 物理环境.............................................................................................................................4
1.1.1 组件............................................................................................................................. 4
1.1.2 拓扑结构.................................................................................................................... 4
1.1.3 整体规划.................................................................................................................... 5
1.2 基础环境.............................................................................................................................5
1.2.1 设置 hosts..................................................................................................................5
1.2.2 设置 NTP....................................................................................................................6
1.2.3 关闭防火墙和 selinux............................................................................................ 6
1.2.4 配置 yum 源..............................................................................................................7
2 基础服务组件部署................................................................................................................... 8
2.1 Mariadb 集群安装........................................................................................................... 8
2.2
RabbitMQ 集群安装..................................................................................................... 11
2.3 Memcached 集群安装................................................................................................. 12
3 高可用组件部署..................................................................................................................... 13
3.1
Pacemaker 安装.............................................................................................................13
3.1.1 安装 pacemaker.................................................................................................... 13
3.1.2 构建集群..................................................................................................................13
3.1.3 启动...........................................................................................................................14
3.1.4 设置属性..................................................................................................................16
3.1.5 配置 VIP 资源.........................................................................................................17
3.1.6
High availability management..........................................................................17
3.2
Haproxy 集群安装.........................................................................................................18
3.2.1 安装 Haproxy......................................................................................................... 18
3.2.2 配置 haproxy.cfg...................................................................................................18
3.2.3 配置内核参数.........................................................................................................22
3.2.4 启动...........................................................................................................................22
3.2.5 设置 PCS 资源........................................................................................................23
4 Openstack 核心组件部署....................................................................................................23
4.1
Controller 节点...............................................................................................................23
2
4.1.1
4.1.2
4.1.3
4.1.4
4.1.5
4.1.6
Keystone 集群部署...............................................................................................24
Glance 集群部署................................................................................................... 30
Nova 集群部署...................................................................................................... 35
Neutron 集群部署................................................................................................ 42
Horizon 集群部署.................................................................................................51
Cinder 集群部署....................................................................................................53
4.2
Compute 节点................................................................................................................ 59
4.2.1
4.2.2
Nova 集群部署...................................................................................................... 59
Neutron 集群部署................................................................................................ 63
5 遇到的问题...............................................................................................................................66
5.1 MariaDB 数据库的连接数超上限.............................................................................66
5.2 Nova 同步数据时报错................................................................................................. 67
5.3 执行 openstack 任何命令偶尔会报 500 错误......................................................67
5.4
Dashboard 访问出错....................................................................................................68
5.5 新建实例处于错误状态...............................................................................................68
5.6 集群中所有的 Mariadb 挂掉,如何重启...............................................................69
3
1 部署环境准备
1.1 物理环境
物理环境主要包括部署的组件、设计的拓扑结构以及节点的整体规划。
1.1.1 组件
组件
Centos
7.4
openstack
queen
1.1.2 拓扑结构
版本
说明
三 个 Controller 和 两 个
Compute 节点都使用同一
个版本的操作系统。
1.
说明:
congtroller 节点运行 keystone、glance、horizon、nova、neutron、cinder 等管理相关
组件以及 openstack 相关的基础服务
compute 节点运行 nova-compute,neutron-linuxbridge-agent 等相关服务
2.
3. 控制节点网络:
4
管理网络:含 host os 管理,api 等网络,如果生产环境允许,建议各逻辑网络使用独
立的物理网络,api 区分 admin/internal/public 接口,对客户端只开放 public 接口
外部网络:主要针对 guest os 访问 internet
租户(虚机)vlan 网络:guest os 之间通讯的网络,采用 vlan 方式;
4. 计算节点网络:
管理网络:含 host os 管理,api,ceph-public 等网络;
租户(虚机)vlan 网络:guest os 之间通讯的网络,采用 vlan 方式;
5. 前端采用 haproxy 做高可用;
无 状 态 的 服 务 , 如 xxx-api , 采 取 active/active 的 模 式 运 行 ; 有 状 态 的 服 务 , 如
neturon-xxx-agent,cinder-volume 等,建议采取 active/passive 的模式运行;自身具有集
群机制的服务,如 rabbitmq,memcached 等采用本身的集群机制即可。
1.1.3 整体规划
服务器
Controller01
Controller02
Controller03
服务
1. keystone
2. glance-api , glance-registry
3.nova-api,nova-conductor,nova-consoleauth,nova-schedule
r, nova-novncproxy
说明
1. 控 制 节 点:
keystone, glance,
horizon, nova 、
neutron 、 cinder
4.neutron-api,neutron-linuxbridge-agent,neutron-dhcp-agen
管理组件
t, neutron-metadata-agent, neutron-l3-agent
5. cinder-api, cinder-schedulera、cinder-volume
6. dashboard
7. mariadb, rabbitmq, memcached 等
1. nova-compute
2. neutron-linuxbridge-agent
Compute01
Compute02
2. openstack
基础服务
1.计算节点:
hypervisor(kvm);
2.网络节点:
虚机网络等;
1.2 基础环境
1.2.1 设置 hosts
所有节点保持一致的 hosts 即可,以 controller01 节点为例;
[root@controller01 ~]# vi /etc/hosts
5
1.2.2 设置 NTP
所有节点保持时钟同步,以 controller01 节点为例
[root@controller01 ~]# yum install chrony -y
编辑/etc/chrony.conf 文件,设置”192.168.10.100”为时钟源,同时设置 3 个控制节点作
为”备用”时钟源;
允许”192.168.10.0/24”网段主机从本地同步时钟
[root@controller01 ~]# egrep -v "^$|^#" /etc/chrony.conf
server 192.168.10.2 iburst
server controller01 iburst
server controller02 iburst
server controller03 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.10.0/24
logdir /var/log/chrony
设置开机启动,并重启
[root@controller01 ~]# systemctl enable chronyd.service
[root@controller01 ~]# systemctl restart chronyd.service
查看状态
[root@controller01 ~]# systemctl status chronyd.service
[root@controller01 ~]# chronyc sources -v
1.2.3 关闭防火墙和 selinux
第一步设置 selinux 为 disabled
6
[root@controller ~]# vi /etc/selinux/config
enforcing - SELinux security policy is enforced.
permissive - SELinux prints warnings instead of enforcing.
disabled - No SELinux policy is loaded.
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#
#
#
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#
#
#
SELINUXTYPE=targeted
targeted - Targeted processes are protected,
minimum - Modification of targeted policy. Only selected processes are protected.
mls - Multi Level Security protection.
第二步:[root@controller ~]# systemctl disable firewalld
1.2.4 配置 yum 源
在/etc/yum.repos.d/目录删除其它的 yum 源,配置自己的 Yum 源,命令如下:
vi /etc/yum.repos.d/CentOS-Base.repo
配置内容如下:
[base]
name=CentOS-$releasever - Base
baseurl=http://114.67.224.50/base/
gpgcheck=0
enabled=1
[updates]
name=CentOS-$releasever - Updates
baseurl=http://114.67.224.50/updates/
gpgcheck=0
enabled=1
[rdo-qemu-ev]
name=RDO QEMU EV
baseurl=http://114.67.224.50/rdo-qemu-ev/
gpgcheck=0
enabled=1
[openstack-queens]
name=OpenStack Queens Repository
7
baseurl=http://114.67.224.50/openstack-queens/
enabled=1
gpgcheck=0
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://114.67.224.50/epel/
enabled=1
gpgcheck=0
2 基础服务组件部署
2.1 Mariadb 集群安装
1. 安装 mariadb
# 在全部 controller 节点安装 mariadb,以 controller01 节点为例
[root@controller01 ~]# yum install mariadb mariadb-server python2-PyMySQL -y
# 安装 galera 相关插件,利用 galera 搭建集群
[root@controller01 ~]# yum install mariadb-server-galera mariadb-galera-common
galera xinetd rsync -y
2. 初始化 mariadb
# 在全部控制节点初始化数据库密码,以 controller01 节点为例;
# root 初始密码为空
[root@controller01 ~]# systemctl restart mariadb.service
[root@controller01 ~]# mysql_secure_installation
Enter current password for root (enter for none):
Set root password? [Y/n] y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
3. 修改 mariadb 配置文件
# 在全部控制节点/etc/my.cnf.d/目录下新增 openstack.cnf 配置文件,主要设置集群同
步相关参数,以 controller01 节点为例,个别涉及 ip 地址/host 名等参数根据实际情况修改
[root@controller01 my.cnf.d]# cat /etc/my.cnf.d/openstack.cnf
[mysqld]
binlog_format = ROW
bind-address = 192.168.10.2
default-storage-engine = innodb
8