• docker 集群之 swarm 和 stack 的基本使用


    1,准备的软件

    1,两台(最好三台) 安装了 centos7 系统 和 docker 软件的机器,虚拟机也行

    2,两台机器之间能互通网络

    3,笔者下面使用两台机器的主机地址:192.168.200.101 和 192.168.200.102

    2,使用 swarm

    1,简单说说理论

    • 1,是什么? swarm 是用于 docker 集群的自带软件
    • 2,集群方式? 采用一个主机,多个从机(工作节点)的模式
    • 3,功能? 只需要在主机部署容器,从机会同步相应的容器(需要拥有相同的仓库)
    • 4,作用? 省去在分布式开发中多台机器需要逐一去部署的繁杂步骤,以后只需要在主机部署容器,并指定需要多少子机,就能统一部署

    2,在 101 主机上创建主机,swarm 不需要单独安装,主要安装了 docker 就自带了该软件,执行下面的命令后,会自动生成从机加入的命令

    docker swarm init
    

    3,将 102 作为从机加入到 101 的主机,执行上图红框内的命令,会出现几节点加入的提示

    4,查看集群节点,注意该命令 只能在主机使用

    docker node ls
    

    3,部署容器,以 nginx 服务器为例,采用 docker-compose 的模式

    1,docker-compose.yml,stock 启动时,不能指定容器名称

    version: '3.1'
    services:
      nginx:
        restart: always
        image: nginx
        ports:
          - 80:80
        deploy:
          mode: replicated   # stack 启动时,指定模式
          replicas: 2        # stack 启动时,指定启动多少节点
        volumes:
          - ./nginx.conf:/etc/nginx/nginx.conf
          - ./www:/usr/share/nginx/www
    

    2,nginx.conf

    # 这里不能省,指定启动的用户,不指定可能会出现 403 等错误
    user root;
    
    # 启动多少个进程,一般和 CPU 的核数相同
    worker_processes  1;
    
    events {
        # 每个进程的最大并发数
        worker_connections  1024;
    }
    
    http {
    
        include            mime.types;
        default_type       application/octet-stream;
        sendfile           on;
        keepalive_timeout  65;  
        
        # 配置一个服务
        server {
        
            # 监听的端口
            listen 80;
            
            # 虚拟主机名称(一般为域名)
            server_name  localhost;
    
            # 配置资源的本地路径,以及缺省路由自动默认响应文件
            location / {
                root   /usr/share/nginx/www/html80;
                index  index.html index.htm;
            }
    
        }
    }
    

    4,在目录下创建 www 目录,创建 html80 目录,并创建一个 index.html,并写上你想要的内容如

    <!DOCTYPE html>
    <html lang="en">
    <head>
    	<meta charset="UTF-8">
    	<title>HELLO</title>
    </head>
    <body>
    	<h1> SWARM 集群测试 </h1>
    </body>
    </html>
    

    5,整个目录结构如下

    6,在该目录下执行以下命令,启动容器

    docker stack deploy -c docker-compose.yml nginx
    
    • 1,docker stack deploy 固定命令
    • 2,-c 指定启动的 docker-compose.yml 文件地址
    • 3,nginx 堆栈名(集群)

    7,查看是否启动成功

    docker stack ls
    docker stack ps nginx
    

    8,在主机和个从机执行 docker ps 查看是否存在该容器

    9,浏览器输入访问,一切 OK


    3,docker stack 常用的命令,下面命令中:[*]代表自定义的部分

    1,部署新的堆栈(集群):docker stack deploy -c [docker-compose.yml文件地址] [堆栈名]

    2,查看所有堆栈(集群):docker stack ls

    3,查看堆栈下的任务:docker stack ps [堆栈名]

    4,删除堆栈(集群):docker stack rm [堆栈名]

    4,docker stack 常用命令

    1,初始化一个主机:docker swarm init

    2,作为从机加入主机:docker swarm join --token=[toekn] [ip][port]

    3,移除一个从机:id 可以使用 docker node ls 查看

    • 1,在主机上操作,清空从机容器:docker node update --availability drain [id]
    • 2,再从机上操作,从机离开主机:docker swarm leave
    • 3,在主机上操作,删除从机节点:docker node rm [id]
  • 相关阅读:
    关于此主题 v1
    从博客园主题了解前端 CSS
    VS2019 许可证到期
    从博客园主题了解前端 HTML
    关于此主题
    从博客园主题了解前端 JS
    GCC 编译器
    Python的Set和List的性能比较 + 两者之间的转换
    wsgi初探(转)
    权限设计概要
  • 原文地址:https://www.cnblogs.com/lovling/p/13370822.html
Copyright © 2020-2023  润新知