docker swarm nacos集群问题?

Blade 2 2490
8836880
8836880 2020-03-16 17:02

一、该问题的重现步骤是什么?

1. 一台服务器,做了3台虚拟化,A,B,C

2. nacos参照官方分别在A,B,C三台安装,做了集群,用A服务器nginx做了负载,统一从A服务器做入口,网页访问A:8848可以正常访问,并且能看到集群信息,

3.以docker stack分别在A,B,C三台服务器启动5500端口的balde-gateway网关(使用的overlay driver),nacos后台看到服务已经注册.

4.同时以docker stack发布了附加服务,如:blade-auth, blade-admin 等,所有服务启动正常,并且注册到nacos

同时,在A服务器blade-gateway容器内,访问B或C服务器容器端口,都可以ping通,在B或C服务器容器内ping其他服务容器暴露IP同样没问题

5.A服务器nginx监听80端口,配置api转发到A,B,C三台服务器


二、你期待的结果是什么?实际看到的又是什么?

1.使用postman调用A服务器http://192.168.100.112:8100/oauth/token,

不通过gateway网关,可以访问,但是提示

{
    "error": "access_denied",
    "error_description": "未获得用户的租户信息"
}

查看后台,提示以下:

2020-03-16 16:54:54.349  INFO 1 --- [-blade-system-2] o.s.core.cloud.http.OkHttpSlf4jLogger    : <-- HTTP FAILED: java.net.SocketTimeoutException: connect timed out
2020-03-16 16:54:54.351  INFO 1 --- [-blade-system-2] o.s.core.cloud.http.OkHttpSlf4jLogger    : --> GET http://10.11.0.128:8106/client/tenant-id?tenantId=000000
2020-03-16 16:54:54.351  INFO 1 --- [-blade-system-2] o.s.core.cloud.http.OkHttpSlf4jLogger    : Authorization: Basic c2FiZXI6c2FiZXJfc2VjcmV0
2020-03-16 16:54:54.351  INFO 1 --- [-blade-system-2] o.s.core.cloud.http.OkHttpSlf4jLogger    : Accept: */*
2020-03-16 16:54:54.351  INFO 1 --- [-blade-system-2] o.s.core.cloud.http.OkHttpSlf4jLogger    : --> END GET
2020-03-16 16:55:01.322  INFO 1 --- [-blade-system-3] o.s.core.cloud.http.OkHttpSlf4jLogger    : <-- HTTP FAILED: java.net.SocketTimeoutException: connect timed out
2020-03-16 16:55:01.324  INFO 1 --- [-blade-system-3] o.s.core.cloud.http.OkHttpSlf4jLogger    : --> GET http://10.11.0.127:8106/client/tenant-id?tenantId=000000
2020-03-16 16:55:01.324  INFO 1 --- [-blade-system-3] o.s.core.cloud.http.OkHttpSlf4jLogger    : Authorization: Basic c2FiZXI6c2FiZXJfc2VjcmV0
2020-03-16 16:55:01.324  INFO 1 --- [-blade-system-3] o.s.core.cloud.http.OkHttpSlf4jLogger    : Accept: */*
2020-03-16 16:55:01.324  INFO 1 --- [-blade-system-3] o.s.core.cloud.http.OkHttpSlf4jLogger    : --> END GET


2.直接访问gateway网关

{
    "code": 500,
    "data": null,
    "message": "Failed to handle request [POST http://192.168.100.112/blade-auth/oauth/token]: connection timed out: /10.11.0.115:8100"
}

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex2.4


四、请提供详细的错误堆栈信息,这很重要。



五、若有更多详细信息,请在下面提供。


nacos配置:


图片_20200316165900.png

nacos服务注册:

图片_20200316165934.png


nacos集群:

图片_20200316170010.png



docker  service:

图片_20200316170056.png


docker networks:

图片_20200316170137.png



2条回答
  •  8836880
    8836880 (楼主)
    2020-03-16 18:42

    已解决,是docker swarm的一个坑,需要在spring的配置文件配置指定获取的网段

    自己在docker 创建overlay的网关并制定网段为10.0.3.0/24

    在spring 配置文件配置spring.cloud.inetutils.preferred-networks=10.0.3

    就可以了

提交回复