云计算之路-阿里云上:docker swarm 集群再次出现故障
非常非常抱歉!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 集群再次出现故障的更多相关文章
- 云计算之路-阿里云上-容器难容:容器服务故障以及自建 docker swarm 集群故障
3月21日,由于使用阿里云服务器自建 docker swarm 集群的不稳定,我们将自建 docker swarm 集群上的所有应用切换阿里云容器服务 swarm 版(非swarm mode). 3月 ...
- 云计算之路-阿里云上:13:43-13:44之间RDS故障影响了全站的正常访问
抱歉!13:43-13:44之间,由于阿里云RDS(云数据库)出现2分钟突发故障,影响了全站的正常访问,给大家带来了麻烦,望大家谅解! 故障期间,应用程序日志中记录的错误信息如下: System.Da ...
- 云计算之路-阿里云上:节点 CPU 波动引发 docker swarm 集群故障
非常抱歉,今天 10:05-10:20 左右,我们用阿里云服务器搭建的 docker swarm 集群又出现故障,又是因为突然的节点 CPU 波动. 受这次故障影响的站点有 闪存,博问,班级,园子,短 ...
- 云计算之路-阿里云上:针对 docker swarm 故障的部署调整以及应急措施
针对这周 docker swarm 集群的频繁故障(详见故障一 .故障二.故障三),我们今天对 docker swarm 集群的部署进行了如下调整. 将 docker engine 由 “17.12 ...
- 云计算之路-阿里云上:从ASP.NET线程角度对“黑色30秒”问题的全新分析
在这篇博文中,我们抛开对阿里云的怀疑,完全从ASP.NET的角度进行分析,看能不能找到针对问题现象的更合理的解释. “黑色30秒”问题现象的主要特征是:排队的请求(Requests Queued)突增 ...
- 云计算之路-阿里云上:Web服务器遭遇奇怪的“黑色30秒”问题
今天下午访问高峰的时候,主站的Web服务器出现奇怪的问题,开始是2台8核8G的云服务器(ECS),后来又加了1台8核8G的云服务器,问题依旧. 而且3台服务器特地使用了不同的配置:1台是禁用了虚拟内存 ...
- 云计算之路-阿里云上-新发现:又一种与虚拟内存有关的CPU波动情况
在云上真是无奇不有,昨天偶然间发现在IIS的应用程序池回收设置中,仅仅设置了一下基于虚拟内存限制的回收,就引发了CPU有规律的波动.在这篇博文中,我们将向大家汇报一下云计算之路上的这个小发现. 在之前 ...
- 云计算之路-阿里云上:启用Windows虚拟内存引发的CPU 100%故障
今天上午11:35~11:40左右,由于负载均衡中的两台云服务器CPU占用突然飚至100%,造成网站5分钟左右不能正常访问,请大家带来了麻烦,请谅解! (上图中红色曲线表示CPU占用) 经过分析,我们 ...
- 云计算之路-阿里云上:SLB会话保持的一个坑
冒着被大家厌烦的风险,今天再发一篇“云计算之路-阿里云上”.这是在前一篇发过之后真实发生的事情,我们觉得定位问题的过程值得分享.而且估计园子里不少朋友被这个问题骚扰过,我们有责任让大家知道问题的真正原 ...
随机推荐
- [HEOI2016]求和 sum
[HEOI2016]求和 sum 标签: NTT cdq分治 多项式求逆 第二类斯特林数 Description 求\[\sum_{i=0}^n\sum_{j=0}^i S(i,j)×2^j×(j!) ...
- JMeter之Http协议接口性能测试
一.不同角色眼中的接口 1.1,开发人员眼中的接口 1.2,测试人员眼中的接口 二.Http协议基本介绍 2.1,常见的接口协议 1.:2. :3. :4.:5.: 6. 2.2,Http协议栈 ...
- bzoj 1814 Ural 1519 Formula 1 插头DP
1814: Ural 1519 Formula 1 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 942 Solved: 356[Submit][Sta ...
- 编写一个js函数,该函数有一个n(数字类型),其返回值是一个数组,该数组内是n个随机且不重复的整数,且整数取值范围是[2,32]
首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; ...
- J2ee的13个规范
以下来自于网络. 1.JDBC(java Database Connectivity): JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题, ...
- FFMpeg在Ubuntu上的安装和使用
在Ubuntu Server上编译FFmpeg FFmpeg是最流行的开源视频转码工具包,在Ubuntu上可以直接通过apt-get安装,但是默认的编码器不提供x264这些non-free的编码器,所 ...
- Activity的生命周期& 启动模式
1.Activity的生命周期 生命周期这个事情,是android工程师最基础的知识,所以今天要讲的是一些不一样的东西. 1.1 OnStart,OnResume,OnPause,OnStop 他们的 ...
- mac上搭建appium+IOS自动化测试环境(一)
阅读须知 由于OS X系统最近才开始接触,所以有些东西也不是很清楚,这里只提供方法不提供原理,能解释清楚的我也会尽量解释.可能也有一些地方说的不严谨或有错的,还望大家指点一二. 实验环境 操作系统: ...
- 转载微信公众号 测试那点事:Jmeter乱码解决
原文地址: http://mp.weixin.qq.com/s/4Li5z_-rT0HPPQx9Iyi5UQ 中文乱码一直都是比较让人棘手的问题,我们在使用Jmeter的过程中,也会遇到中文乱码问题 ...
- Pandaboard ES编译bootloader、xloader、内核、以及安卓系统
Building bootloader and kernel Bootloader Startwith building the bootloader. To learn more about the ...