From 9353f49045fc0cb44034bd9748d7da0090b20eff Mon Sep 17 00:00:00 2001 From: Toyas Date: Sat, 14 Mar 2026 17:44:08 +0800 Subject: [PATCH] fix(config): Correct Sentinel container IP configuration --- docker-compose-node-01.yml | 7 +++++++ docker-compose-node-02.yml | 7 +++++++ docs/DEBIAN12-DEPLOYMENT-GUIDE.md | 33 +++++++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/docker-compose-node-01.yml b/docker-compose-node-01.yml index d186710..10079bb 100644 --- a/docker-compose-node-01.yml +++ b/docker-compose-node-01.yml @@ -188,6 +188,7 @@ services: - 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 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - GATEWAY_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m healthcheck: @@ -230,6 +231,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - AUTH_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m healthcheck: @@ -275,6 +277,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - USER_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -322,6 +325,7 @@ services: - MINIO_BUCKET=video-platform - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - CONTENT_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -366,6 +370,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - COMMENT_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -406,6 +411,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - RECOMMEND_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -446,6 +452,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} - ADMIN_IP=${HOST_IP:-192.168.1.101} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: diff --git a/docker-compose-node-02.yml b/docker-compose-node-02.yml index c76d111..90e1143 100644 --- a/docker-compose-node-02.yml +++ b/docker-compose-node-02.yml @@ -211,6 +211,7 @@ services: - 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 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - GATEWAY_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -247,6 +248,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - AUTH_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -287,6 +289,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - USER_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -334,6 +337,7 @@ services: - MINIO_BUCKET=video-platform - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - CONTENT_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -378,6 +382,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - COMMENT_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -418,6 +423,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - RECOMMEND_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: @@ -458,6 +464,7 @@ services: - REDIS_PASSWORD=${REDIS_PASSWORD:-redis_HA_Cluster_2024} - SENTINEL_DASHBOARD_HOST=sentinel - SENTINEL_DASHBOARD_PORT=8080 + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} - ADMIN_IP=${HOST_IP:-192.168.1.102} - JAVA_OPTS=-Xms256m -Xmx512m depends_on: diff --git a/docs/DEBIAN12-DEPLOYMENT-GUIDE.md b/docs/DEBIAN12-DEPLOYMENT-GUIDE.md index a0161f5..a8a8f70 100644 --- a/docs/DEBIAN12-DEPLOYMENT-GUIDE.md +++ b/docs/DEBIAN12-DEPLOYMENT-GUIDE.md @@ -264,7 +264,7 @@ docker exec mysql mysql -uroot -proot123456 -e "SHOW DATABASES;" #### 在 Node-01 (主节点) 创建复制用户 ```bash -docker exec mysql mysql -uroot -proot123456 << 'EOF' +docker exec -i mysql mysql -uroot -proot123456 << 'EOF' CREATE USER IF NOT EXISTS 'repl'@'%' IDENTIFIED WITH mysql_native_password BY 'repl_password_2024'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES; @@ -276,7 +276,7 @@ EOF ```bash # 在 Node-02 执行 -docker exec mysql mysql -uroot -proot123456 << 'EOF' +docker exec -i mysql mysql -uroot -proot123456 << 'EOF' CHANGE MASTER TO MASTER_HOST='192.168.1.101', MASTER_USER='repl', @@ -289,12 +289,12 @@ EOF # 确认 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes # 配置完成后,启用只读模式 (重要!) -docker exec mysql mysql -uroot -proot123456 -e "SET GLOBAL read_only = ON; SET GLOBAL super_read_only = ON;" +docker exec mysql mysql -uroot -proot123456 -e "SET GLOBAL read_only = ON; SET GLOBAL super_read_only = ON;" ``` ```bash # 在 Node-03 执行 (同上) -docker exec mysql mysql -uroot -proot123456 << 'EOF' +docker exec -i mysql mysql -uroot -proot123456 << 'EOF' CHANGE MASTER TO MASTER_HOST='192.168.1.101', MASTER_USER='repl', @@ -673,6 +673,31 @@ video-gateway: **验证**:重启微服务后,Nacos 控制台应显示真实宿主机 IP(如 `192.168.1.101:9000`、`192.168.1.102:9000`) +### Q13: Sentinel 控制台显示容器内部 IP 或实例失联 + +**问题描述**: +- Sentinel 控制台显示机器列表 IP 为 `172.18.0.x` 等 Docker 内部 IP +- 部分实例显示"失联"状态,健康实例数不正确 +- 跨节点无法进行限流降级 + +**原因**:与 Nacos 问题类似,Sentinel 客户端使用容器内部 IP 注册到 Dashboard,导致跨节点无法通信。 + +**解决方案**:在 docker-compose 中添加 `SPRING_CLOUD_SENTINEL_CLIENT_IP` 环境变量: + +```yaml +# Node-01 (192.168.1.101) +video-gateway: + environment: + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.101} + +# Node-02 (192.168.1.102) +video-gateway: + environment: + - SPRING_CLOUD_SENTINEL_CLIENT_IP=${HOST_IP:-192.168.1.102} +``` + +**验证**:重启微服务后,Sentinel 控制台应显示真实宿主机 IP,且所有实例状态为"健康" + --- ## 七、日常运维