今天上午给客户部署系统的时候,居然一不小心踩坑了。因为服务器的部分环境部署我安装的,所以有点坑。我们在项目中使用websocket 做通信处理,系统在内网访问一切正常,当用户从外网访问的时候出现问题了。下面我们先来看下,服务器架构。
1、应用部署环境
序列 | 架构 | 描述 |
---|---|---|
1 | SLB | 一个由多台计算机构成的集群 |
2 | ECS(应用) | Elastic Compute Service,简称 ECS |
3 | ECS(跳转) | 登录部署系统 |
4 | RDS(云数据库) | ApsaraDB for RDS,简称RDS |
5 | NAT | 网络地址转换 |
2.情景再现
用户在访问SLB的时候涉及到ws的地方发生了错误信息。请看下图:
没有握手成功
3.问题追踪
既然系统之前部署在单机上是好的,现在部署在新的环境中内网访问也是好的。那么就是SLB的问题了。一检查果然是的,发生错误之前的配置。如下:
发生错误之前的监听
4.解决方案
解决办法就是将80端口分配给TCP协议,因为http协议运行在TCP之上。
修改之后正确的端口设置
PS:遇到问题时候,一定不能慌,仔细分析错误的细节和原因。祝小伙伴们好运。