虚拟化与云计算硬核技术内幕(30) —— 鹿晗的另一半是吴亦凡吗?

2022-09-08 17:00:29 浏览数 (2)

前情提要:

小E通过努力学习,偷学到了T姐设计的健康码架构,也就是利用弹性伸缩的能力,在人民群众有集中的亮码需求的时候,自动对运行健康码Web前端和Java后台业务的虚拟机进行扩容,并且实时监控虚拟机的运行情况,在虚拟机负载不高时再进行缩容,以形成闭环反馈,提升虚拟机资源的使用效率。

链接在此:

虚拟化与云计算硬核技术内幕(27) —— 健康码与孙大圣(上)

虚拟化与云计算硬核技术内幕(28) —— 健康码与孙大圣(中)

虚拟化与云计算硬核技术内幕(29) —— 健康码与孙大圣(下)

但是,上一期中,WK老师问小E的问题:有没有办法在10秒以内启动一批后台应用实例来分担业务负载呢?

这个问题引导着小E推开了通往新世界的大门。

小E去腾讯专有云TCE的测试环境里面,通过镜像,创建了一个运行了apache httpd前端服务程序的CVM,并且通过Web页面上的VNC控制台看见了CVM启动的全过程。

原来,从CVM开始创建,到Web服务可用,大概20-30秒的时间内,CVM大部分的工作,实际上是在启动Linux操作系统本身,而启动apache httpd的时间只有几秒钟。

小E想到,apache httpd是在Linux下运行的,而宿主机上的操作系统也是Linux,如下图所示:

能不能让虚拟机复用宿主机的操作系统呢,像这样:

想到这里,小E一拍桌子:

这不就是在宿主机上运行多个实例么?(术语曰:混部)

这样,只要宿主机在运行,想启动每个服务实例,耗费的时间可以缩短到秒级别!

但,这种做法遇到了几个难题:

  1. 网络端口冲突。我们知道,Web服务的常用端口为80(http)和443(https)。在httpd启动时,会调用Linux Socket相关的API(如listen函数),监听这两个端口。那么,如果第二个httpd进程实例在启动时,再调用listen函数监听同一主机,同一ip地址的这两个端口,listen函数会返回失败(-1),除非更换其他端口监听,但这将导致负载均衡或者其他APP无法通过默认端口访问这个httpd进程。
  2. 资源冲突。如果两个不同的应用进程混部在同一个Linux系统中,即使监听的socket端口不同,也有可能互相争抢RAM和CPU等资源。
  3. 权限冲突和安全问题。由于启动大部分应用进程需要Linux的root权限 (否则不能监听低于1024的端口),可以对整机做任何事情(包括删数据库)。这是生产环境所不能容忍的。

那么,有没有一种好的方法解决这几个问题呢?

小E在Linux文档的宝库中探索,终于发现了解决这几个冲突问题的道路……

请看下期。

本期段子:

方老师有一天在腾讯会议里面,给客户讲负载均衡与弹性伸缩的工作原理,考虑到是下午2点,怕客户睡着了,讲了个段子:

如果鹿晗和吴亦凡谈恋爱了,大量的访问涌入微博,把微博服务器搞得顶不住了,那么,就需要弹性伸缩和负载均衡配合工作……

旁边的运营媛小H和运营员TOM听了一耳朵,忍不住在办公室笑出了声,并且记住了负载均衡和弹性伸缩的工作原理。

过了些天,小H和TOM问方老师:“当初你是怎么想到跟客户讲鹿晗和吴亦凡谈恋爱的?”

方老师想了想说:“哦,给客户讲段子,本来想讲鹿晗和关晓彤,一紧张嘴瓢了。”

直到有一天资深专家L哥喝了几杯忍不住说出了为什么以前微博在大并发下会崩掉,或者需要关评论的秘密……

下期,下期大家就知道啦。

0 人点赞