OpenStack自动化部署与高可用虚拟控制节点设计

By | 2017年5月5日

为了大家的部署方便与维护着想,我决定把这俩东西再完善一下然后再把实现源码放出来,虽不能做到产品级但是也能对付很多场景了。

自动部署(类似mirantis但更友好)
0. livecd+独立配置分区
1. 环境配置
2. PXE安装
3. 自动化脚本

Hosted-crotroller(控制节点虚拟化)
1. etcd
2. 健康检查与评分
3. 脑裂防护
4. 使用Paxos写事务机制,如果时间差机制不工作的话。

下面给大家简单解释一Paxos和时间差机制的原理(解释的不够到位,有兴趣的看实现吧):

1. Paxos,原文可参考https://www.quora.com/Distributed-Systems-What-is-a-simple-explanation-of-the-Paxos-algorithm

此场景实用于一写多。

两人结婚,牧师问他俩,“你们愿意吗?”,“我愿意”,“我愿意”。
那么OK,就结了。

这时候假如有一对姐妹同时喜欢一个男的,牧师问他仨,“你们愿意吗”,“我愿意”,“我愿意”,“我愿意”。
如果这样,那么男的就能娶俩,如果任何一个没回答,那抱歉了一个都娶不成。

在实现时,主节点问下面节点,我要给你们都写个东西,你们都准备好没?“好了”,“好了”,“好了”,“没好”。
75%(>50%)(Quorum)的人都准备好了,那么我就写了,没准备好的那个我记住你了。

2. Paxos时间差机制(sanlock变种)
这个机制我设计成只针对这个场景的,要求时间同步至数秒级别(这要求已经极低了。。),多写一,也可以扩展。

控制节点要你们去存储上填个表格,你们现在都能写,对吧?“对”,“对”,“对”,“不能”。。
OK,不能的那个我记住你了,其他人都来写吧。

控制节点看看表,再看看这个地方之前记的时间,嗯,过去2分钟了,写一下,我在A身上跑着;
然后A看看表,再看看这个地方之前记的时间,嗯,还没过去2分钟,不写,之前体检合格,控制节点在我身上;
然后B看看表,再看看这个地方之前记的时间,嗯,过去2分钟了,签个到留个时间,体检优秀;
然后C看看表,再看看这个地方之前记的时间,嗯,过去2分钟了,签个到留个时间,体检合格;

然后控制节点每隔1分钟看一下,嗯,你们都很健康。
又过了3分钟,哎?那个C你没写啊,去跟D站一起。

忽然,大家在填表的时候发现,控制节点都过了3分钟没写了,B就启动一下控制节点。
A发现自己与外界失去联系,就把自己身上都控制节点关了,等待救援。

3. 基于etcd的时间差机制
上述的简化版,填的表格更少,时间差一致
大家一起写etcd的那个地方。“好”,“好”,“好”。
哎?C你没写,再见。
哎?控制节点呢?来A你检查一下启一下控制节点,B现在状态不佳。
由于控制节点之前在你A上,它现在不行了,扣A个10分,现在分没B高啊。
A你清理下现场让B去启动吧。

试图设计一个任何场景都能应对的功能。

发表评论

电子邮件地址不会被公开。