概述
问题描述
部署运维平台报错:connection refused
报错语句:ERROR: 2022/05/18 17:33:07 finedb connect error:dial tcp 192.168.1.24:3306: connect: connection refused
部署运维项目报错:Server IP try to bind ports failed!
报错语句:Server IP try to bind ports 9114,9100,9200,9080,9070 failed!
原因分析
待部署的运维平台组件/运维项目组件容器,需要占用一些端口。
如果这些端口已被占用/没有开放,则无法成功部署,会出现以上报错。
解决方案
请依次检查以下三者:
1)检查该端口是否被服务器中其他进程占用
如果端口被占用,则需要更换一个未被占用的端口,再检查新端口的下两项。
如果端口未被占用,则需要检查该端口的下两项。
2)检查服务器防火墙是否放行端口
如果服务器防火墙未开启,建议开启。
如果服务器防火墙开启,需要开放所需端口。
如果端口已开放,请检查下一项。
3)如为云服务器,请检查服务器安全组是否放行端口
云服务器安全组端口放行方式本文不作介绍,请联系你的云服务器厂商咨询。
检查端口占用情况
本文提供多种方法检查Linux系统中的端口是否被其他进程占用。
需要注意的是,执行以下命令通常需要以root用户或具有足够权限的用户身份运行,以获取完整的进程信息。
使用netstat命令
命令语句 | netstat -tuln | grep <端口号> 将 <端口号> 替换为您要检查的具体端口号 |
---|---|
返回说明 | 这条命令将显示监听该端口的进程信息 如果有进程正在使用该端口,您将能够看到相关的输出 如果该端口未被占用,则无任何输出 |
示例 |
使用lsof命令
命令语句 | lsof -i :<端口号> 将 <端口号> 替换为您要检查的具体端口号 |
---|---|
返回说明 | 这条命令将显示打开该端口的进程及其相关信息。 如果有进程正在使用该端口,您将能够看到相关的输出 如果该端口未被占用,则无任何输出 |
示例 |
检查防火墙放行情况
1)建议服务器防火墙长期启用。
2)建议开放且只开放必要的端口,防止不必要的网络暴露。
常用语句
场景 | 语句 |
---|---|
检查防火墙状态 | systemctl status firewalld |
启动防火墙 | systemctl start firewalld |
关闭防火墙 | systemctl stop firewalld |
防火墙开机启动 | systemctl enable firewalld |
防火墙开机禁用 | systemctl disable firewalld |
查看所有放行端口 | firewall-cmd --zone=public --list-ports |
查看指定端口是否放行 | firewall-cmd --zone=public --query-port=<端口>/<协议> |
放行指定端口 | firewall-cmd --zone=public --add-port=<端口>/<协议> --permanent |
取消放行指定端口 | firewall-cmd --zone=public --remove-port=<端口>/<协议> --permanent |
更新防火墙规则 | firewall-cmd --reload |
示例
本示例介绍如何开放防火墙并放行8080端口。
1)启动防火墙
检查防火墙状态:systemctl status firewalld。返回值为「not running」,说明未启动防火墙
启动防火墙:systemctl start firewalld
再次检查防火墙状态:systemctl status firewalld。返回值为「running」,说明已启动防火墙
2)开放8080端口
检查端口是否放行:firewall-cmd --zone=public --query-port=8080/tcp。返回值为「no」,说明未放行8080端口
开放端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent。返回值为「success」,说明已放行8080端口
更新防火墙规则:firewall-cmd --reload。返回值为「success」,说明已更新规则
再次检查端口是否放行:firewall-cmd --zone=public --query-port=8080/tcp。返回值为「yes」,说明已放行8080端口
注意事项:重启firewall之后需要重启Docker
问题描述:
部署运维平台/运维项目后,在对应服务器上会自动部署 Docker。
Docker 在启动时会自动修改 iptables 规则,确保容器间的网络通信、端口映射等功能能够正常工作。
当 firewalld 重启时,可能会刷新或覆盖这些 iptables 规则,导致 Docker 原先设置的规则失效,造成容器无法正常访问网络或服务端口映射失败。
解决方法:
重启 firewalld 后,请重启 Docker 服务。
重启 Docker 服务后,Docker 会重新加载并设置所需的 iptables 规则,确保网络功能恢复正常。
该操作会导致运维平台/运维项目不可用,请在非工作时段进行。
该操作需要掌握基础docker知识,如无法完成,请联系帆软技术支持协助。技术支持联系方式:「服务>在线支持」