重新关注docker容器技术

早在2013年的时候我就曾关注过docker这个新事物。那个时候容器其实已经并不是什么新鲜概念了,在docker前头linux世界里就有了lxc和openvz,目光放在整个*nix世界的话容器的历史还要更长。

与lxc基本只用于实验不同,openvz在当时已经是大规模商用的稳定技术,抛开它本身就是一个商用平台的组成部分不说,在当时世界上大部分的廉洁VPS都跑在openvz设施上。我个人对openvz的熟悉程度也比较高,包括一开始的mc平台和之后的梦世界的基础设施都是基于openvz的集群上。

2013年的docker已经是可用的,但是仍然存在许多的致命缺点,就mc来说,aufs文件系统的性能简直差到无法忍受,文件持久化也是个问题,很多人断言docker只适合stateless的微服务。当时也没有overlay网络,构筑一个最简单的集群网络也需要引入大量额外复杂度,以虚拟网桥/交换机来说性能开销也并不小(即使是现在也不建议把bungeecord放在overlay网络的网络里运行,overlay把以太帧封装入udp报文里传输,容器间的流量稍微有个几百mbps带来的额外开销就很夸张了),而最重要的是外围管理设施的缺失。——

现在有swarm,有k8s等等工具,而在当时选择docker就意味着只能集群管理只能自己手lu了。而现在,尽管docker本身的一些缺陷依然没有克服,但是最致命的文件系统性能和网络架构问题已经基本解决,周边设施也随着社区的发展日新月异,可以说跟我刚接触docker时候的0.x版本已经不可同日而语了。

而openvz这些年一直在原地踏步,并且随着el6的大限将至,openvz7不再单独作为基础组件发布,可以遇见到的是openvz的迅速没落,尽管它提供的一些vm级的特性是docker未来也永远不可能提供的。

现今如果要把梦世界的集群迁移到docker还需要解决一些架构上的问题,最麻烦的服务自动发现部分早在几个月前就已经通过插件解决了,代码开源在gayhub,docker世界里有很多为ha准备的工具,我相信如果能够完成迁移工作的话会给服务带来相当大的提升。

对Fedora说再见

我完全使用Linux进行工作已经有好些年了,而从大约5年前开始我就持续稳定的使用Fedora这个发行版,期间从未有过切换到其他发行版,而现在是时候对它说再见了。

之前我就在另外一篇博文上吐槽过Fedora对于自由的定义太过严厉苛刻以至于很多时候使用受到阻碍,这个是小问题。最大的问题是我需要一个长期持续更新特性,或者滚动更新的发行版,而Fedora并不能满足我的这一要求——

Rawhide版本的Fedora虽然是滚动更新的,但是软件包退化与冲突随处可见,完全无法作为一个可用的系统。

当然,说起滚动更新就会想到Arch,但是最终我没有选择Arch,几点理由也有好几个。第一,pacman是一个非常迅速但是weak的包管理器,很多人更多的会看中迅速这个优点,但是我比较介意weak这个缺点,例如没办法实现dnf update @'fedora workstation'这样的迅速更新基础包的指令。

第二,Arch也经常出现包退化的问题,同时会出现断代更新,这意味着为了维持系统持续可用你得频繁的执行更新,但是又可能因为一次包退化而导大规模依赖问题。

最终我选择了将工作系统切换至openSUSE。

我几乎是立刻便享受到了openSUSE带来的一些便利,我是说YaST这个东西,它提供了一系列的系统配置接口让你可以方便的配置系统的方方面面,例如fontconfig这个原本配置起来非常麻烦的东西,使用YaST进行配置简直是小菜一碟。

当然也有一些其他问题,例如openSUSE源里的freetype与Fedora一样没有开启sub-pixel rendering这个极为影响最终视觉体验的功能,我自己编译了一份freetype放到了obs上,有需要自取。

home:caoli5288:freetype2

你也可以在这里体会到zypper这个包管理器的优越性—— 包与源的绑定,即安装这个源里面的freetype后,执行update指令不会被其他源(包括官方源)里面的包所干扰。

Fedora23无法启动VMware软件

其实是VMware使用了内置so这种不科学的打包方式并且打包失误了。解决方法很简单,用编辑器打开/usr/bin/vmware脚本,搜索两处exec关键字,在exec前面插入LD_PRELOAD=/usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1,每次软件更新都需要重新编辑。示例如下。

LD_PRELOAD=/usr/lib/vmware/lib/libglibmm-2.4.so.1/libglibmm-2.4.so.1 exec "$libdir"/bin/"vmware" "$@"

吐槽一下所谓大企业办事的态度。Fedora23自发布以来VMware软件已经经历过了大小更新数次却没有解决问题,而我在数个月前就发送过邮件说明此bug,至今无回复。