MeterSphere 作为多组件的应用系统,其正常运行需要开通相应的网络端口,以实现组件之间的服务响应和调用。具体网络端口要求如下:
组件 | 默认端口 | 说明 |
---|---|---|
Node Controller | 8082 | 为接口或者性能测试提供独立节点类型的测试资源池 |
Prometheus | 9090 | 收集压力机及被测系统的监控数据 |
Node Exporter | 9100 | 用于采集 Node 的运行指标 |
Selenium Grid | 4444 | 为 UI自动化测试提供运行环境,支持分布式拓展 |
TCP Mock | 10000-10010 | TCP Mock 对外提供服务需要开放的端口范围 |
MySQL | 3307 | MeterSphere 默认安装的数据库对外提供的端口 |
Redis | 6379 | MeterSphere 默认安装的 Redis 对外提供的端口 |
Minio | 9000 | MeterSphere 默认安装的分布式对象存储对外提供的端口 |
Kafka | 9092 | MeterSphere 默认安装的消息中间件对外提供的端口 |
GateWay | 8081 | API 网关项目,浏览器访问端口 |
如果各组件的端口没有开放,组件之间服务无法调用,将造成 MeterSphere 无法正常访问或响应。以下将针对目前 MeterSphere 常见的网络链路相关问题现象以及解决方法进行总结。
问题1:容器状况都正常,但是在浏览器中无法访问 http://$LOCAL_IP:8081?
处理方法:在终端telnet ms服务 ip及端口是否通畅,若不通关闭ms服务器防火墙,具体步骤:
(1)查看防火墙状态 :systemctl status firewalld
(2)关闭防火墙 :systemctl stop firewalld
(3)禁用开机自启防火墙:systemctl disable firewalld
(4)修改防火墙后重启容器: systemctl restart docker
(5)重启ms服务 :msctl restart
如果不允许直接关闭防火墙则开启对应端口访问权限如:
iptables -I INPUT -p tcp --dport 8081 -j ACCEPT
若通,先清空浏览器缓存或者重启浏览器或者以无痕方式进行访问。
问题2:接口测试返回提示:Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
处理方法同上:检查ms服务 telnet被测服务的网路 ip 端口 是否通畅
关闭ms服务防火墙或者开启被测服务相关端口访问权限
问题3:安装环境容器启动报错,查看容器日志连不上报错提示 exception; nested exception is org.redisson.client.RedisConnectionException: Unable to connect to Redis server: 172.168.xx.xxx/172.168.1xx.1xx?
处理方法:确认 /opt/metersphere/.env文件默认配置的是linux本机IP,这个ip就不在我们的docker 网络内,有可能受防火墙影响,配置为容器名使用metersphere-network 避免受影响。
修改metersphere/.env配置,设置redis_host=redis ,再执行msctl reload。
问题4:性能测试:提示kafka不可用;或者性能测试报告页面一直处理开始状态不展示报告。
tail -200 /opt/metersphere/logs/data-streaming/info.log 日志提示kafka连不上
处理方法:由于 MeterSphere 性能测试使用到容器组件JMeter测试执行的测试结果回传给 kafka,再通过 data-streaming 做计算汇聚为报告;因此要检查 kafka 和 data-streaming 能否正常通信。
(1)测试容器链接 kafka 是否通畅:docker exec ms-data-streaming nc -zv 172.22.xx.xx 9093
(2)不能通信检查对应容器访问端口是否开放:
iptables -I INPUT -p tcp --dport 9092 -j ACCEPT
(3)如果修改过相关配置文件端口:检查/opt/metersphere 安装目录下
确认docker-compose-kafka.yml 与.env 监听的端口是否一致,对内端口默认9092 对外端口默认9093;如果修改了相关端口内容,请保证两个文件修改内容一致,一般改对外端口。
问题5:mysql修改端口后链接不上:如:本地有mysql占用了3306,meterspere的install.conf中改成了3406 但是ms-server一直无法连接数据库
处理方法:
(1)修改/opt/metersphere目录下的docker-compose-mysql.yml,把对外端口改成3406。然后修改.env里mysql_host=具体的IP,mysql_port=3406,最后再执行 msctl reload。
(2)注意:yml文件里左边是对外端口,右边是容器内端口;一般改对外端口。
(3)如果mysql_host设置为具体IP,mysql_host就用对外端口。如果mysql_host=mysql,mysql_host就用容器内端口
问题6:虚拟机安装环境,一段时间后虚拟机ip变化了。查看容器日志发现kafka 、redis连不上了。
解决方法:修改/opt/meterspher目录下.env文件。将 kafka 和 redis 改为当前虚拟机的 ip 地址后执行 msctl reload 。