完整部署CentOS7.2+OpenStack+KVM云平台环境(1) - 基础环境搭建

OpenStack作为开源的云基础设施管理平台,能够快速构建灵活、可扩展的私有云或公有云环境。CentOS7.2凭借其稳定性和广泛的软件兼容性,是早期OpenStack版本(如Mitaka、Newton)的经典搭配;而KVM作为基于Linux内核的全虚拟化Hypervisor,性能接近物理机,是OpenStack默认推荐的虚拟化引擎。

本系列文章将分步指导您完成从基础环境搭建到OpenStack核心组件部署、云平台验证的全流程。本文作为第一篇,聚焦于基础环境的标准化搭建,包括系统初始化、虚拟化组件部署、网络/存储基础配置等,为后续OpenStack组件安装打下坚实基础。

目录#

  1. 前置准备与规划
  2. CentOS7.2系统安装与初始化
  3. 基础依赖与虚拟化组件安装
  4. 网络基础配置(桥接网络)
  5. 存储基础配置
  6. 环境验证
  7. 常见问题与最佳实践
  8. 后续系列预告
  9. 参考资料

1. 前置准备与规划#

1.1 硬件要求#

节点角色CPU要求内存要求存储要求网络要求
控制节点4核及以上,开启VT-x/VT-d8G及以上200G及以上磁盘(SSD优先)至少1块千兆网卡(管理网)
计算节点8核及以上,开启VT-x/VT-d16G及以上500G及以上磁盘(支持LVM)2块千兆网卡(管理网+实例网)

注意:需在BIOS中开启CPU虚拟化选项(通常为Intel VT-xAMD SVM),否则KVM无法正常工作。

1.2 软件资源准备#

1.3 节点角色规划示例#

节点角色主机名管理IP实例网IP(计算节点)
控制节点controller192.168.1.10-
计算节点1compute1192.168.1.20192.168.2.20
计算节点2compute2192.168.1.30192.168.2.30

2. CentOS7.2系统安装与初始化#

2.1 系统安装步骤#

  1. 启动安装镜像:从U盘或ISO镜像启动服务器,选择Install CentOS 7
  2. 语言与分区配置
    • 语言选择中文(简体),时区选择亚洲/上海
    • 分区建议(使用LVM):
      • /boot:200MB(标准分区)
      • swap:内存≤8G时设为16G;内存>8G时设为8G
      • /:剩余全部空间(LVM逻辑卷)
  3. 网络配置
    • 选择配置网络,设置静态IP地址、子网掩码、网关、DNS服务器,禁用DHCP。
    • 勾选开启连接,确保系统启动后网络立即生效。
  4. 系统类型:选择最小安装,仅安装核心组件,减少资源占用。
  5. 完成安装:设置root密码,等待安装完成后重启系统。

2.2 系统初始化配置#

2.2.1 替换CentOS7.2归档源#

由于官方源已下线,需替换为国内归档源:

# 备份原有repo文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
 
# 下载阿里CentOS7.2归档源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
 
# 替换$releasever为固定版本号7.2.1511
sed -i 's/$releasever/7.2.1511/g' /etc/yum.repos.d/CentOS-Base.repo
 
# 清理缓存并生成新缓存
yum clean all && yum makecache

2.2.2 关闭不必要服务#

# 关闭防火墙并禁用开机自启
systemctl stop firewalld && systemctl disable firewalld
 
# 关闭SELinux(需重启生效)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0  # 临时关闭
 
# 关闭NetworkManager,启用network服务
systemctl stop NetworkManager && systemctl disable NetworkManager
systemctl start network && systemctl enable network
 
# 禁用IPv6
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p

2.2.3 主机名与Hosts解析#

# 设置控制节点主机名
hostnamectl set-hostname controller
# 计算节点:hostnamectl set-hostname compute1
 
# 配置hosts文件(所有节点需保持一致)
cat >> /etc/hosts << EOF
192.168.1.10   controller controller.localdomain
192.168.1.20   compute1 compute1.localdomain
192.168.1.30   compute2 compute2.localdomain
EOF

2.2.4 时间同步(Chrony)#

使用Chrony替代NTP,实现高精度时间同步:

# 安装Chrony
yum install -y chrony
 
# 修改Chrony配置,使用国内NTP服务器
sed -i '/^server/d' /etc/chrony.conf
cat >> /etc/chrony.conf << EOF
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server time1.aliyun.com iburst
EOF
 
# 启动服务并设置开机自启
systemctl start chronyd && systemctl enable chronyd
 
# 验证同步状态
chronyc sources -v

2.2.5 安装基础工具#

yum install -y vim wget telnet net-tools lrzsz tree

3. 基础依赖与虚拟化组件安装#

3.1 KVM及虚拟化核心组件安装#

# 安装KVM核心组件
yum install -y qemu-kvm qemu-img libvirt libvirt-python libguestfs-tools virt-install
 
# 启动libvirtd服务并设置开机自启
systemctl start libvirtd && systemctl enable libvirtd
 
# 验证KVM是否启用
# 检查CPU虚拟化支持
egrep 'vmx|svm' /proc/cpuinfo | wc -l  # 输出≥1表示支持
# 检查KVM模块是否加载
lsmod | grep kvm  # 输出kvm_intel或kvm_amd表示成功

3.2 OpenStack基础依赖安装#

# 安装EPEL源
wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/epel.repo
yum makecache
 
# 安装OpenStack依赖工具
yum install -y python-pip python-devel gcc mysql-devel libffi-devel openssl-devel

4. 网络基础配置(桥接网络)#

OpenStack需要桥接网络实现实例与外部通信,需为控制节点和计算节点配置管理桥,计算节点额外配置实例桥。

4.1 控制节点管理桥配置(br0)#

# 备份原有网络配置文件
cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak
 
# 修改物理网卡配置为桥接从属
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
TYPE=Ethernet
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
EOF
 
# 创建桥接网卡配置文件
cat > /etc/sysconfig/network-scripts/ifcfg-br0 << EOF
TYPE=Bridge
NAME=br0
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
DNS2=223.6.6.6
EOF
 
# 重启网络服务
systemctl restart network
 
# 验证桥接状态
brctl show br0  # 输出中eth0应作为slave挂在br0下

4.2 计算节点实例桥配置(br1)#

计算节点需额外配置实例桥(与管理网物理隔离):

# 创建实例桥br1配置文件(假设物理网卡为eth1)
cat > /etc/sysconfig/network-scripts/ifcfg-eth1 << EOF
TYPE=Ethernet
NAME=eth1
DEVICE=eth1
ONBOOT=yes
BRIDGE=br1
EOF
 
cat > /etc/sysconfig/network-scripts/ifcfg-br1 << EOF
TYPE=Bridge
NAME=br1
DEVICE=br1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.2.20
NETMASK=255.255.255.0
EOF
 
systemctl restart network
brctl show br1

5. 存储基础配置#

5.1 本地存储优化#

# 挂载数据盘到/var/lib/libvirt/images(KVM实例默认存储目录)
# 假设数据盘为/dev/sdb
fdisk /dev/sdb  # 创建主分区/dev/sdb1
mkfs.xfs /dev/sdb1
 
# 写入fstab实现开机自动挂载
echo "/dev/sdb1 /var/lib/libvirt/images xfs defaults,noatime 0 0" >> /etc/fstab
mount -a && df -h

5.2 LVM存储池配置(可选)#

为后续OpenStack Cinder块存储做准备,创建LVM卷组:

# 创建物理卷
pvcreate /dev/sdb1
 
# 创建卷组
vgcreate openstack-volumes /dev/sdb1
 
# 验证卷组
vgs

6. 环境验证#

6.1 KVM功能验证#

# 查看libvirt状态
virsh list --all  # 初始为空,无异常提示即可
 
# 创建测试虚拟机
virt-install \
--name test-vm \
--ram 1024 \
--vcpus 1 \
--disk path=/var/lib/libvirt/images/test-vm.qcow2,size=10 \
--os-type linux \
--os-variant centos7 \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location 'http://mirrors.aliyun.com/centos/7.2.1511/os/x86_64/' \
--extra-args 'console=ttyS0,115200n8 serial'
 
# 验证虚拟机状态
virsh list --all  # 测试虚拟机应处于运行中

6.2 网络连通性验证#

# 控制节点与计算节点互ping
ping -c 3 compute1
ping -c 3 controller
 
# 验证桥接网络连通性
ping -c 3 192.168.1.1  # 网关
ping -c 3 www.baidu.com  # 外网

6.3 时间同步验证#

# 查看所有节点时间
timedatectl status
# 验证节点间时间差
ssh compute1 "date"

7. 常见问题与最佳实践#

7.1 常见问题排查#

  1. KVM无法启动:检查BIOS是否开启VT-x/VT-d,运行egrep 'vmx|svm' /proc/cpuinfo确认CPU支持。
  2. 网络桥接失败:检查NetworkManager是否已禁用,查看journalctl -u network日志定位错误。
  3. YUM安装失败:确认归档源配置正确,yum makecache是否生成成功,或替换为清华镜像源重试。
  4. 时间同步异常:检查Chrony配置文件中NTP服务器是否可达,运行chronyc tracking查看同步状态。

7.2 最佳实践#

  1. 系统最小化安装:仅安装必要组件,减少攻击面和资源占用。
  2. 节点时间强一致:OpenStack组件依赖精确时间同步,建议所有节点同步到同一NTP服务器。
  3. Hosts解析优先:所有节点必须配置正确的hosts映射,避免DNS解析延迟或错误导致组件通信失败。
  4. 归档源固定版本:CentOS7.2源已归档,必须将$releasever替换为固定版本号7.2.1511,否则YUM无法找到包。
  5. 备份配置文件:修改任何系统或服务配置前,先备份原有文件,便于故障回溯。

8. 后续系列预告#

  • 第二篇:OpenStack核心组件部署(Keystone认证服务、Glance镜像服务、Nova计算服务)
  • 第三篇:OpenStack网络与存储组件部署(Neutron网络服务、Cinder块存储服务)
  • 第四篇:云平台验证与实例管理(创建镜像、启动实例、网络关联、监控运维)

9. 参考资料#

  1. CentOS7.2归档镜像:https://mirrors.aliyun.com/centos/7.2.1511/
  2. OpenStack官方文档:https://docs.openstack.org/newton/
  3. KVM官方指南:https://www.linux-kvm.org/page/Main_Page
  4. CentOS网络桥接配置:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-configuring_a_bridge_connection