VMware虚拟机里玩转OpenStack:从单机All-in-One到双节点计算的完整搭建实录
VMware虚拟机里玩转OpenStack从单机All-in-One到双节点计算的完整搭建实录在个人电脑上搭建云计算实验环境是许多IT从业者和学生探索OpenStack技术的首选方式。不同于直接使用公有云服务本地虚拟化环境能提供更自由的配置空间和更低的学习成本。本文将带你从零开始在VMware Workstation中构建一个功能完整的OpenStack环境从单节点All-in-One部署逐步扩展到双节点架构体验真实的云计算平台搭建过程。1. 环境准备与基础配置搭建OpenStack实验环境的第一步是准备合适的虚拟化平台和操作系统。VMware Workstation作为成熟的桌面虚拟化解决方案能够完美支持OpenStack节点的模拟。我们选择CentOS 7作为基础操作系统因其稳定性和对OpenStack的良好支持。1.1 VMware虚拟机创建要点创建适合OpenStack的虚拟机需要考虑以下几个关键参数CPU配置至少分配4个vCPU并开启虚拟化引擎设置内存分配控制节点建议8GB以上计算节点4GB起步磁盘空间系统盘100GB起步额外添加50GB以上空白磁盘用于Cinder卷服务网络适配器需要两个网络接口分别用于管理和数据通信典型的虚拟机创建命令示例# 查看CPU虚拟化支持 egrep -c (vmx|svm) /proc/cpuinfo # 验证KVM加速 lsmod | grep kvm提示在VMware的虚拟机设置中务必勾选虚拟化Intel VT-x/EPT或AMD-V/RVI选项这对后续的OpenStack计算节点功能至关重要。1.2 CentOS系统优化安装完基础系统后需要进行一系列优化配置以确保OpenStack的顺利运行关闭防火墙和SELinuxsystemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config配置静态IP和主机名hostnamectl set-hostname controller echo 192.168.100.10 controller /etc/hosts更新系统和基础软件yum -y update yum -y install vim bash-completion net-tools配置时间同步yum -y install chrony systemctl enable chronyd systemctl start chronyd2. 单节点All-in-One部署对于初学者来说All-in-One部署是最快捷的OpenStack体验方式。Packstack工具能够自动化完成大部分安装配置工作是理想的入门选择。2.1 Packstack安装与配置Packstack是Red Hat开发的OpenStack部署工具特别适合快速搭建实验环境# 安装OpenStack仓库和Packstack yum -y install centos-release-openstack-stein yum -y install openstack-packstack # 生成应答文件 packstack --gen-answer-fileanswers.txt # 修改应答文件关键参数 sed -i s/CONFIG_SWIFT_INSTALLy/CONFIG_SWIFT_INSTALLn/ answers.txt sed -i s/CONFIG_PROVISION_DEMOy/CONFIG_PROVISION_DEMOn/ answers.txt # 开始安装 packstack --answer-fileanswers.txt安装完成后可以通过以下命令获取管理员凭证cat /root/keystonerc_admin2.2 网络配置调整All-in-One部署后需要手动调整网络配置以确保外部访问修改br-ex网桥配置cd /etc/sysconfig/network-scripts/ cp ifcfg-ens33 ifcfg-br-ex vi ifcfg-br-ex关键配置参数TYPEOVSBridge DEVICETYPEovs NAMEbr-ex DEVICEbr-ex ONBOOTyes修改物理网卡配置vi ifcfg-ens33关键配置参数TYPEOVSPort DEVICETYPEovs OVS_BRIDGEbr-ex重启网络服务systemctl restart network2.3 验证基础服务安装完成后可以通过以下命令验证主要服务状态# 查看Nova服务状态 openstack compute service list # 查看Neutron网络状态 openstack network agent list # 查看Cinder存储状态 openstack volume service list3. 扩展为双节点架构单节点环境验证成功后可以扩展为更接近生产环境的双节点架构控制节点计算节点。3.1 计算节点准备新增一台虚拟机作为计算节点需特别注意以下配置差异配置项控制节点计算节点主机名controllercompute内存8GB4GB磁盘系统盘额外卷系统盘即可网络双网卡双网卡计算节点需要与控制节点建立SSH互信# 在控制节点生成密钥 ssh-keygen # 复制公钥到计算节点 ssh-copy-id rootcompute # 测试免密登录 ssh compute hostname3.2 多节点Packstack配置修改原有的应答文件以支持多节点部署# 备份原始应答文件 cp answers.txt multi-node.txt # 更新计算节点配置 sed -i s/CONFIG_COMPUTE_HOSTS.*/CONFIG_COMPUTE_HOSTS192.168.100.11/ multi-node.txt # 添加网络配置 echo CONFIG_NEUTRON_OVS_BRIDGE_IFACESbr-ex:ens33 multi-node.txt # 重新运行Packstack packstack --answer-filemulti-node.txt3.3 节点间通信验证确保节点间服务正常通信是关键时间同步验证# 在两台节点上执行 timedatectl status消息队列验证# 在控制节点检查RabbitMQ状态 rabbitmqctl list_queues计算服务注册# 检查计算节点是否注册成功 openstack hypervisor list4. 核心功能验证与排错环境搭建完成后需要通过实际用例验证各核心组件的功能完整性。4.1 创建测试实例通过以下步骤创建并验证测试实例创建测试网络openstack network create test-net openstack subnet create --network test-net \ --subnet-range 192.168.200.0/24 \ --gateway 192.168.200.1 test-subnet上传测试镜像wget http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img openstack image create --file cirros-0.5.2-x86_64-disk.img \ --disk-format qcow2 --container-format bare cirros启动测试实例openstack server create --flavor m1.tiny \ --image cirros --network test-net test-instance4.2 常见问题排查在部署过程中可能会遇到以下典型问题问题1实例无法获取IP地址解决方案# 检查DHCP代理状态 openstack network agent list | grep DHCP # 检查网络命名空间 ip netns list ip netns exec qdhcp-network-id ip a问题2实例无法访问外网解决方案# 检查浮动IP配置 openstack floating ip list # 验证NAT规则 iptables -t nat -L -n -v问题3计算节点无法注册解决方案# 检查nova-compute服务日志 journalctl -u nova-compute -f # 验证消息队列连接 nova-manage cell_v2 list_cells5. 高级配置与优化基础环境运行稳定后可以进行一些高级配置以提升性能和可用性。5.1 存储后端配置默认部署使用LVM作为Cinder后端可以扩展其他存储选项存储类型配置命令示例适用场景NFScinder type-create nfs共享存储环境Cephopenstack volume type create ceph大规模部署LVM(默认)开发测试环境典型NFS后端配置示例# 控制节点上 yum -y install nfs-utils mkdir /var/nfs echo /var/nfs *(rw,sync,no_root_squash) /etc/exports systemctl enable nfs-server systemctl start nfs-server # 在Packstack应答文件中添加 echo CONFIG_CINDER_BACKENDnfs answers.txt echo CONFIG_CINDER_NFS_MOUNTScontroller:/var/nfs answers.txt5.2 网络性能优化对于虚拟网络环境可以通过以下方式提升性能启用巨帧# 在所有节点上执行 ifconfig ens33 mtu 9000调整Neutron配置# /etc/neutron/plugins/ml2/openvswitch_agent.ini [ovs] datapath_type netdev优化安全组规则# 批量添加安全组规则 openstack security group rule create --proto tcp --dst-port 1:65535 default openstack security group rule create --proto udp --dst-port 1:65535 default openstack security group rule create --proto icmp default5.3 资源监控与告警部署基础监控系统以掌握集群状态安装Prometheus监控docker run -d --name prometheus -p 9090:9090 \ -v /opt/prometheus:/etc/prometheus prom/prometheus配置Grafana仪表盘docker run -d --name grafana -p 3000:3000 grafana/grafana关键监控指标计算节点CPU/内存使用率、虚拟机数量控制节点服务进程状态、API响应时间存储卷容量、IOPS网络带宽使用、安全组规则数6. 实际应用场景演练为了充分验证环境的完整功能我们可以模拟几个典型的云平台使用场景。6.1 多租户隔离实践创建项目和用户openstack project create projectA openstack user create --project projectA --password pass123 userA openstack role add --project projectA --user userA _member_设置配额限制openstack quota set --instances 5 --cores 8 --ram 16384 projectA验证隔离效果# 使用userA凭证 source userA-rc openstack server list # 应只看到自己的实例6.2 弹性伸缩演示创建自定义镜像openstack image create --file my-custom-image.qcow2 \ --disk-format qcow2 --container-format bare custom-image配置自动伸缩组openstack aggregate create scale-group openstack aggregate add host scale-group compute openstack flavor create --ram 1024 --disk 10 --vcpus 1 m1.scale设置伸缩策略# 需要先安装Heat服务 openstack orchestration template version list6.3 备份与恢复测试创建实例快照openstack server image create --name instance-snapshot test-instance从快照恢复实例openstack server create --flavor m1.tiny \ --image instance-snapshot restored-instance验证数据一致性openstack console log show restored-instance | grep -i error7. 环境维护与日常管理稳定运行的OpenStack环境需要定期维护和监控。7.1 日常维护命令服务状态检查# 检查所有服务状态 openstack-status # 检查数据库连接 nova-manage cell_v2 list_cells日志查看技巧# 动态查看Nova日志 tail -f /var/log/nova/nova-api.log # 按时间筛选日志 journalctl -u neutron-server --since 2023-01-01 --until 2023-01-02定期清理任务# 清理过期令牌 keystone-manage token_flush # 清理删除失败的实例 nova-manage db purge7.2 升级与扩展小版本升级步骤停止所有实例备份数据库和配置文件更新软件包运行数据库迁移逐步重启服务添加额外服务# 例如添加Designate DNS服务 yum -y install openstack-designate\* packstack --answer-fileanswers.txt \ --additional-repocentos-openstack-stein-designate7.3 性能基准测试Nova性能测试# 创建测试实例 openstack server create --flavor m1.small \ --image cirros --network test-net bench-instance # 测量启动时间 time openstack server show bench-instance | grep -i status网络性能测试# 在实例中执行 iperf -s # 服务端 iperf -c server-ip # 客户端存储IO测试# 创建测试卷并挂载 openstack volume create --size 10 bench-volume openstack server add volume bench-instance bench-volume # 在实例中执行 dd if/dev/zero of/mnt/testfile bs1G count1 oflagdirect