一、脚本简介
Openstack-HA-Install-Shells脚本为本人在Openstack实践过程中总结所得,该脚本使用Shell撰写,用于Openstack高可用集群的部署,实现了Pacemaker、Galera、RabbitMQ、Openstack、Ceph等集群的半自动化部署,可用于中小型规模Openstack云平台的快速部署,本人也基于该脚本完成线上云环境的部署。为提高部署效率,本脚本采用了pssh并行执行命令的形式,但Ceph存储集群的部署仍采用ceph-deploy方式进行,未做并行优化。
二、部署环境
1、软件环境
CentOS7.2+MariaDB+Openstack-Mitaka+Ceph-Jewel
本脚本采用离线安装源安装,示例中已提前准备好CentOS-7.2-X86_64、Openstack-Mitaka、Mariadb-10.1、Ceph-Jewel、EPEL、Ceph-deploy离线安装包,并利用FTP共享,如果采用在线安装源,需修改conf/yum.repos.d/REPO安装源配置。
2、硬件环境
- 3个控制节点+3个网络节点(也可以与控制节点融合)+至少一个计算节点
- 管理网、虚拟机网、存储网三个网段
- 每个节点具备3张网卡,网卡需要统一命名, 默认要求各节点的三个网卡IP尾数相同(脚本自动更正)
- 额外需要两个IP,用于Openstack Rest API和Redis集群的VIP
- 每个节点至少一块独立数据盘,用于Ceph OSD盘(可根据实际需求变更)
3、HA部署架构
- 控制节点集群高可用架构
- 网络节点高可用架构
- Ceph统一存储集群
4、部署顺序
- 基础环境配置:包括SSH配置、网络配置、主机名及hosts修改、时间同步配置、防火墙及SELinux配置、离线Yum安装源配置;
- Openstack管理集群部署:首先进行Pacemaker集群、Haproxy、Galera集群、Rabbitmq集群、Memcached、Mongodb集群配置,然后在管理集群上配置Openstack的keystone、glance、nova、neutron(其中包括网络节点的高可用集群配置)、dashboard、cinder、ceilometer、aodh服务配置;
- Openstack计算&存储集群部署:计算节点和存储节点融合,配置包括SSH配置、Ceph-deploy安装、Ceph存储集群配置、Ceph客户端认证、Openstack计算节点服务部署;
- 维护操作:非必须,包括网络、镜像、虚拟机、云硬盘的云资源创建测试,后期增加计算节点的实用脚本。
三、如何使用
1、部署前准备
规划实际部署环境的HA架构,按照部署环境的软、硬件要求,准备好部署前工作:包括操作系统安装、网络规划、管理网配置、离线安装包的准备。
2、修改部署环境变量
根据实际环境,配置部署变量初始化0-set-config.sh,设置节点主机名、IP、VIP、网卡信息、网段信息、安装源、OSD磁盘信息、密码信息,脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
### 设置部署节点主机名和IP,nodes_map为全部节点、controller_map为三个控制节点、networker_map为三个网络节点、hypervisor_map为计算节点(与存储节点融合)、monitor_map为Ceph集群的Monitor节点 declare -A nodes_map=(["controller01"]="192.168.2.11" ["controller02"]="192.168.2.12" ["controller03"]="192.168.2.13" ["network01"]="192.168.2.14" ["network02"]="192.168.2.15" ["network03"]="192.168.2.16" ["compute01"]="192.168.2.17" ["compute02"]="192.168.2.18" ["compute03"]="192.168.2.19") declare -A controller_map=(["controller01"]="192.168.2.11" ["controller02"]="192.168.2.12" ["controller03"]="192.168.2.13"); declare -A networker_map=(["network01"]="192.168.2.14" ["network02"]="192.168.2.15" ["network03"]="192.168.2.16"); declare -A hypervisor_map=(["compute01"]="192.168.2.17" ["compute02"]="192.168.2.18" ["compute03"]="192.168.2.19"); declare -A monitor_map=(["controller01"]="192.168.2.11" ["network01"]="192.168.2.14" ["compute01"]="192.168.2.17"); declare nodes_name=(${!nodes_map[@]}); declare controller_name=(${!controller_map[@]}); declare networker_name=(${!networker_map[@]}); declare hypervisor_name=(${!hypervisor_map[@]}); ### 后期需要增加的计算节点 declare -A additionalNodes_map=(["compute04"]="192.168.2.20"); ### NTP主机 ref_host=controller01 ### 网络HA集群默认部署节点(必须存在该主机名的节点) network_host=network01 ### 网络节点是否单独部署,若是设置为yes,否设置为no networker_split=no ### 计算节点默认部署节点(必须存在该主机名的节点) compute_host=compute01 ### 设置虚拟IP,virtual_ip为openstack服务的虚拟IP,virtual_ip_redis为Redis为虚拟IP virtual_ip=192.168.2.241 virtual_ip_redis=192.168.2.242 ### 设置网卡信息 local_nic为管理网网卡名称 data_nic为虚拟网网卡名称 storage_nic为存储网网卡信息 local_bridge为外网网桥名称 local_nic=eno16777736 data_nic=eno33554960 storage_nic=eno50332184 local_bridge=br-ex ### 设置网络网段信息,分别对应管理网、虚拟网、存储网 local_network=192.168.2.0/24 data_network=10.10.10.0/24 store_network=11.11.11.0/24 ### 离线安装源的FTP目录信息 ftp_info="ftp://192.168.100.81/pub/" ### 临时目录,用于scp存放配置脚本 tmp_path=/root/tools/t_sh/ ### 存储节点上OSD盘挂载目录 所有节点统一成一个 declare -A blks_map=(["osd01"]="sdb" ["osd02"]="sdc" ["osd03"]="sdd"); #osd_path=/osd ### ceph安装版本 ceph_release=jewel ### 每个pool的pg_num,参考http://ceph.com/pgcalc/计算 pg_num_volumes=512 pg_num_images=1024 pg_num_backups=128 pg_num_vms=512 ### Openstack各组件的数据库密码,所有服务统一成一个 password=9b15318364bb66e1 ### Pacemaker密码 password_ha_user=9b15318364bb66e1 ### Mariadb数据库Root密码 password_galera_root=a263f6a89fa2 ### Mongodb数据库Root密码 password_mongo_root=a263f6a89fa2 ### Rabbitm密码 passsword_rabbitmq=9b15318364bb66e1 ### Openstack admin用户密码 password_openstack_admin=9b15318364bb66e1 |
3、执行安装部署
执行all-in-one.sh脚本进行部署即可,脚本内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#!/bin/sh cd bin . set-ssh-nodes.sh . style/print-prompt.sh . set-network-config.sh . style/print-prompt.sh . set-hostname.sh . style/print-prompt.sh . set-chrony.sh . style/print-prompt.sh . disable_firewall_selinux.sh . style/print-prompt.sh . set-local-yum-repos.sh . style/print-prompt.sh . install-configure-pacemaker.sh . style/print-prompt.sh . install-configure-haproxy.sh . style/print-prompt.sh . install-configure-galera.sh . style/print-prompt.sh . install-configure-rabbitmq.sh . style/print-prompt.sh . install-configure-mongodb.sh . style/print-prompt.sh . install-configure-memcached.sh . style/print-prompt.sh . install-configure-prerequisites.sh . style/print-prompt.sh . install-configure-keystone.sh . style/print-prompt.sh . install-configure-glance.sh . style/print-prompt.sh . install-configure-nova.sh . style/print-prompt.sh . install-configure-neutron.sh . style/print-prompt.sh . install-configure-dashboard.sh . style/print-prompt.sh . install-configure-cinder.sh . style/print-prompt.sh . install-configure-ceilometer.sh . style/print-prompt.sh . install-configure-aodh.sh . style/print-prompt.sh . install-configure-ceph-deploy.sh . style/print-prompt.sh . install-configure-ceph-storage-cluster.sh . style/print-prompt.sh . install-configure-ceph-auth-client-key.sh . style/print-prompt.sh . install-configure-compute-nodes-services.sh . restart-pcs-cluster.sh |
4、注意事项
- 交互输入
安装过程中,重启节点生效SELinux,SSH配置、设置Mariadb密码过程中需要用户输入,请按照提示输入操作符即可。如设置Mariadb数据库密码:
- 继续确认
all-in-one.sh会按照顺序安装,每个安装操作之后都有验证操作,使用者应根据验证结果决定是否继续安装,每完成一个安装步骤,都有继续安装提醒确认,任意键继续,或按Ctrl+C退出,如下:
继续安装(这里按回车继续)
退出安装(按Ctrl+C):
- Pcs集群重启
安装Galera集群和Openstack服务过程中,会多次重启Pacemaker集群,会出现安装过程卡住现象,应根据以下情况进行操作:
在停止pacemaker集群(执行pcs cluster stop -all)卡住时(其实不会真正卡住,只是需要等一段时间,后面安装neutron、ceilometer、aodh时pcs资源很多,等待时间比较长),这里可以按一次Ctrl+C结束等待(注意:是按一次,否则按多次就结束安装脚本了):
pcs集群重启成功,脚本会自动监控pcs资源,等最后面的新增资源全部启动后,需要Ctrl+C结束监控(必须结束,否则watch命令无法结束),如下(忽略haproxy-clone资源在其他两个控制节点上Stopped状态):
- 错误处理
如果中途出现错误,在下一步继续确认提醒时,按Ctrl+C退出当前安装,查找错误原因,重复执行该步骤,成功后,注释all-in-one.sh中已完成的前续操作,重新执行脚本,继续后续安装步骤即可。
四、系列文章
部署脚本的详细说明请参考本博客的的“Openstack云平台脚本部署”系列文章。目录如下:
Openstack云平台脚本部署之Galera高可用集群配置(二)
Openstack云平台脚本部署之RabbitMQ高可用集群部署(三)
Openstack云平台脚本部署之Memcached配置(五)
Openstack云平台脚本部署之Keystone认证服务配置(六)
Openstack云平台脚本部署之Glance镜像服务配置(七)
Openstack云平台脚本部署之Nova计算服务配置(八)
Openstack云平台脚本部署之Neutron网络服务配置(九)
Openstack云平台脚本部署之Dashboard配置(十)
Openstack云平台脚本部署之Cinder块存储服务配置(十一)
Openstack云平台脚本部署之Ceilometer数据收集服务配置(十二)
Openstack云平台脚本部署之Aodh告警服务配置(十三)
Openstack云平台脚本部署之Ceph存储集群配置(十四)
Openstack云平台脚本部署之Ganglia监控(十八)
五、问题反馈
脚本源码:https://github.com/zjmeixinyanzhi/Openstack-HA-Install-Shells
个人原创,引用请注明来源,如有问题,欢迎留言交流,相互学习。
code
more code
~~~~