在国内阿里云ECS上搞环境小贴士

昨天下午对一台阿里云的线上测试环境的机器进行压测,压到快下班的时候所有容器都挂了,机器上的HAProxy启动不了,我直接敲sudo reboot重启机器,结果机器再起不能。 抱着希望提了个工单,好长时间没人理,挺绝望的。我于是下定决心强行关机,重装系统,系统启动正常之后,邮件、短信通知我工单系统有回复了: 我坚信比我还专业的阿里云工程师肯定看不上我这样的运维,于是五星好评分期付款,开始跑机器初始化脚本。 初始化很快,建立用户、Docker还有各种Packages一下子就安装好了,最后安装HAProxy、Ansible和配置Jenkins的时候击碎了我的玻璃心,网络要么无法连接,要么是100B/s的下载速度,后面试了很多方法,加快了这个速度,遂记录下来以示后人。以下均为阿里云于2020年4月17日19点提供的Ubuntu 16.04的ECS主机上的操作。 HAProxy自带的源更新到最新之后,HAProxy为1.6.X版本,不支持在监听上追加expose-fd listeners,也就是0宕机重载功能,这个特性在1.8版本上才支持。光速吟唱:简单点就是本质上是利用新Linux Kernel里SO_REUSEPORT的Socket选项,允许同一台主机上的多个Socket同时binding在同一个TCP Port上,HAProxy在reload时把旧进程listener FD传给新进程listener,旧进程处理完当前连接后退出,新进程处理新的用户连接。…