记一次扩容
前言
随着公司业务的发展,紧跟时代潮流,作为服务支撑的技术侧也迎来了更大的挑战。
正文
应用的大致扩容流程大概是:
申请机器(注意机房等问题) -- 部署应用 -- 加自动化部署,监控等 -- 申请各种权限(主要是网络权限) -- 启动应用(观察权限是否有遗漏) -- 灰度发布(继续验证) -- 挂一个节点(分流部分流量) -- 验证没问题再挂全部节点
上面的流程,对于不同的公司来说可能也不太一样,就不细说了,这里主要说一下,从申请权限到启动应用的过程中遇到的问题。
问题一:白名单问题
问题描述:
在确认网络权限打通的情况下,telnet ip port 仍然不通,这个时候就需要考虑防火墙和白名单的问题了。推进排查细节就不详细描述了,确实是经过了一番波折,这里记录一下,仅供参考。我这边最后排查出来的原因确实是对端存在白名单的原因。
问题二:oracle库连不上的问题
首先老项目中使用的应该是 oracle rac的 scan ip, 咨询了DBA,他建议我申请cluster中所有节点的网络权限,然后告诉了我所有节点的ip;
但是我申请完之后,发现项目启动的时候还是报错java.net.SocketTimeoutException: connect timed out
;
这里主要说一下排查的思路:
- 首先
netstat
或者ss
命令去看一下项目启动的时候 tcp的连接情况:netstat -ant | grep 1521
; - 我这边发现本地在尝试和两个未知ip的1521端口建立tcp连接,这两个连接是DBA之前没有告诉我的,我也没有申请对应的网络权限,而且这些tcp连接的状态都是
SYN_SENT
; - 联系了一下DBA,说明了一下现象,他说这两个是对应的物理IP,忘了告诉我了;
- 申请了这两个ip的网络权限,解决