尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

华为HCS 8.1.1私有云实战:镜像制作、上传与云主机发放全流程

华为HCS 8.1.1私有云实战:镜像制作、上传与云主机发放全流程 1. 项目背景与整体设计思路华为私有云HCSHuawei Cloud Stack8.1.1这套东西我在过去两年里前前后后部署过四五套从最小的三节点实验室环境到几十节点的生产资源池都摸过一遍。说实话第一次接触的时候光是搞清楚镜像从哪来、怎么传、云主机怎么发这条链路就花了我整整一周。官方文档写得很全但全不等于好用——它把每个组件的功能讲得很细却很少告诉你实际动手时先做哪一步、哪一步容易卡住。这篇内容就是把我踩过的坑和总结出来的流程完整梳理一遍。核心链路其实就四步制作或获取镜像 → 上传镜像到HCS → 通过ServiceOM配置资源 → 发放云主机并验证。听起来简单但每一步里面都有不少细节。比如镜像格式不对导致上传失败、ServiceOM里资源池没关联上导致云主机发不出来、网络平面配错了导致虚机起来了但不通网——这些问题我都遇到过。这篇文章适合谁看如果你是刚接触HCS的运维工程师或者正在做私有云项目的实施人员再或者你是开发同学需要自己发一台云主机来跑测试那这篇内容应该能帮你省下不少时间。我不打算照搬官方手册的目录结构而是按照实际操作的顺序把每个环节的关键点、容易出错的地方、以及我自己的经验都揉进去讲。整个流程的设计思路是这样的镜像是一切的基础没有可用的镜像就发不了云主机所以第一步必须把镜像准备好镜像准备好之后需要通过特定的通道上传到HCS的镜像服务里然后要在ServiceOM里确认计算资源、存储资源、网络资源都就绪最后才是发放云主机并做连通性验证。这个顺序不能乱乱了就会反复返工。2. 镜像制作的核心细节与实操要点2.1 镜像格式选择与制作工具HCS 8.1.1支持的镜像格式主要有几种qcow2、vhd、zvhd2、raw。其中zvhd2是华为自有的格式在FusionCompute时代用得比较多qcow2是KVM生态里最通用的格式HCS底层基于KVM所以qcow2是最稳妥的选择。我一般优先用qcow2兼容性好制作工具也多。制作镜像的工具链我常用的是virt-manager virt-sysprep qemu-img这套组合。virt-manager用来创建和安装虚拟机virt-sysprep用来做镜像的通用化处理清除机器ID、SSH host key、日志等qemu-img用来做格式转换和压缩。如果你习惯用命令行也可以直接用qemu-img create创建磁盘、用virt-install安装系统。注意制作镜像时一定要用精简置备thin provisioning的磁盘否则镜像文件会非常大。qcow2格式天然支持精简置备但如果你从其他格式转换过来记得用qemu-img convert -O qcow2重新转换一次。2.2 操作系统安装与通用化处理安装操作系统这一步有几个关键设置必须注意。第一磁盘分区建议用LVM或者简单的单分区方案不要搞太复杂的分区结构否则镜像在不同硬件规格的云主机上可能会有问题。第二网卡配置建议用DHCP因为云主机的IP是发放时动态分配的如果你在镜像里写死了静态IP发出来的云主机网络就不通。第三SELinux和防火墙建议在镜像里就关掉或者设成permissive不然云主机起来之后各种服务被拦截排查起来很烦。系统装完之后必须做通用化处理。这一步很多人会忽略但不做的话用同一个镜像发出来的多台云主机可能会有相同的machine-id、相同的SSH host key导致冲突。具体操作# 清除machine-id echo -n /etc/machine-id rm -f /var/lib/dbus/machine-id ln -s /etc/machine-id /var/lib/dbus/machine-id # 清除SSH host key rm -f /etc/ssh/ssh_host_* # 清除日志 rm -rf /var/log/* rm -rf /tmp/* rm -rf /var/tmp/* # 清除bash历史 history -c cat /dev/null ~/.bash_history如果你用的是virt-sysprep可以直接一条命令搞定virt-sysprep -a /path/to/disk.qcow2 --operations defaults,-ssh-userdir2.3 镜像格式转换与压缩系统安装和通用化做完之后磁盘文件可能是raw格式或者qcow2格式。如果是raw格式需要转换成qcow2qemu-img convert -f raw -O qcow2 /path/to/disk.raw /path/to/disk.qcow2转换完成之后建议做一次压缩减小镜像体积qemu-img convert -O qcow2 -c /path/to/disk.qcow2 /path/to/disk-compressed.qcow2-c参数表示压缩对于qcow2格式压缩后体积通常能减少30%到50%。压缩完之后用qemu-img info确认一下镜像信息qemu-img info /path/to/disk-compressed.qcow2输出里会显示virtual size和disk sizevirtual size是云主机看到的磁盘大小disk size是实际占用的存储空间。确认没问题之后镜像制作这一步就算完成了。实操心得我建议在镜像里预装一些常用的工具比如cloud-init、qemu-guest-agent。cloud-init用于云主机首次启动时的初始化配置比如注入密码、配置网络qemu-guest-agent用于HCS平台和云主机之间的通信比如查询IP、优雅关机。这两个东西不装的话云主机的很多功能会受限。3. 镜像上传与ServiceOM资源配置3.1 通过ServiceOM上传镜像镜像制作好之后下一步是上传到HCS。HCS 8.1.1里上传镜像的入口在ServiceOMService Operation Management控制台。登录ServiceOM之后找到镜像服务或者镜像管理菜单点击创建镜像。上传的时候有几个参数需要填写参数说明建议值镜像名称镜像的显示名称按规范命名如CentOS-7.9-x86_64镜像类型公共镜像或私有镜像测试用私有镜像生产用公共镜像操作系统类型Linux或Windows根据实际选择镜像格式qcow2/vhd/zvhd2/rawqcow2最小磁盘云主机的最小磁盘大小建议≥镜像virtual size最小内存云主机的最小内存建议≥1GB上传方式有两种本地文件上传和URL拉取。本地文件上传适合小镜像几个GB以内大镜像建议先传到对象存储或者HTTP服务器然后用URL拉取的方式速度更稳定。注意上传镜像时如果报格式不支持或者镜像文件损坏先检查镜像格式是否在支持列表里再用qemu-img check检查镜像文件是否完整。我遇到过一次因为传输过程中文件损坏导致上传失败的情况重新传一遍就好了。3.2 ServiceOM里的资源池配置镜像上传成功之后还需要确认ServiceOM里的资源池配置是否就绪。资源池包括计算资源池、存储资源池和网络资源池。计算资源池就是物理主机的集群在ServiceOM里可以看到每个集群的CPU和内存总量、已分配量、剩余量。发放云主机之前确认目标集群的剩余资源足够。存储资源池就是后端存储可能是本地盘、SAN存储或者分布式存储。网络资源池就是可用的网络平面包括管理平面、业务平面、存储平面等。在ServiceOM里这几个资源池需要提前配置好并关联到对应的可用分区AZ。如果资源池没有关联到AZ发放云主机的时候会看不到可选的资源。# 在ServiceOM的命令行界面如果有SSH权限可以查看资源池状态 # 查看计算资源 nova hypervisor-list nova hypervisor-show hypervisor-id # 查看存储资源 cinder service-list cinder pool-list # 查看网络资源 neutron net-list neutron subnet-list这些命令需要在HCS的OpenStack环境里执行ServiceOM的底层就是OpenStack所以大部分OpenStack命令都能用。不过HCS对OpenStack做了不少定制有些命令的输出格式和原生OpenStack不太一样这个要注意。3.3 镜像注册与元数据配置镜像上传到HCS之后还需要在OpenStack的Glance服务里注册如果是通过ServiceOM上传的通常会自动注册。注册的时候需要指定镜像的元数据比如hw_disk_bus、hw_vif_model、os_type等。# 查看镜像列表 glance image-list # 查看镜像详情 glance image-show image-id # 更新镜像元数据 glance image-update image-id --property hw_disk_busvirtio --property hw_vif_modelvirtiohw_disk_bus和hw_vif_model这两个参数很关键。hw_disk_bus指定磁盘总线类型建议用virtio性能最好hw_vif_model指定网卡模型也建议用virtio。如果设成ide或者e1000性能会差很多。实操心得如果你在发放云主机时发现磁盘识别不到或者网卡不通大概率是这两个参数没设对。我建议在镜像注册阶段就把这两个参数设好后面发放云主机时就不用再改了。4. 云主机发放与全流程验证4.1 通过ServiceOM发放云主机资源池和镜像都就绪之后就可以发放云主机了。在ServiceOM控制台里找到云主机或者弹性云服务器菜单点击创建云主机。发放时需要填写或选择以下参数可用分区AZ选择之前配置好资源池的AZ规格Flavor选择CPU和内存规格比如2核4GB、4核8GB等镜像选择之前上传的镜像磁盘系统盘大小建议≥镜像的virtual size网络选择网络平面和子网安全组选择安全组规则登录方式密码或密钥对填写完成之后点击创建HCS会调度到合适的计算节点上创建云主机。创建过程通常需要几十秒到几分钟取决于镜像大小和存储性能。# 也可以通过OpenStack命令发放云主机 nova boot --flavor flavor-id --image image-id --nic net-idnetwork-id --security-group sg-id vm-name4.2 云主机连通性验证云主机创建成功之后第一件事是验证连通性。在ServiceOM控制台里可以看到云主机的IP地址用ping测试一下ping vm-ip如果ping不通先检查安全组规则是否放通了ICMP再检查网络平面和子网配置是否正确。如果ping通了再用SSH登录ssh rootvm-ip登录成功之后检查一下磁盘、网卡、DNS等是否正常# 检查磁盘 lsblk df -h # 检查网卡 ip addr ip route # 检查DNS cat /etc/resolv.conf nslookup www.example.com如果这些都正常说明云主机发放成功整个流程就走通了。4.3 常见问题与排查技巧在实际操作中我遇到过不少问题这里整理一个速查表问题现象可能原因排查方法解决方法镜像上传失败格式不支持或文件损坏qemu-img check检查文件转换格式或重新上传云主机创建失败资源池不足或未关联AZ检查集群剩余资源扩容或调整AZ配置云主机ping不通安全组未放通ICMP检查安全组规则添加ICMP规则云主机SSH登录失败密码错误或密钥不对检查登录方式重置密码或更换密钥云主机磁盘识别不到磁盘总线类型不对glance image-show检查元数据设置hw_disk_busvirtio云主机网卡不通网卡模型不对glance image-show检查元数据设置hw_vif_modelvirtio云主机DNS解析失败DNS配置不对cat /etc/resolv.conf配置正确的DNS服务器避坑技巧我建议在发放云主机之前先用一个小规格比如1核1GB的云主机做测试确认镜像、网络、存储都没问题之后再用大规格发放生产云主机。这样可以避免因为镜像问题导致大批量发放失败。5. 镜像与云主机的进阶优化5.1 镜像瘦身与启动加速镜像体积直接影响云主机的发放速度和存储占用。除了前面提到的压缩之外还可以做以下优化删除不必要的软件包比如开发工具、文档、多语言包等清理缓存和临时文件yum clean all、apt clean等使用精简版操作系统比如CentOS Minimal、Ubuntu Server等关闭不必要的服务比如蓝牙、打印服务等启动加速方面可以在镜像里预装cloud-init并配置好初始化脚本这样云主机首次启动时可以自动完成网络配置、密码注入等操作减少手动干预。5.2 云主机模板与批量发放如果需要批量发放相同配置的云主机可以创建云主机模板Flavor Image Network Security Group的组合然后在ServiceOM里基于模板批量发放。这样可以避免每次发放都手动选择参数提高效率。# 创建云主机模板OpenStack Heat heat stack-create -f template.yaml stack-nameHCS 8.1.1支持Heat编排可以用YAML模板定义云主机的完整配置然后一键发放。对于需要发放几十台甚至上百台云主机的场景Heat编排是最高效的方式。5.3 镜像版本管理与回滚在生产环境里镜像的版本管理很重要。我建议每次更新镜像时都保留旧版本并且用清晰的命名规则区分比如CentOS-7.9-v1.0、CentOS-7.9-v1.1。如果新版本镜像有问题可以快速回滚到旧版本。在ServiceOM里镜像可以设置公共或私有属性。公共镜像对所有租户可见私有镜像只对创建者可见。生产环境建议用公共镜像测试环境可以用私有镜像。实操心得我习惯在镜像的description字段里记录镜像的制作日期、包含的软件版本、已知问题等信息。这样过几个月之后再来看也能快速回忆起这个镜像的来龙去脉。6. 个人实操体会与建议整套流程走下来最深的体会是镜像制作是最关键的一步也是最容易出问题的一步。镜像做得好后面上传、发放、验证都会很顺镜像做得不好后面各种奇怪的问题都会冒出来。所以我在镜像制作阶段会花比较多的时间反复测试确保镜像在各种规格的云主机上都能正常启动和运行。另外ServiceOM的界面操作虽然直观但有些配置项藏得比较深第一次用的时候容易找不到。我建议先把ServiceOM的菜单结构熟悉一遍知道每个功能在哪个位置后面操作起来会快很多。最后分享一个小技巧如果你在发放云主机时遇到资源不足的报错但明明看到集群还有剩余资源那大概率是资源超分比的设置问题。HCS支持CPU和内存的超分但超分比设得太高会导致实际可用资源不足。在ServiceOM里可以查看和调整超分比建议生产环境CPU超分比不超过1:4内存超分比不超过1:1.5。这个流程后续还可以扩展的方向包括镜像的自动化制作流水线、云主机的自动化发放脚本、以及基于监控的弹性伸缩配置。这些内容等我后面再找时间整理。
返回列表