非常非常抱歉!16:30 ~ 17:00 左右我们用于跑 ASP.NET Core 站点的 docker swarm 集群再次出现宕机,由此给您带来了很大很大的麻烦,恳请您的谅解!

受此次故障影响的站点有:博问,闪存,班级,园子,短信息,招聘,小组,网摘,新闻,openapi

故障的经过是这样的。

一开始只是访问时偶尔出现 503 ,然后 503 逐渐增多。登录到集群的各个节点,发现有节点 ssh 登录响应慢,登录进去后执行 docker 命令也慢,于是将这个节点下线并重启,但是这样操作后又有新的节点出现这个问题 。。。然后越来越多的节点出现这个问题,造成全面 503 。

发现重启节点服务器不凑效,我们立即选择了重建集群,这本来每次都管用的一招,这次竟然失灵。

swarm1-node1 这个节点通过 docker swarm leave --force 命令强制退出已有集群,重新创建新的集群,并只部署了 docker-proxy-flow 路由容器。

docker swarm init --advertise-addr $(ip address | grep -oP "10\.[^/]+(?=/)")
docker network create --driver overlay cnblogs --subnet 10.128.0.0/16
docker network create --driver overlay proxy --subnet 10.129.0.0/16
cd docker-flow-proxy
./deploy-prod.sh watch 'docker stack ps proxy'

这时没有部署其他应用容器,以免一部署把这个节点压垮,而是将其他节点一一加入集群,但是加集群时傻眼了,出现下面的错误,无法加入。

# docker swarm join --token SWMTKN-1-2tzw5t53lzek5anyv163pc932zfrv1knkbzkxz9vg76uvsx5mz-3rw8fxa7sjbsf9hp55ycvmqxb 10.0.1.7:2377
Error response from daemon: rpc error: code = Unavailable desc = grpc: the connection is unavailable

更恐怖的是所有其他节点都因为同样的问题无法加入集群,不管是 manager 节点,还是 worker 节点。

在当时情急、愧疚、慌乱、无助。。。各种情绪的混杂之下,想到了最后一招,换另外一台服务器重建集群,结果一切正常,很快完成了整个集群的重建,恢复了正常。

用了 5 个 manager 节点,docker swarm 集群竟然还是如此不稳定,这是我们未曾料到的。目前我们需要先仔细分析,然后再评估接下来的应对措施。

再次请您谅解由此给您带来的麻烦!

【更新】

1)重建集群后,今天晚上又有1个节点出现问题,问题表现是容器中 dns 解析失败,造成无法连接阿里云 RDS 数据库,引发应用访问出现 504 错误

System.Data.SqlClient.SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: TCP Provider, error: 25 - Connection string is not valid) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException (0x00000001): Resource temporarily unavailable
at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)

将该节点下线后恢复正常。

2)在 docker 节点上发现大量的 docker 错误日志

dockerd[773]: time="2018-03-15T22:38:08.780376214+08:00" level=error msg="Failed to deserialize netlink ndmsg: Link not found"

云计算之路-阿里云上:docker swarm 集群再次出现故障的更多相关文章

  1. 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障

    3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...

  2. 云计算之路-阿里云上:13:43-13:44之间RDS故障影响了全站的正常访问

    抱歉!13:43-13:44之间,由于阿里云RDS(云数据库)出现2分钟突发故障,影响了全站的正常访问,给大家带来了麻烦,望大家谅解! 故障期间,应用程序日志中记录的错误信息如下: System.Da ...

  3. 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障

    非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...

  4. 云计算之路-阿里云上:针对 docker swarm 故障的部署调整以及应急措施

    针对这周 docker swarm 集群的频繁故障(详见故障一 .故障二.故障三),我们今天对 docker swarm 集群的部署进行了如下调整. 将 docker engine 由  “17.12 ...

  5. 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析

    在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...

  6. 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题

    今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧. 而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存 ...

  7. 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况

    在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...

  8. 云计算之路-阿里云上:启用Windows虚拟内存引发的CPU 100%故障

    今天上午11:35~11:40左右,由于负载均衡中的两台云服务器CPU占用突然飚至100%,造成网站5分钟左右不能正常访问,请大家带来了麻烦,请谅解! (上图中红色曲线表示CPU占用) 经过分析,我们 ...

  9. 云计算之路-阿里云上:SLB会话保持的一个坑

    冒着被大家厌烦的风险,今天再发一篇“云计算之路-阿里云上”.这是在前一篇发过之后真实发生的事情,我们觉得定位问题的过程值得分享.而且估计园子里不少朋友被这个问题骚扰过,我们有责任让大家知道问题的真正原 ...

随机推荐

  1. Gitlab_服务器安装配置

    1:开放防火墙端口 1.  sudo yum install curl openssh-server openssh-clients postfix cronie -y  sudo service p ...

  2. qt 如何安装 Debuggers 调试器 ?

    1.下载 SDK 或 WDK 打开网址:https://developer.microsoft.com/zh-cn/windows/hardware/windows-driver-kit 选择 SDK ...

  3. es6之let和const命令的一些笔记

    let和const命令 let命令 基本用法 let命令用来声明变量,声明的变量只在命令所在的代码块内有效.for循环中很适合使用let命令. 有必要理解的例子: var a = []; for (v ...

  4. HTML入门标签汇总

    HTML入门标签汇总 1.<div></div>用于定义文档的区块,用来划分出独立不同的部分. 2.<h1></h1>数字1-6定义从大到小的标题. 3 ...

  5. 2015最全iOS开发自学视频资料(基础+实战)

    最全的iOS自学视频,包括c,objective-c,UI等等,没有你找不到的,只有你学不会的,只要你想学,这里都有你所需要的. 推荐教程点这里:http://www.mobiletrain.org/ ...

  6. linux 搭建CA服务器 http+ssl mail+ssl 扫描与抓包

    搭建CA服务器 CA服务是给服务器发放数字证书,被通信双方信任,独立的第三方机构 国内常见的CA机构 中国金融认证中心(CFCA) 中国电信安全认证中心(CTCA) 北京数字证书认证中心(BJCA) ...

  7. MFC 多线程及线程同步

    一.MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程.二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环. 工作者线程没有消息机制,通常 ...

  8. Junit4测试报错

    1.字符串数组越界 java.lang.String IndexOutOfBounds Exception:String index out of range:-1 导致: Transaction r ...

  9. 详解Linux Initrd

    在Linux操作系统中,有一项特殊的功能--初始化内存盘INITRD(INITial Ram Disk)技术,而且内核支持压缩的文件系统映像.有了这两项功能,我们可以让Linux系统从小的初始化内存盘 ...

  10. java.sql.SQLException之数组越界

    java.sql.SQLException之数组越界 1.具体错误如下: (1)java.sql.SQLException:Parameter index out of range(0<1) ( ...