OpenStack Rocky/CentOS 7 双节点部署:从虚拟机克隆到网络配置的 8 步避坑指南 📅 2026/7/11 23:55:05 OpenStack Rocky双节点高效部署虚拟机克隆与网络配置实战手册1. 环境规划与准备工作搭建OpenStack实验环境前合理的规划能避免后续80%的配置问题。我们采用ControllerCompute双节点架构这种设计既满足基础功能需求又保持足够轻量。硬件配置建议每个节点至少4GB内存8GB更佳双核CPU支持虚拟化双网卡配置NATHost-Only50GB存储空间软件准备清单CentOS 7.9镜像CentOS-7-x86_64-DVD-2009.isoOpenStack Rocky仓库虚拟机平台VMware Workstation或VirtualBox提示实验环境建议关闭BIOS中的Secure Boot否则可能导致虚拟化组件无法正常加载。网络拓扑采用经典的双网卡设计ens33NAT模式用于外网连接和软件包下载ens34Host-Only模式用于节点间内部通信# 验证CPU虚拟化支持 egrep -c (vmx|svm) /proc/cpuinfo # 返回值大于0表示支持2. Controller节点基础配置首先完成Controller节点的系统级配置这是整个OpenStack环境的控制中枢。2.1 系统初始化# 设置主机名 hostnamectl set-hostname controller # 查看网卡名称 ip a编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33TYPEEthernet BOOTPROTOstatic NAMEens33 DEVICEens33 ONBOOTyes IPADDR192.168.100.10 # 根据实际网络调整 NETMASK255.255.255.0 GATEWAY192.168.100.1 # 通常为.1或.2 DNS18.8.8.8Host-Only网卡配置示例ifcfg-ens34TYPEEthernet BOOTPROTOstatic NAMEens34 DEVICEens34 ONBOOTyes IPADDR192.168.200.10 # 内部通信地址 NETMASK255.255.255.02.2 安全策略调整# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 关闭SELinux setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # 重启网络 systemctl restart network2.3 主机映射与时间同步# 编辑hosts文件 vi /etc/hosts # 添加以下内容 192.168.100.10 controller 192.168.100.20 compute # 预先添加compute节点记录配置NTP时间同步yum install -y chrony systemctl enable chronyd systemctl start chronyd3. 通过克隆创建Compute节点虚拟机克隆可以节省90%的重复配置时间但需要特别注意网络配置的调整。3.1 克隆操作步骤关闭Controller节点虚拟机右键选择管理→克隆选择完整克隆模式命名新虚拟机为compute等待克隆完成3.2 克隆后配置启动克隆的Compute节点进行以下调整# 修改主机名 hostnamectl set-hostname compute # 更新网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens33 # 修改IPADDR192.168.100.20确保与controller不同 # 注释或删除UUID行 # 重启网络 systemctl restart network关键检查点确保两台虚拟机可以互相ping通检查主机名是否正确显示验证时间是否同步4. OpenStack基础服务安装在两个节点上执行以下操作准备OpenStack运行环境。4.1 仓库配置# 安装OpenStack仓库 yum install -y centos-release-openstack-rocky # 更新系统 yum update -y # 安装OpenStack客户端 yum install -y python-openstackclient openstack-selinux4.2 数据库安装仅Controlleryum install -y mariadb mariadb-server python2-PyMySQL # 创建配置文件 vi /etc/my.cnf.d/openstack.cnf [mysqld] bind-address 192.168.100.10 default-storage-engine innodb innodb_file_per_table on max_connections 4096 collation-server utf8_general_ci character-set-server utf8启动数据库服务systemctl enable mariadb systemctl start mariadb mysql_secure_installation5. 网络配置深度解析OpenStack网络配置是部署中最易出错的环节需要特别注意以下细节。5.1 网卡配置对比配置项Controller节点Compute节点主机名controllercomputeens33 IP192.168.100.10192.168.100.20ens34 IP192.168.200.10192.168.200.20网关192.168.100.1192.168.100.1DNS8.8.8.88.8.8.85.2 常见网络问题排查问题1节点间无法通信# 检查防火墙状态 systemctl status firewalld # 测试连通性 ping 192.168.100.20 # 从controller ping compute ping 192.168.100.10 # 从compute ping controller问题2克隆后网卡无法启动# 删除旧MAC记录 rm -f /etc/udev/rules.d/70-persistent-net.rules # 查看新MAC地址 ip link show # 更新网卡配置文件中的MAC地址 vi /etc/sysconfig/network-scripts/ifcfg-ens33问题3主机名解析失败# 检查/etc/hosts配置 cat /etc/hosts # 测试解析 ping controller ping compute6. 服务组件安装与验证在Controller节点上安装Keystone身份认证服务yum install -y openstack-keystone httpd mod_wsgi # 创建数据库 mysql -u root -p -e CREATE DATABASE keystone mysql -u root -p -e GRANT ALL PRIVILEGES ON keystone.* TO keystonelocalhost IDENTIFIED BY KEYSTONE_DBPASS mysql -u root -p -e GRANT ALL PRIVILEGES ON keystone.* TO keystone% IDENTIFIED BY KEYSTONE_DBPASS配置Keystonevi /etc/keystone/keystone.conf [database] connection mysqlpymysql://keystone:KEYSTONE_DBPASScontroller/keystone [token] provider fernet初始化Keystone数据库su -s /bin/sh -c keystone-manage db_sync keystone # 初始化Fernet密钥 keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone keystone-manage credential_setup --keystone-user keystone --keystone-group keystone7. 环境验证与测试完成基础服务安装后需要进行全面验证# 在Controller节点上 openstack --os-auth-url http://controller:5000/v3 \ --os-project-domain-name Default --os-user-domain-name Default \ --os-project-name admin --os-username admin token issue # 预期输出应包含有效令牌信息计算节点验证# 在Compute节点上安装nova-compute yum install -y openstack-nova-compute # 检查虚拟化支持 egrep -c (vmx|svm) /proc/cpuinfo8. 高级配置与优化为提升实验环境性能可以进行以下优化内存优化配置# /etc/nova/nova.conf [libvirt] virt_type kvm cpu_mode host-passthrough日志管理# 配置日志轮转 vi /etc/logrotate.d/openstack /var/log/nova/*.log { daily missingok rotate 7 compress delaycompress notifempty }定期维护脚本#!/bin/bash # 清理过期实例 nova list | grep -E Error|Failed | awk {print $2} | xargs -I {} nova delete {} # 清理镜像缓存 rm -f /var/lib/nova/instances/_base/*