文档首页/ 部署 CodeArts Deploy/ 常见问题/ 主机管理/ 主机/代理机连通性验证问题排查方法有哪些?
更新时间:2024-11-13 GMT+08:00

主机/代理机连通性验证问题排查方法有哪些?

本文主要介绍主机连通性验证失败原因的排查方法,根据主机类型分为如下几种:

Linux机器问题排查

  1. 检查IP、用户名及密码是否正确。
  2. 检查目标主机开放的端口是否为SSH协议端口(默认端口为22)。

    开启方法:

    1. 开启防火墙。
      systemctl start firewalld.service
      systemctl stop firewalld.service #关闭防火墙命令
    2. 开启端口。
      firewall-cmd --zone=public --add-port=22/tcp --permanent

      --zone #作用域。

      --add-port=22/tcp #端口,格式为:端口/通讯协议。

      --permanent #永久生效,没有此参数重启后失效。

    3. 重启防火墙。
      firewall-cmd --reload

  3. 检查当前网络状态。

    使用“tcpdump”命令查看当前网络连接状态,命令如下:

    tcpdump -n "tcp port 22 and host xxx.xxx.xxx.xxx" 
    #该命令执行在本地PC端,其中xxx.xxx.xxx.xxx为部署服务对外IP,目的是验证部署服务执行主机的网络是否畅通。

    #或者:

    tcpdump -n "tcp port 22" | grep -v "xxx.xxx.xxx.xxx" 
    #该命令执行在本地PC端,其中xxx.xxx.xxx.xxx为被部署的目标主机IP,目的是验证部署主机的网络是否畅通。

    如下图所示,无回显信息说明网络已畅通。

    部署服务对外IP如下。

    新加坡站:
    114.119.185.21
    圣保罗站:
    159.138.214.24
    墨西哥站:
    122.8.183.54
    110.238.80.148
    圣地亚哥:
    119.8.154.190
    土耳其:
    101.44.36.238
    利雅得:
    101.46.48.174
    开罗站:
    101.46.64.14
    约翰内斯堡站:
    159.138.166.36

  4. 在菜单“设置 > 通用设置 > 基础资源管理”页,单击集群名称进入详情,在主机列表中对目标主机做连通性验证,观察部署服务(CodeArts Deploy)是否对目标主机做了SSH协议连接,出现如下图所示,说明部署服务对目标主机做了SSH协议连接。

    原因分析:
    • 服务端对目标主机存在SSH连接

      如果服务端存在SSH连接,说明是目标主机本身配置问题。

      如果已经定位出是目标主机配置问题,或者未安装Tcpdump,都需要检查目标主机本身配置来排查:

      1. 参考《用户指南》“配置黑/白名单”章节。
      2. 查看是否有防火墙配置,以iptables为例,命令如下:
        iptables -L
    • 服务端对目标主机不存在SSH连接

      如果服务端对目标主机不存在SSH连接,说明目标主机网络不可达,其所在的网络环境可能存在访问限制。

      请查看硬件防火墙等相关网络配置,是否有限制源IP、目标IP、SSH协议配置的安全策略。

  5. 查看ssh密钥文件权限。

    root账户登录机器,依次执行以下命令查看ssh密钥文件权限。

    cd /root/.ssh
    ll

    如图所示,查看文件权限是否为“rw”。

    若文件权限不正确,执行以下命令完成修改。

    chmod 600 文件名

  6. 主机连通性验证的用户对${HOME}目录操作失败。

    1. 检查主机${HOME}目录所在磁盘是否已满。
      • 排查${HOME}目录所在磁盘是否已满,参考命令df -h 。
      • 查看用户${HOME}目录的权限设置及目录隐藏属性等信息:ll -ld ${HOME},lsattr -d ${HOME}。
    2. 检查用户对${HOME}目录是否有读写权限。

      修改${HOME}目录权限,为用户增加读写权限:参考命令 chmod ,chattr 。

    3. 检查用户默认shell设置是否为nologin模式。
      • 执行如下命令查看,参考命令:grep username /etc/passwd,其中将 "username" 替换为要检查的实际用户名。
      • 在该文件中,如果用户的 shell 列显示为 "/usr/sbin/nologin" 或 "/sbin/nologin",则表示该用户被配置为nologin模式。
      • 如果用户为nologin模式,可以执行如下命令允许用户登录,参考命令:sudo usermod -s /bin/bash username,其中将 "username" 替换为要操作的实际用户名。

  7. (代理主机)如果已关联主机的代理主机连通性失败或者界面提示“主机连接超时,请查看解决方案”,请按如下方式进行排查:

    1. 测试代理主机的连通性。
    2. 检查代理主机上SSH配置AllowTcpForwarding是开启,命令如下:
      grep  "AllowTcpForwarding" /etc/ssh/sshd_config

      如果该属性值为no,则设置为yes,并重新启动sshd服务,命令如下:

      service sshd restart

自托管资源池问题排查

  1. 检查主机所在的主机集群下代理资源池是否可用。

    1. 单击主机集群名称,进入主机集群详情页,单击“管理资源池”。

    2. 进入资源池管理界面,查看对应资源池代理状态。
      • 若状态为下线,则删除已下线代理,重新安装代理

      • 若状态为停用,则在操作选项启用代理,重新执行连通性验证。

  2. 单击连通性验证结果,若界面提示为脚本执行错误,请按照如下方式进行排查。(若未提示脚本执行错误,请跳过。)

    原因分析:

    因为自托管资源池需要使用docker拉取镜像,所以出现脚本执行错误的原因是自托管资源池中docker未安装或不能正常使用。您可按照如下方法进行排查。

    排查方法:

    1. 执行如下命令排查是否安装docker。
      docker --version

      若命令执行结果出现版本号,说明已安装docker。

      若命令执行结果未出现版本号,说明未安装docker。

      如果未安装docker,您可根据安装/卸载Docker,重新安装docker,再通过如下操作进行连通性验证。
      1. 进入部署服务,单击目标应用名称,进入目标项目下。
      2. 单击菜单“设置 > 通用设置 > 基础资源管理”,默认进入“主机集群”页面。
      3. 单击目标集群名称,进入目标集群详情页,单击“代理主机”或“目标主机”页签。
      4. 单击主机所在行的,弹出修改主机信息框,可以修改主机信息重新进行连通性验证。
    2. 执行如下命令排查已安装的docker是否可正常使用。
      docker images

      若命令执行结果如上所示,说明docker能正常使用。反之,您需要先卸载docker,根据安装/卸载Docker,重新安装docker。

Windows机器问题排查

  1. 检查IP、用户名及密码是否正确。
  2. 参考《用户指南》“代理主机配置”章节指导进行代理主机配置。
  3. 参考《用户指南》“目标主机配置”章节指导开启WinRM功能。
  4. 查看WinRM功能是否开启,在powershell命令行执行如下命令:

    winrm e winrm/config/listener

  5. 查看Windows防火墙是否允许外部主机访问WinRM服务,如下图所示。

云主机问题排查

首先按照普通主机步骤排查问题。对于云主机,需要在安全组中配置部署对外IP并开通访问权限。(参考《用户指南》“创建主机集群的前提条件”章节)