高可用OpenStack(Queen版)集群-1. 集群环境
参考文档:
- Install-guide:https://docs.openstack.org/install-guide/
- OpenStack High Availability Guide:https://docs.openstack.org/ha-guide/index.html
- 理解Pacemaker:http://www.cnblogs.com/sammyliu/p/5025362.html
一.环境
1. 组件
组件 |
版本 |
Remark |
centos |
7.4 |
controller: 4c12g (测试环境,亲测8g内存不足以支持全部服务;另外并没有考虑存储空间,实际生产环境日志量较大,对后端存储有一定要求) compute: 8c8g (测试环境) yum源已设置为国内的aliyun:https://opsx.alibaba.com/mirror |
openstack |
queen |
|
ceph |
v12.2.4 luminous |
2. 拓扑(逻辑)
- congtroller节点运行keystone,glance,horizon,nova&neutron&cinder管理相关组件,ceph-mon&ceph-mgr(非openstack服务),另外openstack相关的基础服务;
- compute节点运行nova-compute,neutron-linuxbridge-agent,cinder-volume(后经验证,如果后端使用共享存储,建议部署在controller节点,可通过pacemaker控制运行模式,但写文档时,此验证环境的cinder-volume部署在compute节点)等,另有计算虚拟化kvm,ceph-osd等;
- 控制节点网络:
管理网络:含host os管理,api,ceph-public等网络,如果生产环境允许,建议各逻辑网络使用独立的物理网络,api区分admin/internal/public接口,对客户端只开放public接口;
外部网络:主要针对guest os访问internet/外部的floating ip;
租户(虚机)隧道网络(与vlan网络共存或2选1):guest os之间通讯的网络,采用vxlan/gre等方式;
租户(虚机)vlan网络(与隧道网络共存或2选1):guest os之间通讯的网络,采用vlan方式;
- 计算节点网络:
管理网络:含host os管理,api,ceph-public等网络;
存储网络:存储集群内部通讯,数据复制同步网络,与外界没有直接联系;
租户(虚机)隧道网络(与vlan网络共存或2选1):guest os之间通讯的网络,采用vxlan/gre等方式;
租户(虚机)vlan网络(与隧道网络共存或2选1):guest os之间通讯的网络,采用vlan方式;
- 采用self-service-networks提供自助网络服务,provider networks不支持专有网络,需要依靠外部基础设施提供3层路由与增值服务(如lbaas,fwaas等);
- 前端采用haproxy做高可用;
- 无状态的服务,如xxx-api,采取active/active的模式运行;有状态的服务,如neturon-xxx-agent,cinder-volume等,建议采取active/passive的模式运行(因前端采用haproxy,客户端的多次请求可能会被转发到不同的控制节点,如果客户端请求被负载到无状态信息的控制节点,可能会导致操作请求失败);自身具有集群机制的服务,如rabbitmq,memcached等采用本身的集群机制即可。
3. 整体规划
Host |
IP |
Service |
Remark |
controller01 |
eth0(Management + API + Message + Storage Public Network): 172.30.200.31 eth1(External Network): 172.30.201.31 eth2(Tunnel Tenant Network):10.0.0.31 eth3(Vlan Tenant Network) |
1. keystone |
1.控制节点: keystone, glance, horizon, nova&neutron管理组件; 2.网络节点:虚机网络,L2/L3,dhcp,route,nat等; 3.存储节点:调度,监控(ceph)等组件; 4.openstack基础服务 |
controller02 |
eth0(Management + API + Message + Storage Public Network): 172.30.200.32 eth1(External Network): 172.30.201.32 eth2(Tunnel Tenant Network):10.0.0.32 eth3(Tenant Network) |
1. keystone |
1.控制节点: keystone, glance, horizon, nova&neutron管理组件; 2.网络节点:虚机网络,L2/L3,dhcp,route,nat等; 3.存储节点:调度,监控(ceph)等组件; 4.openstack基础服务 |
controller03 |
eth0(Management + API + Message + Storage Public Network): 172.30.200.33 eth1(External Network): 172.30.201.33 eth2(Tunnel Tenant Network):10.0.0.33 eth3(Tenant Network) |
1. keystone |
1.控制节点: keystone, glance, horizon, nova&neutron管理组件; 2.网络节点:虚机网络,L2/L3,dhcp,route,nat等; 3.存储节点:调度,监控(ceph)等组件; 4.openstack基础服务 |
compute01 |
eth0(Management + Message + Storage Public Network): 172.30.200.41 eth1(Storage Cluster Network):10.0.254.41 eth2(Tunnel Tenant Network):10.0.0.41 eth3(Tenant Network) |
1. nova-compute |
1.计算节点:hypervisor(kvm); 2.网络节点:虚机网络等; 3.存储节点:卷服务等组件 |
compute02 |
eth0(Management + Message + Storage Public Network): 172.30.200.42 eth1(Storage Cluster Network):10.0.254.42 eth2(Tunnel Tenant Network):10.0.0.42 eth3(Tenant Network) |
1. nova-compute |
1.计算节点:hypervisor(kvm); 2.网络节点:虚机网络等; 3.存储节点:卷服务等组件 |
compute03 |
eth0(Management + Message + Storage Public Network): 172.30.200.43 eth1(Storage Cluster Network):10.0.254.43 eth2(Tunnel Tenant Network):10.0.0.43 eth3(Tenant Network) |
1. nova-compute |
1.计算节点:hypervisor(kvm); 2.网络节点:虚机网络等; 3.存储节点:卷服务等组件 |
二.基础环境
1. 设置hosts
# 所有节点保持一致的hosts即可,以controller01节点为例;
[root@controller01 ~]# cat /etc/hosts
2. 设置ntp
# 所有节点保持时钟同步,以controller01节点为例
[root@controller01 ~]# yum install chrony -y
# 编辑/etc/chrony.conf文件,设置”172.20.0.252”为时钟源,同时设置3个控制节点作为”备用”时钟源;
# 允许”172.30.200.0/24”网段主机从本地同步时钟
[root@controller01 ~]# egrep -v "^$|^#" /etc/chrony.conf
server 172.20.0.252 iburst
server controller01 iburst
server controller02 iburst
server controller03 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 172.30.200.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
3. 设置openstack packages
# 安装queen版yum源
[root@controller01 ~]# yum install centos-release-openstack-queens -y
[root@controller01 ~]# yum upgrade -y # 安装openstackclient
[root@controller01 ~]# yum install python-openstackclient -y # selinux开启时需要安装openstack-selinux,这里已将seliux设置为默认关闭
[root@controller01 ~]# yum install openstack-selinux -y
4. 设置iptables
# 全部节点提前统一设置完成iptables,以controller01节点为例;
# 初始环境已使用iptables替代centos7.x自带的firewalld,同时关闭selinux;
[root@controller01 ~]# vim /etc/sysconfig/iptables
# mariadb
# tcp3306:服务监听端口;
# tcp&udp4567:tcp做数据同步复制,多播复制同时采用tcp与udp;
# tcp4568:增量状态传输;
# tcp4444:其他状态快照传输;
# tcp9200:心跳检测
-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4444 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4567:4568 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4567 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT # rabbitmq
# tcp4369:集群邻居发现;
# tcp5671,5672:用于AMQP 0.9.1 and 1.0 clients使用;
# tcp5673:非rabbitmq默认使用端口,这里用作hapoxy前端监听端口,避免后端服务与haproxy在1个节点时无法启动的问题;如果使用rabbitmq本身的集群机制,则可不设置此端口;
# tcp15672:用于http api与rabbitadmin访问,后者仅限在management plugin开启时;
# tcp25672:用于erlang分布式节点/工具通信
-A INPUT -p tcp -m state --state NEW -m tcp --dport 4369 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5671:5673 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 15672:15673 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 25672 -j ACCEPT # memcached
# tcp11211:服务监听端口;
-A INPUT -p tcp -m state --state NEW -m tcp --dport 11211 -j ACCEPT # pcs
# tcp2224:pcs web管理服务监听端口,可通过web新建,查看,删除资源等,端口值在/usr/lib/pcsd/ssl.rb文件中设置;
# udp5405:中间件corosync服务集群多播通信端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2224 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 5404:5405 -j ACCEPT # haproxy
# tcp1080:haproxy监听端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 1080 -j ACCEPT # dashboard
# tcp80:dashboard监听端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT # keystone
# tcp35357:admin-api端口;
# tcp5000:public/internal-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 35357 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5000 -j ACCEPT # glance
# tcp9191:glance-registry端口;
# tcp9292:glance-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9191 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9292 -j ACCEPT # nova
# tcp8773:nova-ec2-api端口;
# tcp8774:nova-compute-api端口;
# tcp8775:nova-metadata-api端口;
# tcp8778:placement-api端口;
# tcp6080:vncproxy端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8773:8775 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8778 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6080 -j ACCEPT # cinder
# tcp8776:cinder-api端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8776 -j ACCEPT # neutron
# tcp9696:neutron-api端口;
# udp4789:vxlan目的端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 9696 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 4789 -j ACCEPT # ceph
# tcp6789:ceph-mon端口;
# tcp6800~7300:ceph-osd端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6800:7300 -j ACCEPT [root@controller01 ~]# service iptables restart
高可用OpenStack(Queen版)集群-1. 集群环境的更多相关文章
- openstack高可用集群21-生产环境高可用openstack集群部署记录
第一篇 集群概述 keepalived + haproxy +Rabbitmq集群+MariaDB Galera高可用集群 部署openstack时使用单个控制节点是非常危险的,这样就意味着单个节 ...
- 用Kolla在阿里云部署10节点高可用OpenStack
为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...
- 高可用OpenStack(Queen版)集群-7.Neutron控制/网络节点集群
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- 高可用OpenStack(Queen版)集群-3.高可用配置(pacemaker&haproxy)
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- 高可用OpenStack(Queen版)集群-2.基础服务
参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...
- centos7.4安装高可用(haproxy+keepalived实现)kubernetes1.6.0集群(开启TLS认证)
目录 目录 前言 集群详情 环境说明 安装前准备 提醒 一.创建TLS证书和秘钥 安装CFSSL 创建 CA (Certificate Authority) 创建 CA 配置文件 创建 CA 证书签名 ...
- docker compose搭建redis7.0.4高可用一主二从三哨兵集群并整合SpringBoot【图文完整版】
一.前言 redis在我们企业级开发中是很常见的,但是单个redis不能保证我们的稳定使用,所以我们要建立一个集群. redis有两种高可用的方案: High availability with Re ...
- 【Linux运维-集群技术进阶】Nginx+Keepalived+Tomcat搭建高可用/负载均衡/动静分离的Webserver集群
额.博客名字有点长.. . 前言 最终到这篇文章了,心情是有点激动的. 由于这篇文章会集中曾经博客讲到的全部Nginx功能点.包含主要的负载均衡,还有动静分离技术再加上这篇文章的重点.通过Keepal ...
- 基于 kubeadm 搭建高可用的kubernetes 1.18.2 (k8s)集群二 搭建高可用集群
1. 部署keepalived - apiserver高可用(任选两个master节点) 1.1 安装keepalived # 在两个主节点上安装keepalived(一主一备) $ yum inst ...
随机推荐
- (第一章)改善JavaScript,编写高质量代码。
根据<编写高质量代码改善JavaScript程序的188个建议>这本书,来记录我目前所了解的建议方式. 建议1:警惕Unicode乱码 根据ECMA标准规定JavaScript语言可以使用 ...
- 20165302 2017-2018-2《Java程序设计》课程总结
20165302 2017-2018-2<Java程序设计>课程总结 每周作业汇总 预备作业1 对师生关系的看法 预备作业2 C语言基础调查 预备作业3 安装虚拟机,初步学习虚拟机及常用命 ...
- Python:基础知识(一)
输入 input():接收命令行下输入 1)在py2下:如果你输的是一串文字,要用引号''或者""引起来,如果是数字则不用. 2)在py3下:相当于py2的raw_input(), ...
- dede:arclist调用文章正文全部内容
dede:arclist调用文章正文全部内容 {dede:arclist row='20'} <div class="aboutbox"> <h4>[fie ...
- CCF认证201712-1最小差值
问题描述 给定n个数,请找出其中相差(差的绝对值)最小的两个数,输出它们的差值的绝对值. 输入格式 输入第一行包含一个整数n. 第二行包含n个正整数,相邻整数之间使用一个空格分隔. 输出格式 输出一个 ...
- iOS 折线图、柱状图的简单实现
首先我得感谢某位博主,非常抱歉,因为之前直接下载博主提供这篇文章的demo,然后去研究了,没记住博主的名字.再次非常感谢. 而这个dome我又修改了一些,完善了一些不美观的bug,当然还有,后面会陆续 ...
- 文本处理三剑客之 awk
GAWK:报告生成器,格式化文本输出 awk [options] ‘program’ var=value file… awk [options] -f programfile var=value fi ...
- 定心丸!ZipperDown漏洞分析与修复建议
本文由 网易云发布. 近日,盘古实验室对外披露了ZipperDown漏洞,该漏洞是盘古团队针对不同客户的iOS应用安全审计的过程中发现的,大约有10%的iOS应用会受到此漏洞的影响. 利用此漏洞可以 ...
- iOS swift项目IM实现,从长连接到数据流解析分析之Socket
iOS swift项目IM实现,从长连接到底层数据解析分析之Socket 一:项目简介: 去年开始接手了一个国企移动项目,项目的需求是实现IM即时通讯功能. * 一期版本功能包括了: ...
- # 20155207王雪纯 实验一 逆向与Bof基础
20155207王雪纯 实验一 逆向与Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字 ...