gpt4 book ai didi

Docker 群 : how to place app and db together?

转载 作者:行者123 更新时间:2023-12-02 18:10:53 25 4
gpt4 key购买 nike

我有 2 个服务的堆栈:Spring 启动应用程序和 mongo 数据库。
我想将此堆栈部署到 Docker Swarm(德国有 1 个节点,芬兰有 1 个节点,爱沙尼亚有 1 个节点)。

目前 Swarm 将应用调度到德国集群,将数据库调度到芬兰,这意味着每个请求都是从德国到芬兰。

这是如何强制 Swarm 将所有堆栈块放置到单个节点的方式?

附言坚持主机名不是解决方案,因为如果节点死亡,服务就会关闭。

我的 Stack.yml 是:

version: '3.3'
services:
app:
image: kyberorg/boot-mongo
networks:
- net
ports:
- "8080:8080"
depends_on:
- mongo
labels:
- ee.yadev.bootmongoapp
deploy:
mode: replicated
replicas: 1
update_config:
parallelism: 1
delay: 10s
mongo:
image: mongo
networks:
- net
volumes:
- example-mongo:/data/db
deploy:
mode: replicated
replicas: 1
update_config:
parallelism: 1
delay: 10s
networks:
net:
driver: overlay
volumes:
example-mongo:
external: true

最佳答案

我也找了半天解决办法,终于找到了。

看看 Affinity 选项,这里有很好的描述:https://blog.docker.com/2015/02/scaling-docker-with-swarm/

亲和力
在某些情况下,一个容器的放置必须相对于其他容器。 Swarm 允许您通过关联来定义这些关系。

下面将运行两个 Redis 服务器,同时保证它们不会被安排在同一台机器上:

docker run -d --name redis_1 -e ‘affinity:container!=redis_’ redis
docker run -d --name redis_2 -e ‘affinity:container!=redis_’ redis

当隐含容器之间的关系时,会自动生成关联。使用–link、–volumes-from 和–net=container 等选项的容器:在同一主机上共同调度。

关于Docker 群 : how to place app and db together?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53371100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com