OpenStack Train 双节点部署实战CentOS 7.5 环境 10 大核心服务一键脚本安装在云计算技术快速发展的今天OpenStack作为开源的云计算管理平台项目已经成为企业构建私有云的首选方案之一。本文将详细介绍如何在CentOS 7.5环境下通过自动化脚本快速部署OpenStack Train版本的双节点架构ControllerCompute涵盖从基础环境准备到10大核心服务的完整安装流程。1. 环境准备与规划部署OpenStack前合理的环境规划是成功的关键。我们采用双节点架构分别部署控制节点Controller和计算节点Compute这种架构既满足测试环境需求又能为后续扩展奠定基础。1.1 硬件配置要求节点类型CPU内存系统盘数据盘网卡数量Controller4核8GB100GB-2Compute4核8GB100GB200GB21.2 网络规划建议为OpenStack环境规划三个独立网络管理网络用于节点间通信192.168.100.0/24业务网络用于虚拟机对外通信192.168.200.0/24存储网络可选用于存储流量隔离各节点IP分配如下主机名管理网络IP业务网络IPcontroller192.168.100.10192.168.200.10compute192.168.100.20192.168.200.201.3 操作系统准备两个节点均安装CentOS 7.5 Minimal版本确保内核版本不低于3.10已配置正确的时区和NTP服务关闭了防火墙和SELinux# 检查内核版本 uname -r # 设置时区 timedatectl set-timezone Asia/Shanghai # 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 禁用SELinux setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config2. 基础环境配置2.1 主机名与域名解析为方便节点间通信需要正确设置主机名并配置/etc/hosts文件# Controller节点 hostnamectl set-hostname controller echo 192.168.100.10 controller /etc/hosts echo 192.168.100.20 compute /etc/hosts # Compute节点 hostnamectl set-hostname compute echo 192.168.100.10 controller /etc/hosts echo 192.168.100.20 compute /etc/hosts2.2 网络配置编辑网卡配置文件通常为ifcfg-ens33和ifcfg-ens34# Controller节点ens33配置示例 TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.100.10 PREFIX24 GATEWAY192.168.100.1注意业务网络网卡ens34只需配置IP和子网掩码不需配置网关2.3 YUM源配置由于OpenStack需要大量依赖包建议搭建本地YUM源# Controller节点 mkdir -p /opt/{iaas,centos} mount -o loop CentOS-7.5-x86_64-DVD-1804.iso /opt/centos mount -o loop Chinaskill_Cloud_iaas.iso /opt/iaas cat /etc/yum.repos.d/local.repo EOF [iaas] nameiaas baseurlfile:///opt/iaas/iaas-repo gpgcheck0 enabled1 [centos] namecentos baseurlfile:///opt/centos gpgcheck0 enabled1 EOF # Compute节点通过FTP访问Controller的YUM源 yum install -y ftp cat /etc/yum.repos.d/local.repo EOF [centos] namecentos baseurlftp://192.168.100.10/centos gpgcheck0 enabled1 [iaas] nameiaas baseurlftp://192.168.100.10/iaas-repo gpgcheck0 enabled1 EOF3. OpenStack基础服务安装3.1 安装前准备脚本使用iaas-pre-host.sh脚本完成基础环境配置# 两个节点均执行 yum install -y iaas-xiandian iaas-pre-host.sh reboot3.2 数据库服务MariaDB仅在Controller节点安装iaas-install-mysql.sh安装完成后验证数据库服务mysql -uroot -p000000 -e SHOW DATABASES;3.3 消息队列RabbitMQOpenStack组件使用RabbitMQ进行通信# 安装RabbitMQ yum install -y rabbitmq-server systemctl enable rabbitmq-server systemctl start rabbitmq-server # 添加OpenStack用户 rabbitmqctl add_user openstack 000000 rabbitmqctl set_permissions openstack .* .* .*4. 核心服务安装与配置4.1 认证服务KeystoneKeystone是OpenStack的身份认证服务必须先安装iaas-install-keystone.sh验证Keystone安装source /etc/keystone/admin-openrc.sh openstack project list4.2 镜像服务GlanceGlance负责虚拟机镜像的存储和管理iaas-install-glance.sh上传测试镜像wget http://download.cirros-cloud.net/0.4.0/cirros-0.4.0-x86_64-disk.img openstack image create cirros \ --file cirros-0.4.0-x86_64-disk.img \ --disk-format qcow2 --container-format bare \ --public4.3 计算服务NovaNova是OpenStack的核心计算服务# Controller节点 iaas-install-nova-controller.sh # Compute节点 iaas-install-nova-compute.sh验证Nova服务openstack compute service list nova-status upgrade check4.4 网络服务NeutronNeutron提供网络连接即服务# Controller节点 iaas-install-neutron-controller.sh # Compute节点 iaas-install-neutron-compute.sh创建初始网络openstack network create --share --external \ --provider-physical-network provider \ --provider-network-type flat provider openstack subnet create --network provider \ --allocation-pool start192.168.200.100,end192.168.200.200 \ --dns-nameserver 8.8.8.8 --gateway 192.168.200.1 \ --subnet-range 192.168.200.0/24 provider5. 可选服务安装5.1 仪表盘服务HorizonHorizon提供Web管理界面iaas-install-dashboard.sh访问地址http://controller_ip/dashboard提示默认登录域为demo用户名为admin密码为0000005.2 块存储服务CinderCinder为虚拟机提供持久化块存储# Controller节点 iaas-install-cinder-controller.sh # Compute节点需先准备存储设备 iaas-install-cinder-compute.sh创建并挂载卷测试openstack volume create --size 1 test-volume openstack server add volume instance_id test-volume6. 环境验证与测试6.1 创建第一个实例# 创建flavor openstack flavor create --ram 512 --disk 1 --vcpus 1 m1.tiny # 创建密钥对 openstack keypair create mykey mykey.pem chmod 600 mykey.pem # 启动实例 openstack server create \ --image cirros \ --flavor m1.tiny \ --network provider \ --key-name mykey \ test-instance6.2 网络连通性测试# 获取实例IP openstack server list # 安全组放行ICMP openstack security group rule create --proto icmp default # 测试ping ping instance_ip7. 常见问题排查7.1 服务启动失败检查日志所有OpenStack服务日志通常位于/var/log/service_name/验证数据库连接确保数据库服务正常运行且连接参数正确检查消息队列rabbitmqctl list_queues7.2 网络问题验证网络命名空间ip netns list检查网桥配置brctl show查看Neutron代理状态neutron-agent-list7.3 镜像问题确认镜像状态openstack image list检查Glance存储后端确保存储目录有足够空间8. 性能优化建议8.1 数据库优化# /etc/my.cnf.d/openstack.cnf [mysqld] innodb_buffer_pool_size 1G innodb_log_file_size 256M innodb_flush_log_at_trx_commit 28.2 Nova配置优化# /etc/nova/nova.conf [DEFAULT] ram_allocation_ratio 1.5 cpu_allocation_ratio 16.0 disk_allocation_ratio 1.08.3 Neutron优化# /etc/neutron/neutron.conf [DEFAULT] rpc_response_timeout 60 report_interval 309. 自动化脚本解析本文提到的安装脚本如iaas-install-*.sh主要完成以下工作安装所需软件包生成配置文件模板配置服务参数创建数据库和用户启动服务并设置开机自启例如Nova控制节点安装脚本的核心逻辑# 安装软件包 yum install -y openstack-nova-api openstack-nova-conductor \ openstack-nova-console openstack-nova-novncproxy \ openstack-nova-scheduler openstack-nova-placement-api # 生成配置文件 crudini --set /etc/nova/nova.conf DEFAULT enabled_apis osapi_compute,metadata crudini --set /etc/nova/nova.conf api_database connection mysqlpymysql://nova:000000controller/nova_api # 初始化数据库 su -s /bin/sh -c nova-manage api_db sync nova su -s /bin/sh -c nova-manage cell_v2 map_cell0 nova su -s /bin/sh -c nova-manage cell_v2 create_cell --namecell1 --verbose nova su -s /bin/sh -c nova-manage db sync nova # 启动服务 systemctl enable openstack-nova-api.service \ openstack-nova-scheduler.service \ openstack-nova-conductor.service \ openstack-nova-novncproxy.service systemctl start openstack-nova-api.service \ openstack-nova-scheduler.service \ openstack-nova-conductor.service \ openstack-nova-novncproxy.service10. 后续扩展建议增加计算节点横向扩展计算能力部署高可用架构多控制节点负载均衡集成Ceph存储提供分布式存储支持监控与日志部署PrometheusGranfana监控体系容器化部署使用Kolla-Ansible容器化部署OpenStack