联 系 我 们
售前咨询
售后咨询
微信关注:星环科技服务号
更多联系方式 >
7.7.2 端口冲突相关问题
更新时间:7/16/2024, 5:35:52 AM
什么是端口?

所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正地访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号。

如何避免出现端口冲突,保障集群顺利安装以及稳定运行
方法1:

基于集群规划进行资源分配,按照业务切等等。因此如果要安装在同一节点上时,可以在安装的【服务配置】步骤中对默认端口号进行更改,避免重复安装服务导致的默认端口冲突的问题。但如果 Quark 安装在不同节点的话,比如 quark1 在 IDC1,quark2 在 IDC2,那两个服务的端口一样也可以。

社区版常用的端口列表:https://community.transwarp.cn/question/751

方法2:

在使用某个端口或是更改端口号时,建议用户在Linux系统终端使用netstat命令查询端口的使用情况。

  1. 查看某个具体端口的占用情况:

    netstat -anp | grep <port>
    复制
  2. 查看全部端口占用情况:

    netstat -anp
    //或
    netstat -tln
    复制
怎么判断是出现了端口冲突

出现端口冲突的常见报错信息如下:

Failed to bind to: /0.0.0.0:51888 Caused by: java.net.BindException: Address already in use a
复制

报错中一般会直接报出冲突的端口号,比如该报错中冲突的端口号为 51888。

页面有时可以显示出具体涉及的端口。 如果没有显示,可以通过下述方式确认冲突的端口信息。

  • 查看是哪个服务哪个角色启动报错

  • 登录manager页面查看这个服务/角色对应有哪些端口配置

  • 通过netstat -nalp | grep <目标端口> 查看是否占用

【解决方法】
  1. Manager 对应服务配置中查看该端口号对应信息。

  2. 运行命令查出端口冲突的进程 ID:

    netstat -anp | grep <step1 中的端口号>
    复制
  3. 查出具体哪些服务端口冲突:

    ps -ef | grep <step2 中的进程 ID>
    复制
如何解决端口冲突
【解决方法】

对于发生端口冲突导致不可用的服务,确定其冲突的端口参数之后在【服务-配置】界面对端口参数进行修改(一般默认+10),修改后点击右上角的配置服务,然后重启该服务即可。如下所示:

port problem 1
其他获取冲突端口信息的方式

当服务安装/启动失败时,可以进入集群中的任意节点,运行kubectl获取pod运行在节点上的信息:

kubectl get po -owide |grep <name>
kubectl logs -f <有问题的podid>
复制

输出结果示例如下,下方示例可以看出该服务的端口METASTORE_PORT]的默认端口号9093发生了冲突:

mysql: [Warning] Using a password on the command line interface can be insecure.
+ return 0
++ grep 'data-dictionary\b' /tmp/tmp.hRA8UHvmzd
++ wc -l
+ '[' 1 == 0 ']'
+ return 0
+ set -e
+ checkPort METASTORE_PORT 9093
+ set +x
ERROR: port [9093] for [METASTORE_PORT] has been bound!
复制
端口连通性测试
  • SSH测试:SSH最常用的功能之一就是实现远程登录主机,可以用指定端口号登录的方式来测试端口连通性。测试过程中出现“Connection established”关键字表示端口通,出现“Connection refused”关键字则不通。此方法适用于TCP协议

    ssh -v -p <port> <ip>
    复制
  • Telnet测试:telnet命令可以进行远程登录计算机,也可以来测试端口的连通性。测试过程中出现“Connection refused”关键字则不通。此方法适用于TCP协议

    telnet <ip> <port>
    复制
  • Wget测试:wget是一个下载文件的工具,支持http,https,ftp协议,可用于测试端口连通性。

    wget <ip:port>
    复制
  • NC(Netcat)测试:nc是一个功能强大的网络工具,对于端口连通性测试来说支持TCP和UDP协议端口测试,也可以对指定范围内的端口进行批量扫描。

    nc -vuz <ip> <port>
    复制
一些排错示例
通过TOS启动yarn-nodemanager一个节点启动失败,pod无法启动,状态显示CCrashLoopBackOff
【报错信息】

运行kubectl命令后获取pod运行在节点上的信息,通过hadoop-yarn-nodemanager的日志发现是端口被kube-apiserv服务占用。

port problem 2
port problem 3
port problem 4
【解决方法】

参考前述章节<怎么判断是出现了端口冲突>以及<其他获取冲突端口信息的方式>章节获取服务端口信息,按照<如何解决端口冲突>章节内容修改对应端口即可。

初始化HDFS失败,启动NameNode报错
【报错信息】
port problem 5
【核心原因】

查看日志后显示端口被占用

port problem 6
【解决方法】

参考前述章节<怎么判断是出现了端口冲突>以及<其他获取冲突端口信息的方式>章节获取服务端口信息,按照<如何解决端口冲突>章节内容修改对应端口即可。

启动Quark失败,查看/var/log下的server日志,报错显示“Failed to bind SparkUI, java.net.BindException:Address already in use (Bind failed): Service‘SparkUI’failed after 0 retries!”
【报错信息】
port problem 7
【核心原因】

可以参考该链接<https://community.transwarp.cn/question/751>文末的端口清单,可以看到是8888端口存在冲突情况,被其他进程占用了。

【解决方法】

Manager访问服务配置列表,修改端口号之后点击右上角配置服务然后重启服务即可。