请问nacos docker集群部署的时候都需要暴露哪些端口?
在使用 Docker 部署 Nacos 集群时,为了使 Nacos 能够正常运行和实现多节点之间的通信,需要暴露以下端口:
8848 端口:用于 Web 控制台和客户端访问 Nacos Server,默认绑定所有 IP。
9555 端口:用于 Nacos Server 节点之间的内部通信,默认绑定 Master IP。
9556 端口:用于 Nacos Server 节点之间的内部通信,默认绑定 Slave IP。
9999 端口:用于向集群主动上报当前节点的健康状态,如“心跳”和“存活”等信息。
因此,在 Docker 部署 Nacos 集群时,需要使用 -p
参数将宿主机的端口映射到容器中,例如:
docker run --name nacos-standalone -e MODE=standalone \
-p 8848:8848 \
-p 9555:9555 \
-p 9556:9556 \
-p 9999:9999 \
-d nacos/nacos-server
其中,-p
参数指定了宿主机和容器之间的端口映射关系,-d
参数表示以守护进程方式运行容器。如果您需要启动一个 Nacos 集群,可以根据实际情况添加更多的 Docker 容器,并设置相应的端口映射关系。
在使用 Docker 部署 Nacos 集群时,需要暴露以下端口:
8848 端口:Nacos Server 的 HTTP 端口,用于提供 HTTP API 服务,需要对外暴露。
8849 端口:Nacos Server 的 TCP 端口,用于提供心跳检测和配置推送功能,需要对外暴露。
9555 端口:Nacos Server 的 HTTP 端口,用于提供 Debug 服务,可以不对外暴露。
9999 端口:Nacos Console 的 HTTP 端口,用于提供 Web 界面,需要对外暴露。
如果使用了集群方案,还需要对应多个 Nacos Server 节点的端口进行设置,以便它们之间能够互相通信。具体的端口设置可以参考 Nacos 官方文档。
在创建 Docker 容器的时候,可以使用 -p 参数对需要暴露的端口进行映射,例如:
docker run -p 8848:8848 -p 8849:8849 -p 9999:9999 nacos/nacos-server:latest
这段命令将会启动一个 Nacos Server 容器,并将 8848、8849 和 9999 端口映射到宿主机上,以方便外部访问。
在 Nacos Docker 集群部署时,需要暴露以下端口:
具体而言,如果您使用 Docker Compose 部署 Nacos,可以参考以下的 docker-compose.yml 文件:
version: '3'
services:
nacos-server-1:
image: nacos/nacos-server
container_name: nacos-server-1
ports:
- "8848:8848"
- "9555:9555"
- "8849:8849"
- "8866:8866"
command: "nacos --server.port=8848 --server.ip=192.168.0.1 --spring.datasource.platform=mysql"
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_DATABASE=nacos
- MYSQL_USERNAME=nacos
- MYSQL_PASSWORD=nacos
depends_on:
- mysql
nacos-server-2:
image: nacos/nacos-server
container_name: nacos-server-2
ports:
- "8848:8848"
- "9555:9555"
- "8849:8849"
- "8866:8866"
command: "nacos --server.port=8848 --server.ip=192.168.0.2 --spring.datasource.platform=mysql"
environment:
- MODE=standalone
- SPRING_DATASOURCE_PLATFORM=mysql
- MYSQL_SERVICE_HOST=mysql
- MYSQL_SERVICE_PORT=3306
- MYSQL_DATABASE=nacos
- MYSQL_USERNAME=nacos
- MYSQL_PASSWORD=nacos
depends_on:
- mysql
mysql:
image: mysql:5.7
container_name: mysql
ports:
- "3306:3306"
command: "--default-authentication-plugin=mysql_native_password"
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=nacos
- MYSQL_USER=nacos
- MYSQL_PASSWORD=nacos
在该文件中,我们定义了两台 Nacos 服务器节点和一个 MySQL 数据库节点。分别暴露了控制台 Web 管理端口、Prometheus 监控页面端口、服务器通信端口和 RPC 通信端口。这就是 Nacos 集群部署时需要暴露的端口。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。