我们的生产环境部署了 2 个 docker swarm 集群,集群 swarm-a 用于专门跑博客站点,集群 swarm-b 用于跑其他站点,manager 节点用了阿里云包月服务器,worker 节点用了阿里云抢占式实例。

今天 11:03 收到阿里云的短信通知“您的抢占式实例:实例ID(实例名称)因库存变化,即将进入释放状态”,一共被释放了3台,其中1台是集群 swarm-a 的节点服务器,1台是集群 swarm-b 的节点服务器。释放后,2个集群稳如泰山,应用的正常运行并没有受到影响,当时集群的剩余服务器够用,也就没有立即加服务器。

中午 12:23 又收到阿里云抢占式实例释放的短信通知,这次是集群 swarm-b 的1台服务器,释放后集群依然稳如泰山。但这时我们紧张起来了,怎么回事,今天一天释放的服务器顶之前的半年,为了以防继续有服务器被释放,我们赶紧新购服务器添加到集群。

这次购买的是阿里云第六代企业级 c6 服务器(包月),本来虽然少了2台服务器但集群运行正常,但是将新购服务器加入集群后竟然引发了集群故障(当时不知是新购服务器引起的),容器之间的网络通信出现了奇怪问题,无法正常通信。12:40 左右,集群 swarm-b 全面故障,除博客站点之外的其他站点都无法正常访问。

继续加服务器,但问题依旧。后来发现,重启容器可以恢复正常,于是一个一个服务重启。

docker service update --force server_name

13:00 左右开始,各个应用开始逐步恢复正常。

在恢复的过程中才发现最先加入的那台服务器的异常表现,上面的容器运行状态都显示正常,但本机 80 端口却连不上,通过 docker node update --availability drain 命令卸载所有容器后问题依旧,后来通过阿里云控制台重启这台服务器后立马恢复了正常,非常奇怪。

非常抱歉!这次故障给大家带来很大的麻烦,请大家谅解。我们会吸取教训,改进生产环境的部署方案。

最新文章

  1. Select into 的特点
  2. c#读写文件
  3. ABAP POPUP函数
  4. SQL基础巩固1
  5. SAP第一轮面试之英语群面
  6. mysql集群安装(centos)
  7. qconf 介绍
  8. Python一路走来 Python算法
  9. Could not load file or assembly 'Oracle.DataAccess' or one of its dependencies. An attempt was made to load a program with an incorrect format.
  10. ZOJ 3795 Grouping 求最长链序列露点拓扑
  11. HDU ACM-Steps
  12. mapreduce on yarn简单内存分配解释
  13. Mysql 锁机制
  14. Mysql常用基础操作(备忘录)
  15. [NOIP2017赛前复习第二期]复赛考试技巧与模版-普及组
  16. Python 递归计算分数数列
  17. 简单H5单页面真机调试
  18. ios开发GCD(2)-dispatch_semaphore_t信号量计数器
  19. 转:Eclipse 各种小图标的含义
  20. chattr改变文件属性

热门文章

  1. ASP.NET Core结合Nacos来完成配置管理和服务发现
  2. MySQL EXPLAIN结果集分析 - 附带大量案例
  3. 手工释放服务器的swap分区缓存
  4. Docker Swarm从部署到基本操作
  5. 我真的不想再用 JPA 了
  6. android小工具-系统音量管理器
  7. unittest核心要素
  8. Thinkphp5.0 仿百度糯米 开发多商家 电商平台(完整版)
  9. 外部服务器使用jedis操作redis数据库
  10. Kubernetes学习之Kubernetes架构