因公司要求需要在云平台上部署应用产品的演示环境,要求客户端能通过互联网直接访问环境。期间遇到了好多之前从未遇到过的问题,前前后后共花了差不多一个月的时间,真的是好事多磨。
平台架构:客户端使用.net,中间件用tuxedo,数据库用DB2,数据库与中间件是独立的机器。
第一天:数据库安装,数据导入。
第二天:tuxedo中间件安装部署。tuxconfig配置文件中直接把内网IP地址改成外网地址。
例如 WSL = ... - n //123.100.1.90:9001
tmboot后Ulog报错:Could not establish listening address on network ...
接着折腾了大概一周时间。先找了网络的专家,说是这台机器的外网地址是通过防火墙映射的,不是本机上的地址。接着找了tuxedo的专家,说tuxedo不支持防火墙外网地址映射。
不信!感觉被忽悠了,咱自己好好百度一下,原来tuxedo有针对防火墙地址映射的这种配置。
例如:WSL = ... -n //inside IP:port-H //outside IP:port -p minPort -P MaxPort -m 5 -M 10 -x 10
tmboot一切正常,没有再报那个错误了,客户端也能正常连接访问了。
本以为一切搞定了,没想到接下来的问题更烦人了。
故障现象:偶尔发生tuxedo的service调用需要15分钟的情况,导致前台显示超时报错,但是出现问题后接着再调用就正常了。已经排除框架和业务程序导致的问题。
虽然事务结果也正常执行了,但是客户端应用体验度太差了,赶紧找原因。
查后台服务日志,发现service执行tpbegin连接数据库开始事务到返回需要的时间15分钟。又去找tuxedo专家了,说是数据库的问题。tuxedo专家也找了数据库的专家一起帮忙看了,并且自己写service测试访问数据库,几千次的连续测试也没用发现“15分钟”的故障。
两周时间快过去了,没有任何进展。急呀!这可怎么办,专家都解决不了。
领导也等不急了,指了两条路:1、重新安装系统,再试。2.云端部署产品演示环境的任务放弃,重新回到大地部署。
如果走第一条路重新安装还发生这个问题,怎么办?走第二条路的话,岂不是之前大家辛辛苦苦的努力全要付之东流了。
不甘心呀!
不知为何,此时脑海中出现了一个哥么,他在系统集成方面经验非常丰富的系统集成项目经理,说不定他能知道。赶紧给他打电话,电话中把问题描述给他听了。哥么分析下来,应该是tuxedo访问数据库时的连接问题,可能是数据库连接数不够。马上检查数据库连接数的配置,自动分配没有问题。
虽然他没有能立即解决问题,但给了提示。数据库session是否有问题?马上查看数据库连接,发现数据库的空闲连接大概一段时间(2小时左右)后会自动断开。但是我们的tuxedo连接数据库都是长连接的,为何会断呢?应该是防火墙的问题。
原来应用服务器和数据库服务器部署在了两个网段,两个服务器之间的信息交互都经过防火墙的。之后就找了网管,把数据库服务器的IP移到了与应用服务器同一个网段内。
第N天,问题终于得到了彻底解决,产品也终于成功入云了。
小结一下:
1、国企单位不同部门之间的协同真的比较费劲。
2、专家的话不能全信,朋友的建议有时候更管用。
3、查问题不要放过每个细节,看似不可能出现的问题,也要仔细核查。
总之,只要功夫深,铁杵磨成针!再次感谢帮助自己的所有专家、同事、朋友。