如果我将服务扩展到docker节点大小之外会有什么影响?

时间:2018-04-16 07:17:52

标签: docker devops docker-swarm docker-swarm-mode docker-stack

我在docker swarm模式中有3个节点,其中。

1个经理和2个工作人员节点

我在这里遇到了2个疑问?

  1. 如果我将服务扩展到比我们拥有的节点更大的数量,会有什么影响。 (假设将一项服务扩展为5或6

  2. 如果服务具有必须仅在管理器节点上运行的约束,并且我们将数量扩展到高于管理器节点数量(例如,缩放到3)

    >
  3. 我在管理器节点中运行了mysql服务,该服务器在docker-compose中定义了一个约束放置,以便在manager节点中运行。这是我在尝试将其缩放到 6 时看到的效果,尽管我只有3个节点。 docker service logs 显示4/6正在运行 并且 甚至波动有时显示6/6且有时5/6 < /强>

    这里的docker-compose.yml

    version: '3.4'
    
    networks:
      smstake:   
        ipam:
          config:
            - subnet: 10.0.10.0/24
    
    
    services:
    
        db:
            image: mysql:5.7
            networks:
              - smstake
            ports:
              - "3306"
            environment:
              MYSQL_ROOT_PASSWORD: password
              MYSQL_DATABASE: mydb
              MYSQL_USER: myuser
              MYSQL_PASSWORD: password
            volumes:
              - mysql_data_2:/var/lib/mysql
            deploy:
              mode: replicated
              replicas: 1
              placement:
                constraints:
                  - node.role == manager
        app:
            image: SMSTAKE_VERSION
            ports:
              - 8000:80
            networks:
              - smstake
            depends_on:
              - db
            #  - migration
            deploy:
              mode: replicated
              replicas: 3
    
        migration:
            # build: .
            image: SMSTAKE_VERSION
            command: sh -xc "sleep 10 && pwd && php artisan migrate:fresh --seed 2>&1"
            networks:
              - smstake
            depends_on:
              - app
              - db
            deploy:
              mode: replicated
              replicas: 1
              placement:
                constraints:
                  - node.role == manager
    volumes:
        mysql_data_2:
    

1 个答案:

答案 0 :(得分:1)

  

如果我将服务扩展到比我们拥有的节点更大的数量,会有什么影响。 (假设将一个服务扩展到5或6)

如果扩展超出节点大小,则某些节点将运行同一服务的多个实例。 Docker-swarm选择哪些节点取决于您施加的约束:它随机选择一个匹配约束的节点。

如果没有与约束匹配的节点,则不缩放服务(它具有零实例)。在添加更多节点或更改约束的情况下,Docker-swarm会检查它是否可以启动新实例。 Docker-swarm总是尝试遵循所需的状态(如果服务具有scale = 3,那么Doc​​ker-swarm将在匹配约束的任何节点上启动3个实例,即使它只是一个节点,它将在该节点上启动3个实例)。

  

如果服务具有必须仅在管理器节点上运行的约束,并且我们将数量扩展到高于管理器节点数量(例如,缩放到3)

,那么规模会发生什么?

与上述效果相同。