在过去的 1 年时间,我们正在努力实现各项服务的容器化部署。
这听起来来得很晚,但是实际上,可能并不是很晚。
目前容器化技术还是有很多坑等着填,即使已经过去了这么多年,我们认为应该相对稳定了一些,但是实际上手的时候才发现,坑还是有,只是没有发现而已。举几个例子:
1,vxTrans 需要大范围的端口映射,而目前 docker 只能实现单个端口的映射,如果要实现批量的端口映射,绝对不能使用它自己的实现:挨个添加端口。vxTrans 的端口范围很大,如果使用它自己的实现,那么启动容器将会花费大量时间。
2,权限问题,这个大家应该都有碰到过吧,就不展开了。
3,一些系统参数,比如 max open files,可能会受到宿主机影响而被设置为一个很离谱的值,导致某些开源程序组件运行失败(比如 squid)。
4,不可能避免的 CPU 性能损失约 5%。
但是,虽然困难重重,容器技术带来的一些甜点,还是很不错的:
1,隔离,提高资源利用率。
在过去,微林通过一套自建的运维系统来实现自动化部署,由于是直接部署在宿主机系统,因此各项应用可能会有一些设置重叠,这种情况下,容器就很香了,通过容器来隔离各种系统各种特定配置,可以在一台宿主机上同时展开多个业务系统,很好的利用起了宿主机资源,进而降低了成本。
2,更好的协作。
容器技术可以让我们的开发和运维更好地互相协作。实验性代码将构建为特定的镜像,并快速在实机环境中执行(使用不同的资源)。实质上来说,打包镜像相当于提前把准备工作做好,而这部分的工作,由实际的开发人员负责,通常来说更合适。
现在,我们已经为流量优化服务(vxTrans),网络监测服务(vxPing),域名解析服务(vxDNS)完成了容器化部署。接下来,将会思考如何为数据库服务和静态托管实现容器化部署。