原标题:这4个知识应该掌握——OpenStack 裸金属服务 ironic 实施中的最佳实践点
OpenStack的裸金属服务Ironic支持物理机的添加,删除,电源管理及安装部署,让硬件基础设施资源分钟级快速交付成为可能。另外,还可以自定义RAID。更令人兴奋的是,还可以通过支持多租户,让裸金属与VPC内的虚拟机互通。
那么,在ironic实施过程中,我们如何能方便debug user/deploy image?如何在单region下,同时支持vm及baremetal?如何以最低的运维管理成本支持baremetal调度?如何支持部署时按需RAID?如何实现baremetal与vm网络互通?
社区最近组织OpenStack ironic技术交流活动中,主要围绕ironic实施过程中的如上核心问题,展开详细讨论以及相关的经验分享。同时也拓展到了其它方面,比如raid多机型支持/windows console支持问题。本文将对如上问题进行归类整理。(分享及整理者:赵海川@新浪云计算)
1. RAID 相关
** 问:如何支持部署时按需RAID? **
答:使用element proliant-tools制作deploy image。element proliant-tools会在ipa ramdisk中安装一个rpm包hpssacli(HP的RAID管理工具),和一个python module proliantutils(里面ProliantHardwareManager继承了ironic_python_agent.hardware:GenericHardwareManager,实现了get_clean_steps/create_configuration/delete_configuration)。
DIB_DEV_USER_USERNAME=devuser DIB_DEV_USER_PASSWORD=devuser DIB_DEV_USER_PWDLESS_SUDO=true disk-image-create centos7 ironic-agent devuser proliant-tools -o ironic-deploy
配置RAID。
ironic --ironic-api-version 1.15 node-set-target-raid-config $ironic_node_uuid '{"logical_disks": [{"size_gb": "MAX", "disk_type": "hdd", "raid_level": "1", "is_root_volume": true, "volume_name": "root_volume"}, {"size_gb": "MAX", "disk_type": "hdd", "number_of_physical_disks": 4, "raid_level": "5", "volume_name": "data_volume"}]}'
做RAID。raid config schema。
ironic --ironic-api-version 1.15 node-set-provision-state $ironic_node_uuid clean --clean-steps '[{"interface": "raid", "step": "delete_configuration"}, {"interface": "raid", "step": "create_configuration"}]'
# 注意steps之间的先后顺序
ironic --ironic-api-version 1.15 node-show $ironic_node_uuid
** 问:社区代码支持HP机器的raid,怎么开发其他加的raid? **
答:如需支持其他机型做raid,需要做的是实现所需机型的HardwareManager,继承自ironic_python_agent.hardware:GenericHardwareManager,实现get_clean_steps/create_configuration/delete_configuration。
这种需求,建议为不同机型提供相应的deploy image,里面封装相应的HardwareManager及底层Raid管理工具即可。
对于你的需求,可以提供两个deploy image。
一个封装HP的HardwareManager适配,用于HP机型做RAID;
另一个则封装DELL的HardwareManager适配,用于DELL机型做RAID。
2. 多租户相关
** 问:如何实现baremetal与vm网络互通? **
答:
1. ironic port-create指定上联switch相关信息;
2. nova boot 使用 tenant network;
3. ironic配置使用neutron interface;
4. neutron配置使用自研ml2 driver, 支持switch vlan/vxlan/turnel ops;
3. 调度相关
** 问:如何以最低的运维管理成本支持baremetal调度? **
答:官方推荐的方法需要使用新tag,且nova和ironic都需要操作且保证一致,太繁琐。
compute node入库时,都会记录自己的hypervisor_type。因此flavor上直接打hypervisor_type tag即可。
# add spec for all nova flavor
vm_flavor_ids=`nova flavor-list|grep True|awk '{print $2}'`
for vm_flavor_id in $vm_flavor_ids; do nova flavor-key ${vm_flavor_id} set capabilities:hypervisor_type=QEMU; nova flavor-show ${vm_flavor_id}; done
# add spec for all baremetal flavor
nova flavor-create ${baremetal_flavor} auto $RAM_MB $DISK_GB $CPU
nova flavor-key ${baremetal_flavor} set capabilities:hypervisor_type=ironic
nova flavor-show ${baremetal_flavor}
注意:
1) libvirt driver based compute入库时会记录自己的hypervisor_type为QEMU,注意是QEMU,不是qemu。
2)任何新增的flavor都需要指定自己的capabilities:hypervisor_type,否则可能会调度到错误的hypervisor type node上。nova flavors不指定capabilities:hypervisor_type,则创建vm可能会被调度到任意node上,包括ironic node上。
3)ComputeCapabilitiesFilter要求key必须使用前缀“capabilities:”,否则不认。
** 问:如何在单region下,同时支持vm及baremetal? **
答:如下是官方给出的用于scheduler的配置,不适用于我们nova compute和ironic共存的环境。
# scheduler_host_manager=ironic_host_manager #继承自host_manager,为ironic compute维护了更简单的NodeState和instance_info。用host_manager也行,默认为host_manager。
# scheduler_use_baremetal_filters=True # 默认exact_*_filter不适用于nova compute。为了scheduler同时支持nova compute和ironic compute,需要nova scheduler禁用此配置,且ironic compute设置*_ratio=1.0。默认为False,已禁用。
# scheduler_host_subset_size=9999999 #用于scheduler更均匀调度出host,默认为1,已经可以满足需求
# scheduler_tracks_instance_changes=False #用于跟踪维护instance info。为了scheduler同时支持nova compute,需要开启此配置。默认为True,已开启。
4. 镜像相关
** 问:在实施过程中,我们如何能方便debug user/deploy image? **
答:
1. 镜像制作阶段,注入专用于debug的metadata,且要支持sudo。
DIB_DEV_USER_USERNAME=devuser DIB_DEV_USER_PASSWORD=devuser DIB_DEV_USER_PWDLESS_SUDO=true disk-image-create centos7 ironic-agent devuser -o ironic-deploy
2. wait call-back / clean wait阶段,停掉ironic conductor api,以便暂停deploying / cleaning。
3. 进入deploy / user iamge, debug。
4. 开启ironic conductor api,恢复deploying / cleaning。
(点击阅读原文,可以回顾“OpenStack ironic实施过程中的最佳实践点专题研讨”,其中还有大量OpenStack实施相关问答可供参考)
也可以直接搜索公众号名称“AIX专家俱乐部”或微信号“AIXChina”关注返回搜狐,查看更多
责任编辑: