首页> 自动化运维> 蓝鲸Agent安装随机端口问题处理

[文章]蓝鲸Agent安装随机端口问题处理

收藏
0 267 0

蓝鲸Agent安装随机端口问题处理

黄小坚

【摘要】

   在某项目中蓝鲸平台落地,客户生产环境服务器投产时候发生了这样一个事件:客户有一批机器要安装蓝鲸agent,纳管到蓝鲸平台方便批量操作(护网行动,安全基线、巡检、监控、补丁漏洞修复等等),安装了蓝鲸agent之后并无异常,agent功能也正常,但是服务重启之后出现了端口冲突的情况,导致服务器上的应用起不来。

【正文】

   、问题排查

经过排查,产生端口冲突的原因是服务器的维护人在安装蓝鲸agent时没有发现主机上有应用服务占用了60020端口,而这个端口是蓝鲸agent运行会使用到的一个随机端口(60020-60030)。蓝鲸agent安装时,发现60020被占用,自动选择使用了60021端口,而服务器重启之后,因为蓝鲸agent进程被自动拉起,而此时占用60020端口的应用服务还没有起来,蓝鲸agent60020端口占用了,造成了应用服务进程起不来。


注:熟悉蓝鲸agent安装的同事应该知道蓝鲸agent的端口策略中有BT文件传输的随机端口:60020-60030;所谓随机端口就是会从60020-60030中随机占用端口使用。


   、问题处理

造成问题的原因找到之后,开始着手处理,因为当时情况紧急也担心蓝鲸agent还有其他端口问题,所以当时的处理方式是直接卸载蓝鲸agent释放端口:删除crontabagent监控定时任务,同时停掉agent进程以及相关组件进程如:basereport等;


事后在事件复盘时,找到了更好的处理办法,直接修改蓝鲸agent的配置文件,把随机端口的范围重新定义,把被占用的60020端口排除在外:如下把范围定义为60025-60030


把蓝鲸agent进程重启,检查,此时agent不占用60020端口,占用60025端口


   、需求提出

经过此次事件,客户认为安装蓝鲸agent存在一定的端口冲突风险,要求我们能在安装过程中实现端口探测,探测到端口在使用时便退出agent安装。由于节点管理是原生SaaS,经TAPD提单和腾讯相关人员沟通之后,决定通过更改agent安装脚本的方式满足客户的个性化需求;


Agent安装都是调用蓝鲸NGINX服务器上的/$INSTALL_PATH/data/bkee/miniweb/download/agent_setup_pro.sh脚本实现


直接更改安装脚本agent_setup_pro.sh,添加探测60020等端口是否被占用的命令(其他端口探测可添加):


找到agent_setup_pro.sh脚本中的_start方法,嵌入探测命令:


脚本更改完成之后,在需要安装agent的客户端上模拟端口占用:


使用节点管理测试安装agent,安装失败


查看日志


去掉端口占用之后,重新安装,安装成功:


自动化运维
最近热帖
{{item.Title}} {{item.ViewCount}}
近期热议
{{item.Title}} {{item.PostCount}}