昨天在看VMware的HA官方文档,看着看着脑子突然想起大二夜里玩lol时的情景:
当时玩的正嗨突然被告知一会要停机维护,不得已打完那把下了。然后躺在被窝里浑身不自在,被突然阉割的渴望搞的真是很不爽。
不知大家玩游戏时有没有遇到过类似问题,在兴头上嗨的正爽突然想起一会要维护,兴致立马就被扼杀。特别不舒服。
如今又想起这幕情景结合所学的虚拟化知识,能解决这个让我们很不爽的症结么?
昨天看到的VMware中关于计划停机的讲述如下:
减少计划的停机时间
计划的停机时间通常占数据中心停机时间的 80% 以上。硬件维护、服务器迁移和固件更新均需要将物理服务器
停机。为最小化此停机时间的影响,会强制组织延迟维护,直到出现不便且难以调度的停机时间段。
通过 vSphere,组织可以显著减少计划的停机时间。由于 vSphere 环境中的工作负载无需停机或服务中断就可
以动态移动到其他物理服务器,所以服务器维护无需应用程序和服务停机就可以执行。通过 vSphere,组织可
以执行以下任务:
消除常见维护操作的停机时间。
消除计划的维护时间段。
随时执行维护,无需中断用户和服务。
由于 VMware 环境中的工作负载无需中断服务即可动态移动到不同的物理服务器或基础存储器,所以,通过
vSphere 中的 vSphere vMotion 和 Storage vMotion 功能,组织可以减少计划的停机时间。管理员可以快速
而完整地执行透明的维护操作,无需强制调度不方便的维护时间段。
关于虚拟化解决或减少我上面提到的游戏维护时间,由文档我们知道这个涉及到计划停机。
那么问题来了,虚拟化解决的计划停机都有哪些方面?还有一般的计划停机都是要解决什么问题?
虚拟化解决的计划停机问题:硬件维护、服务器迁移、固体更新。
一般的计划停机解决的主要都是物理层方面的硬件问题。
这个问题我们知道了,ok那么另一个问题来了,游戏更新打补丁这又与计划停机里面的哪块有关?一个游戏正常运营都需要靠哪些方面,而更新游戏主要和什么有关?
很显然这个和数据库密不可分,我们都知道数据库这东西,不像硬件,它的更新维护必须要停止或暂停原有的服务之后进行更新升级。数据库不是硬件,因此虚拟化解决的计划停机不适用它。那么我先前提到的问题貌似就已无解了。
但是这个时候突然我又想起虚拟化的业务连续性解决方案。也就是VMware中的Fault Tolerance(容错)。
文档关于它的描述是这样的:
vSphere Fault Tolerance 提供连续可用性
vSphere HA 通过在主机出现故障时重新启动虚拟机来为虚拟机提供基本级别的保护。vSphere Fault Tolerance
可提供更高级别的可用性,允许用户对任何虚拟机进行保护以防止主机发生故障时丢失数据、事务或连接。
Fault Tolerance 通过确保主虚拟机和辅助虚拟机的状态在虚拟机的指令执行的任何时间点均相同来提供连续可
用性。使用 ESXi 主机平台上的 VMware vLockstep 技术来完成此过程。vLockstep 通过使主虚拟机和辅助虚
拟机执行相同顺序的 x86 指令来完成此过程。主虚拟机捕获所有输入和事件(从处理器到虚拟 I/O 设备),并
在辅助虚拟机上进行重放。辅助虚拟机执行与主虚拟机相同的指令序列,而仅单个虚拟机映像(主虚拟机)执
行工作负载。
如果运行主虚拟机的主机或运行辅助虚拟机的主机发生故障,则会发生即时且透明的故障切换。正常运行的
ESXi 主机将无缝变成主虚拟机的主机,而不会断开网络连接或中断正在处理的事务。使用透明故障切换,不会
有数据损失,并且可以维护网络连接。 在进行透明故障切换之后,将重新生成新的辅助虚拟机,并将重新建立
冗余。整个过程是透明且全自动的,并且即使 vCenter Server 不可用,也会发生。
FT提到主辅问题,也就是说我们如果想让游戏不因为数据库更新而影响我们玩游戏的话,需要有两个数据库,一个做主数据库一个做辅数据库。当主数据库进行更新时,辅数据库这时顶上来,这时虽然游戏的一个数据库正在更新,但是我们可以正常游戏。
我们还需要提前设置个策略,当主数据库更新完毕,之后登录的玩家连接到主数据库上,进行新内容下载(当然我们还需要在游戏里面通知更新结束,让玩家打完当前的本或局后进行下线更新),当辅数据库的玩家都下线后,我们再让二者同步。这时主数据库依旧是主数据库,辅数据库依旧当它的辅数据库。
这样看起来问题已经完美解决,但是为什么各大游戏公司依旧是找计划停机维护,不照顾我们玩家的桌面体验?
这就又设计成本与盈利问题了,大家知道要实现FT一个公司的这个游戏需要一个一模一样的数据库或者数据中心,大家知道新建一个数据库或数据中心的成本是多大么?我不知道它的成本是多少,但是一定不低,因为这么多年他们都不采取这种措施。
这是按照我的思路写的,其实如果明白这个问题的实质后,就可以跳过前面一步直指虚拟化的业务连续性解决方案。
但是我觉得,我这么思考问题的顺序还是有一点价值的,弯路也有弯路的价值。
结论很明显,以现有的虚拟化技术可以解决我说的问题。但是现实很残酷,成本高昂使得以营利为目的的各大游戏公司不过多考虑我们玩家的桌面体验。大家看开点吧