浪潮云海InCloud OpenStack 5.6(ICOS 5.6)于2019年完成单一集群规模达500节点的测试,验证了商业发行版的优越性和稳定性,为生产环境部署提供了参考。浪潮陆续推出了ICOS 5.6对社区版的深度优化介绍,本篇将分享解决并发创建2000虚拟机的秘密。
并发创建虚拟机是云计算最常见的应用场景之一,几乎所有的云计算厂商都有相对成熟的解决方案,可以支持数百规模的虚拟机并发创建。然而当并发规模突破1000量级后,确保虚拟机100%成功创建的难度急剧增加,仅有少数厂商的产品能够达到这一水平。
在浪潮基于OpenStack Rocky版本进行的全球最大规模单一集群测试中,浪潮云海InCloud OpenStack 5.6(ICOS5.6)成功完成了100%并发创建2000虚拟机的极限挑战,其首创的分布式锁方案很好地解决了由于Neutron(OpenStack网络组件)瓶颈导致的IP地址冲突问题。
IP地址冲突导致并发创建800虚拟机失败
本次大规模测试过程中,进行并发创建800虚拟机时发现总有失败出现,不能达到100%的成功率,查看Nova(OpenStack核心组件,负责管理和维护计算资源)日志发现如图1所示。针对这一问题,社区提供的解决方案是为create_port增加retry装饰器,一旦监测到提交数据库失败后重新执行create_port来解决冲突,其默认休息0.1秒,最大重试10次。不过,在并发规模过大时,由于间隔较短且重试次数偏少,很容易出现retry次数耗尽也无法成功创建虚拟机的情况,浪潮在并发创建800虚拟机出现失败的原因即在于此。
寻找最优解独创分布式锁方案
经历并发创建800虚拟机失败后,ICOS网络团队尝试增加retry重试次数并加长重试间隔,将设置调整为重试次数20,间隔0.5秒,实现了并发创建800虚拟机成功,如图4所示。