我有两个在swarm中运行的容器。每个容器都暴露了一个/stats
端点,我正在尝试进行抓取。
然而,使用swarm端口显然会导致查询被负载均衡,因此统计信息都混杂在一起:
+--------------------------------------------------+
| Server |
| +-------------+ +-------------+ |
| | | | | |
| | Container A | | Container B | |
| | | | | |
| +-------------+ +-------------+ |
| \ / |
| \ / |
| +--------------+ |
| | | |
| | Swarm Router | |
| | | |
| +--------------+ |
| v |
+-------------------------|------------------------+
|
A Stats
B Stats
A Stats
B Stats
|
v
我希望保留应用请求的负载均衡器,但也需要一种直接的方式来请求每个容器以获取统计信息。
+--------------------------------------------------+
| Server |
| +-------------+ +-------------+ |
| | | | | |
| | Container A | | Container B | |
| | | | | |
| +-------------+ +-------------+ |
| | \ / | |
| | \ / | |
| | +--------------+ | |
| | | | | |
| | | Swarm Router | | |
| v | | v |
| | +--------------+ | |
| | | | |
+--------|----------------|----------------|-------+
| | |
A Stats | B Stats
A Stats Normal Traffic B Stats
A Stats | B Stats
| | |
| | |
v | v
动态解决方案会更理想,但是由于我不打算进行任何动态缩放,因此为每个容器设置硬编码端口之类的东西就可以了。
::8080 Both containers via load balancer
::8081 Direct access to container A
::8082 Direct access to container B
Swarm能否实现这个功能?
dns_sd_config
和dockerswarm_sd_config
之间差异的一些信息。 - anemyte