开发者社区 > 云原生 > 正文

在swarm环境下部署集群降级服务,出现Client注册到token server的IP非容器本身I

我个人的demo代码放在这里:https://github.com/kanghouchao/devops

我参照官方文档,搭建了一个demo,在README中大致说明了启动服务的步骤

我打算在我的devops-client-web模块中使用集群流控,参照官方样例代码在SentinelAspectConfiguration类配置了集群服务端的相关连接信息

启动服务后访问token-server对应的地址:/cluster/server/info {"port":11111,"appName":"app","connection":[{"connectedCount":2,"connectionSet":[{"address":"10.0.9.48:47602","host":"10.0.9.48"},{"address":"10.0.9.46:52554","host":"10.0.9.46"}],"namespace":"devops-client"},{"connectedCount":0,"connectionSet":[],"namespace":"default"}],"transport":{"idleSeconds":600,"port":11111},"requestLimitData":[{"maxAllowedQps":30000.0,"namespace":"devops-client","currentQps":0.0},{"maxAllowedQps":30000.0,"namespace":"default","currentQps":0.0}],"namespaceSet":["devops-client","default"],"embedded":false,"flow":{"exceedCount":1.0,"intervalMs":1000,"maxAllowedQps":30000.0,"maxOccupyRatio":1.0,"namespace":"default","sampleCount":10}}

问题是:此Json信息中的Client的IP和实际的IP不一致,上述Json中的IP为物理机中docker 的负载均衡IP

1、需要搭建一个docker镜像仓库用于存储构建的镜像

2、执行脚本顺序init.sh -> build-push.sh -> stack-devops.sh

3、compose文件是devops-compose.yml

本地电脑是ubuntu19 其中跑了三台centos虚拟机,搭建的swarm集群 集群降级的token-server 采用的是单独部署模式

原提问者GitHub用户kanghouchao

展开
收起
云上静思 2023-05-19 16:30:03 217 0
1 条回答
写回答
取消 提交回答
  • 这是docker swarm的一个问题。你可以看看这个问题。其中一个解决方案是在docker swarm之外添加一个nginx代理,

    然后通过在nginx上添加的头来获得真实的IP。

    ag.nginx配置:

    location / { proxy_pass http://gateway:9011; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 100m; #root /usr/share/nginx/html; #index index.html index.htm; }

    原回答者GitHub用户liangyuanpeng

    2023-05-19 22:44:06
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
阿里云文件存储 NAS 在容器场景的最佳实践 立即下载
何种数据存储才能助力容器计算 立即下载
《容器网络文件系统CNFS》 立即下载