完整部署CentOS7.2+OpenStack+KVM云平台环境(1) - 基础环境搭建
OpenStack作为开源的云基础设施管理平台,能够快速构建灵活、可扩展的私有云或公有云环境。CentOS7.2凭借其稳定性和广泛的软件兼容性,是早期OpenStack版本(如Mitaka、Newton)的经典搭配;而KVM作为基于Linux内核的全虚拟化Hypervisor,性能接近物理机,是OpenStack默认推荐的虚拟化引擎。
本系列文章将分步指导您完成从基础环境搭建到OpenStack核心组件部署、云平台验证的全流程。本文作为第一篇,聚焦于基础环境的标准化搭建,包括系统初始化、虚拟化组件部署、网络/存储基础配置等,为后续OpenStack组件安装打下坚实基础。
目录#
- 前置准备与规划
- CentOS7.2系统安装与初始化
- 基础依赖与虚拟化组件安装
- 网络基础配置(桥接网络)
- 存储基础配置
- 环境验证
- 常见问题与最佳实践
- 后续系列预告
- 参考资料
1. 前置准备与规划#
1.1 硬件要求#
| 节点角色 | CPU要求 | 内存要求 | 存储要求 | 网络要求 |
|---|---|---|---|---|
| 控制节点 | 4核及以上,开启VT-x/VT-d | 8G及以上 | 200G及以上磁盘(SSD优先) | 至少1块千兆网卡(管理网) |
| 计算节点 | 8核及以上,开启VT-x/VT-d | 16G及以上 | 500G及以上磁盘(支持LVM) | 2块千兆网卡(管理网+实例网) |
注意:需在BIOS中开启CPU虚拟化选项(通常为
Intel VT-x或AMD SVM),否则KVM无法正常工作。
1.2 软件资源准备#
- CentOS7.2镜像:由于官方源已归档,推荐使用国内镜像站的归档版本:
- 归档源配置文件:CentOS7.2官方源已下线,需提前准备国内归档源(如阿里、清华)的repo文件。
1.3 节点角色规划示例#
| 节点角色 | 主机名 | 管理IP | 实例网IP(计算节点) |
|---|---|---|---|
| 控制节点 | controller | 192.168.1.10 | - |
| 计算节点1 | compute1 | 192.168.1.20 | 192.168.2.20 |
| 计算节点2 | compute2 | 192.168.1.30 | 192.168.2.30 |
2. CentOS7.2系统安装与初始化#
2.1 系统安装步骤#
- 启动安装镜像:从U盘或ISO镜像启动服务器,选择
Install CentOS 7。 - 语言与分区配置:
- 语言选择
中文(简体),时区选择亚洲/上海。 - 分区建议(使用LVM):
/boot:200MB(标准分区)swap:内存≤8G时设为16G;内存>8G时设为8G/:剩余全部空间(LVM逻辑卷)
- 语言选择
- 网络配置:
- 选择
配置网络,设置静态IP地址、子网掩码、网关、DNS服务器,禁用DHCP。 - 勾选
开启连接,确保系统启动后网络立即生效。
- 选择
- 系统类型:选择
最小安装,仅安装核心组件,减少资源占用。 - 完成安装:设置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 makecache2.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 -p2.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
EOF2.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 -v2.2.5 安装基础工具#
yum install -y vim wget telnet net-tools lrzsz tree3. 基础依赖与虚拟化组件安装#
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-devel4. 网络基础配置(桥接网络)#
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 br15. 存储基础配置#
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 -h5.2 LVM存储池配置(可选)#
为后续OpenStack Cinder块存储做准备,创建LVM卷组:
# 创建物理卷
pvcreate /dev/sdb1
# 创建卷组
vgcreate openstack-volumes /dev/sdb1
# 验证卷组
vgs6. 环境验证#
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 常见问题排查#
- KVM无法启动:检查BIOS是否开启VT-x/VT-d,运行
egrep 'vmx|svm' /proc/cpuinfo确认CPU支持。 - 网络桥接失败:检查NetworkManager是否已禁用,查看
journalctl -u network日志定位错误。 - YUM安装失败:确认归档源配置正确,
yum makecache是否生成成功,或替换为清华镜像源重试。 - 时间同步异常:检查Chrony配置文件中NTP服务器是否可达,运行
chronyc tracking查看同步状态。
7.2 最佳实践#
- 系统最小化安装:仅安装必要组件,减少攻击面和资源占用。
- 节点时间强一致:OpenStack组件依赖精确时间同步,建议所有节点同步到同一NTP服务器。
- Hosts解析优先:所有节点必须配置正确的hosts映射,避免DNS解析延迟或错误导致组件通信失败。
- 归档源固定版本:CentOS7.2源已归档,必须将
$releasever替换为固定版本号7.2.1511,否则YUM无法找到包。 - 备份配置文件:修改任何系统或服务配置前,先备份原有文件,便于故障回溯。
8. 后续系列预告#
- 第二篇:OpenStack核心组件部署(Keystone认证服务、Glance镜像服务、Nova计算服务)
- 第三篇:OpenStack网络与存储组件部署(Neutron网络服务、Cinder块存储服务)
- 第四篇:云平台验证与实例管理(创建镜像、启动实例、网络关联、监控运维)