fix(config): Correct Nacos container IP configuration
This commit is contained in:
@@ -184,6 +184,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
|
||||
- SENTINEL_DASHBOARD_HOST=sentinel
|
||||
- SENTINEL_DASHBOARD_PORT=8080
|
||||
@@ -218,6 +219,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
@@ -263,6 +265,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -302,6 +305,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -352,6 +356,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -391,6 +396,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -430,6 +436,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
|
||||
@@ -207,6 +207,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- NACOS_SERVERS=${NACOS_SERVERS:-192.168.1.101:8848,192.168.1.102:8848,192.168.1.103:8848}
|
||||
- SENTINEL_DASHBOARD_HOST=sentinel
|
||||
- SENTINEL_DASHBOARD_PORT=8080
|
||||
@@ -236,6 +237,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -275,6 +277,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -314,6 +317,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -364,6 +368,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -403,6 +408,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
@@ -442,6 +448,7 @@ services:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_USERNAME=nacos
|
||||
- SPRING_CLOUD_NACOS_CONFIG_PASSWORD=nacos
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
- MYSQL_HOST=mysql
|
||||
- MYSQL_PORT=3306
|
||||
- MYSQL_USERNAME=root
|
||||
|
||||
@@ -617,6 +617,62 @@ environment:
|
||||
- MYSQL_SERVICE_DB_NAME=nacos_config
|
||||
```
|
||||
|
||||
### Q11: RocketMQ Broker 启动失败报 NullPointerException
|
||||
|
||||
**问题描述**:RocketMQ Broker 启动时报错:
|
||||
```
|
||||
java.lang.NullPointerException
|
||||
at org.apache.rocketmq.broker.schedule.ScheduleMessageService.configFilePath
|
||||
```
|
||||
|
||||
**原因**:
|
||||
1. Docker 命名卷权限问题:官方镜像以 `rocketmq` 用户 (UID 3000) 运行,但命名卷默认属于 root
|
||||
2. 存储路径配置问题:`delayOffsetStorePath` 等路径指向不存在的子目录
|
||||
|
||||
**解决方案**:
|
||||
|
||||
1. 在 docker-compose 中添加 `user: root`:
|
||||
```yaml
|
||||
rmqbroker:
|
||||
image: apache/rocketmq:5.1.4
|
||||
user: root # 添加此行
|
||||
container_name: rmqbroker
|
||||
```
|
||||
|
||||
2. 清理旧数据并重启:
|
||||
```bash
|
||||
docker compose -f docker-compose-node-02.yml rm -f -s rmqbroker
|
||||
docker volume rm ha-ovp_rmqbroker_store ha-ovp_rmqbroker_logs
|
||||
docker compose -f docker-compose-node-02.yml up -d rmqbroker
|
||||
```
|
||||
|
||||
### Q12: Nacos 服务注册显示 Docker 内部 IP(假高可用问题)
|
||||
|
||||
**问题描述**:
|
||||
- Nacos 控制台显示服务实例 IP 为 `172.18.0.x` 等 Docker 内部 IP
|
||||
- 同一服务在不同节点只显示 1 个实例(IP 冲突覆盖)
|
||||
- 跨节点服务调用失败
|
||||
|
||||
**原因**:Docker 桥接网络中,每个容器获得内部虚拟 IP。微服务使用容器 IP 注册到 Nacos,导致:
|
||||
1. 不同节点的容器可能获得相同 IP,Nacos 认为是同一实例
|
||||
2. Gateway 无法通过容器内部 IP 访问其他节点的服务
|
||||
|
||||
**解决方案**:在 docker-compose 中添加 `SPRING_CLOUD_NACOS_DISCOVERY_IP` 环境变量:
|
||||
|
||||
```yaml
|
||||
# Node-01 (192.168.1.101)
|
||||
video-gateway:
|
||||
environment:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.101}
|
||||
|
||||
# Node-02 (192.168.1.102)
|
||||
video-gateway:
|
||||
environment:
|
||||
- SPRING_CLOUD_NACOS_DISCOVERY_IP=${HOST_IP:-192.168.1.102}
|
||||
```
|
||||
|
||||
**验证**:重启微服务后,Nacos 控制台应显示真实宿主机 IP(如 `192.168.1.101:9000`、`192.168.1.102:9000`)
|
||||
|
||||
---
|
||||
|
||||
## 七、日常运维
|
||||
|
||||
Reference in New Issue
Block a user