python openstack vpc互通_这4个知识应该掌握——OpenStack 裸金属服务 ironic 实施中的最佳实践点...

原标题:这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”关注返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值