精华内容
下载资源
问答
  • Docker Swarm集群搭建

    2019-12-16 00:11:47
    DockerSwarm提供很多新特性,如 具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网络、动态伸缩、滚动更新、安全传输等。 必须弄清楚的几个基本概念 节点: 运行Docker的主机可以主动初始化一个Swa....

        Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台。

        DockerSwarm提供很多新特性,如 具有容错能力的去中心化设计、内置服务发现、负载均衡、路由网络、动态伸缩、滚动更新、安全传输等。

     

    必须弄清楚的几个基本概念

    节点:

        运行Docker的主机可以主动初始化一个Swarm集群或者加入一个已经存在的Swarm集群,这样这个运行Docker的主机就成为一个Swarm集群的节点(node)

    节点分为管理(manager)节点和工作(worker)节点。

    管理节点用于Swarm集群的管理,docker swarm命令基本只能在管理节点上执行(节点退出集群命令docker swarm leave 可以在工作节点执行)。一个swarm集群可以有多个管理节点,但只有一个管理节点可以成为leader,leader通过raft协议实现。

    工作节点是任务执行节点,管理节点将服务(service)下发至工作节点执行。管理节点默认也作为工作节点。也可以通过配置让服务只运行在管理节点。

    工作节点与管理节点的关系

     

     

    服务和任务

    任务(Task)是Swarm中最小的调度单位,目前来说就是一个单一的容器。

    服务(Services)是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

    replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

        global services 每个工作节点上运行一个任务

    两种模式通过 docker service create 的 --mode 参数指定。

     

    容器、任务、服务的关系

     

    创建Swarm集群(WIn10+Docker Desktop)

    下面创建一个小集群,一个管理节点,两个工作节点。

    创建三个主机,并把她们加到集群中去

     

    第一个主机(也是管理节点manager)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web manager

    docker-machine ssh manager

    docker swarm init --advertise-addr 192.168.0.106

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    第二个主机(工作节点work1)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web work1

    docker-machine ssh work1

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    第三个主机(工作节点work2)

    docker-machine create --driver hyperv --hyperv-virtual-switch=public-all-web work2

    docker-machine ssh work2

     

    docker swarm join --token SWMTKN-1-1u51qcpqcjpr3swnuevd6z4k7jvayfnty2bqqrnboy00taaj4f-eg58by0j4qpfezsfmyf72002q 192.168.0.106:2377

     

    Ok 这样就创建好了一个最小的集群,然后登陆到管理节点上。看下情况

    docker node ls

     

    部署服务

    使用Docker service命令来管理Swarm集群中的服务,该命令只能在管理节点运行。

     

    在上面创建的一个Swarm集群中运行一个nginx的服务。

    docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

    如果没有问题的话,集群里这三台访问任何一个IP都应该可以看到服务

     

    在管理者节点上通过docker service ls 来看Swarm集群运行的服务详情

    用docker node ls 来看个节点详情

     

     

    使用 docker service ps 来查看某个服务的详情。

    docker service ps nginx

     

    docker service logs 看服务日志

    docker service logs nginx

     

    服务伸缩

    可以使用 docker service scale 对一个服务运行的容器数量进行伸缩

    当业务处于高峰期时,我们需要扩展服务运行的容器数量

    docker service scale nginx=5

    当业务平稳时,我们需要减少服务运行的容器数量

    docker service scale nginx=2

    删除服务

    使用 docker service rm 来从 Swarm 集群移除某个服务。

    docker service rm nginx

     

    获取Join管理节点的token

    docker swarm join-token manager

     

    获取加入工作节点的token

    docker swarm join-token worker

     

     

    展开全文
  • swarm是docker公司自己的容器集群管理工具,本文介绍了使用docker 1.12 搭建多主机docker swarm集群,分享给大家 准备 准备至少两台的centos 7 主机(全新最小安装, 可以使用虚拟机安装) 开放端口2377 tcp端口, ...
  • Docker swarm是一个用于创建Docker主机(运行Docker守护进程的服务器)集群的工具,具备服务发现,负载均衡,任务分发、调度,服务状态一致性保持,滚动更新,安全传输等特性。从docker v1.12开始,docker engine ...
  • 文章目录3个节点组docker集群docker安装集群搭建简单运行nginx示例简单运行wordpress示例遇到的问题 3个节点组docker集群 docker安装 首先3个节点均安装docker-ce服务 参考下边文章 ...然后把3个节点的防火墙都给...

    3个节点组docker集群

    首先3个节点均安装docker-ce服务
    参考下边文章
    https://blog.csdn.net/zz_aiytag/article/details/103660090
    然后把3个节点的防火墙都给关了

    systemctl stop firewalld
    systemctl disable firewalld
    

    选择一个节点,执行以下指令,则该节点为manager节点

    docker swarm init
    

    执行后效果如下

    [root@worker bin]# docker swarm init
    Swarm initialized: current node (r1kz0bty9rwzt7p2slnhzcnbx) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
        docker swarm join --token SWMTKN-1-1c9hl3te4bwn3ig0ev22m47xshdiaxywp37g8ddu7vcsa3yf7d-3kbudvji28g1hxf1yqulkmq5i XX.XX.XX.52:2377
    
    To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
    

    其它两个节点加入swarm集群

    两个节点分别执行以下执令

    docker swarm join --token SWMTKN-1-1c9hl3te4bwn3ig0ev22m47xshdiaxywp37g8ddu7vcsa3yf7d-3kbudvji28g1hxf1yqulkmq5i XX.XX.XX.52:2377
    
    [root@master docker]# docker swarm join --token SWMTKN-1-1c9hl3te4bwn3ig0ev22m47xshdiaxywp37g8ddu7vcsa3yf7d-3kbudvji28g1hxf1yqulkmq5i XX.XX.XX.52:2377
    This node joined a swarm as a worker.
    

    两个worker节点加入集群之后,返回manager节点
    查看集群节点信息

    docker node ls
    
    [root@worker bin]# docker node ls
    ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    zk0e67y59b74ji70cufc0l850     manager.node        Ready               Active                                  18.03.0-ce
    dxyb0i4gv7so2eoi0l54i8i3y     master.node         Ready               Active                                  18.03.0-ce
    r1kz0bty9rwzt7p2slnhzcnbx *   worker.node         Ready               Active              Leader              18.03.0-ce
    

    某个节点执行docker swarm leave离开集群

    docker swarm leave
    

    docker swarm集群搭建完成。

    如果忘记了连接令牌的值,可在manager上执行下述指令

    docker swarm join-token worker
    

    简单运行nginx示例

    查看集群上运行的服务

    docker service ls
    

    在没有service被创建的时候,上述指令显示列表应为空的

    在manager节点拉取nginx镜像

    docker pull nginx
    

    创建nginx服务

    将nginx的80端口映射到节点的8083端口,服务生成2个nginx容器

    docker service create --name my-web --publish published=8083,target=80 --replicas=2 nginx
    
    [root@worker bin]# docker service create --name my-web --publish published=8083,target=80 --replicas=2 nginx
    image nginx:latest could not be accessed on a registry to record
    its digest. Each node will access nginx:latest independently,
    possibly leading to different nodes running different
    versions of the image.
    
    lfmx0y79dss7b0rgqyfnvmidj
    overall progress: 2 out of 2 tasks 
    1/2: running   [==================================================>] 
    2/2: running   [==================================================>] 
    verify: Service converged 
    

    再查看集群上运行的服务

    docker service ls
    
    [root@worker bin]# docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    lfmx0y79dss7        my-web              replicated          2/2                 nginx:latest        *:8083->80/tcp
    

    查看集群my-web服务的详细信息

    不加--pretty是显示的JSON格式

    docker service inspect  my-web
    docker service inspect --pretty my-web
    

    查看服务的分布节点信息

    docker service  ps my-web
    
    [root@worker bin]# docker service  ps my-web
    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE            ERROR                              PORTS
    3qpm9umad3ew        my-web.1            nginx:latest        worker.node         Running             Running 6 minutes ago                                       
    ogyce9oqbrjs        my-web.2            nginx:latest        manager.node        Running             Running 3 minutes ago
    

    2个nginx容器分别运行在两个节点

    在浏览器上分别输入对应节点 的IP:8083,均可以看到nginx的欢迎信息。

    删除服务

    docker service rm my-web
    

    简单运行wordpress示例

    创建一个overlay网络
    目的是实现容器之间的跨节点通信

    docker network create -d overlay d_net
    

    查看所有的网络

    docker network ls
    
    [root@worker usr]# docker network ls
    NETWORK ID          NAME                DRIVER              SCOPE
    88716f918239        bridge              bridge              local
    p4rb8jyzxhnp        d_net               overlay             swarm
    ac228f80101a        docker_gwbridge     bridge              local
    46619ac752bd        host                host                local
    ql7zzydnbxnc        ingress             overlay             swarm
    d6d37480698f        my-net              bridge              local
    35ca88ad4fed        none                null                local
    d57ccb9606ff        webapp_dev          bridge              local
    932ff2fdda43        webapp_pro          bridge              local
    

    创建一个mysql服务

    docker service create --name d_mysql --env MYSQL_ROOT_PASSWORD=wordpress --env MYSQL_DATABASE=wordpress --network=d_net  --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql:5.7
    
    docker service create --name d_mysql \
      --env MYSQL_ROOT_PASSWORD=wordpress \
      --env MYSQL_DATABASE=wordpress \
      --network=d_net \
      --mount type=volume,source=mysql-data,destination=/var/lib/mysql \
      mysql:5.7
    

    其中,--env MYSQL_DATABASE=wordpress是服务运行时创建的一个数据库

    [root@worker usr]# docker service create --name d_mysql --env MYSQL_ROOT_PASSWORD=wordpress --env MYSQL_DATABASE=wordpress --network=d_net  --mount type=volume,source=mysql-data,destination=/var/lib/mysql mysql:5.7
    image mysql:5.7 could not be accessed on a registry to record
    its digest. Each node will access mysql:5.7 independently,
    possibly leading to different nodes running different
    versions of the image.
    
    xffqk26gnksud924u80tpog69
    overall progress: 1 out of 1 tasks 
    1/1: running   [==================================================>] 
    verify: Service converged 
    

    创建一个wordpress服务

    docker service create --name d_wordpress -p 80:80 --env WORDPRESS_DB_PASSWORD=wordpress --env WORDPRESS_DB_HOST=d_mysql  --network=d_net wordpress
    
    docker service create --name d_wordpress \
      -p 80:80 \
      --env WORDPRESS_DB_PASSWORD=wordpress \
      --env WORDPRESS_DB_HOST=d_mysql \
      --network=d_net \
      wordpress
    

    其中wordpress默认的参数有--env WORDPRESS_DB_NAME=wordpress

    [root@worker usr]# docker service create --name d_wordpress -p 80:80 --env WORDPRESS_DB_PASSWORD=wordpress --env WORDPRESS_DB_HOST=d_mysql --network=d_net wordpress
    image wordpress:latest could not be accessed on a registry to record
    its digest. Each node will access wordpress:latest independently,
    possibly leading to different nodes running different
    versions of the image.
    
    w33qmq737vj3pyd326dfta0af
    overall progress: 1 out of 1 tasks 
    1/1: running   [==================================================>] 
    verify: Service converged 
    

    查看集群的服务

    docker service ls
    
    [root@worker usr]# docker service ls
    ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
    xffqk26gnksu        d_mysql             replicated          1/1                 mysql:5.7           
    w33qmq737vj3        d_wordpress         replicated          1/1                 wordpress:latest    *:80->80/tcp
    

    查看wordpress服务运行的节点

    docker service ps d_wordpress
    
    [root@worker usr]# docker service ps d_wordpress
    ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE                 ERROR                              PORTS
    zbff8om4nk38        d_wordpress.1       wordpress:latest    manager.node        Running             Running 20 seconds ago 
    

    在浏览器上输入对应节点的地址IP:80
    可以正常访问wordpress服务
    在这里插入图片描述
    使用命令查看服务日志

    docker service logs --tail 100 d_wordpress
    

    遇到的问题

    集群创建服务的时候,某个节点一直无法创建启动容器,报错:container ingress-sbox is already present in sandbox ingress sbox,这个时候可能是因为docker的SELinux配置问题。
    解决办法:编辑文件/etc/sysconfig/docker,若不存在该文件,则添加文件。添加以下内容:

    OPTIONS='--selinux-enabled --log-driver=journald --signature-verification=false'
    if [ -z "${DOCKER_CERT_PATH}" ]; then
        DOCKER_CERT_PATH=/etc/docker
    fi
    

    保存退出之后最好重启一下docker服务

    systemctl restart docker
    
    展开全文
  • 本文介绍了docker swarm 集群故障与异常详解,分享给大家,具体如下: 在上次遭遇 docker swarm 集群故障后,我们将 docker 由 17.10.0-ce 升级为最新稳定版 docker 17.12.0-ce 。 前天晚上22:00之后集群中的2个...
  • docker swarm 集群搭建

    2021-12-10 10:54:01
    一、购买服务器 首先准备4台阿里云服务器,我这里用的是测试的,购买的按量付费的,共享型,1核2G ...二、安装docker 使用xshell连接服务 在xshell窗口中右键->发送键输入到所有会话 ...

    一、购买服务器

    1. 首先准备4台阿里云服务器,我这里用的是测试的,购买的按量付费的,共享型,1核2G


       
    2. 网络择默认的,但是服务器需要在同一安全组中


       
    3. 登录凭证选择自定义密码,方便登录操作


       
    4. 分组设置,默认就行


       
    5. 确认订单信息,勾选服务协议,并创建实例

       


       
    6. 购买成功后可在控制台查看

    二、安装docker

    1. 使用xshell连接服务


       
    2. 在xshell窗口中右键->发送键输入到所有会话


       
    3.     安装gcc相关环境
      yum -y install gcc
      yum -y install gcc-c++


       

    4.     卸载旧版本
      sudo yum remove docker \
          docker-client \
          docker-client-latest \
          docker-common \
          docker-latest \
          docker-latest-logrotate \
          docker-logrotate \
          docker-engine


       

    5. 安装需要的软件包

      yum install -y yum-utils


       

    6. 设置镜像仓库

      yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    7. 更新yum软件包索引

      yum makecache fast


       

    8. 安装Docker CE

      yum install -y docker-ce docker-ce-cli containerd.io


       

    9. 设置docker开机启动

      systemctl enable docker


       

    10. 启动docker

      systemctl start docker


       

    11. 通过查看docker版本查看是否安装成功

      docker --version


       

    三、搭建docker swarm集群

    1. 单个服务器操作即可,所以去除“发送键盘输入的所有会话”

       


       
    2. 在服务器1,生成主节点,172.21.133.50为服务器内部ip,根据自己的实际情况修改
      docker swarm init --advertise-addr 172.21.133.50


      如果清楚了这个信息可以通过命令来获取对应的加入命令
      # 加入manager
      docker swarm join-token manager
      # 加入worker
      docker swarm join-token worker


       
    3. 在服务器2,加入服务器2的节点,可以看到以worker角色加入了
      docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-140isnfwtzgrbjxbo9ckx7xwq 172.21.133.50:2377


       

    4. 在服务器1,查看节点信息

      docker node ls


       

    5. 在服务器3,作为worker加入节点

      docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-140isnfwtzgrbjxbo9ckx7xwq 172.21.133.50:2377


       

    6. 在服务器1,现在集群上已有3个节点


       

    7. 在服务器4,作为manager加入集群

      # 在服务器1上生成加入manager的token
      docker swarm join-token manager
      # 在服务器4上运行服务器1上生成的命令
      docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-bpew4e7mdkumvdag65ubvvqcf 172.21.133.50:2377

    四、测试使用

    1. 创建一个nginx服务
      docker service create -p 8888:80 --name my-nginx nginx


      注意:

      # 容器启动!不具有扩缩容
      docker run
      # 服务启动!具有扩缩容,滚动更新!
      docker service

      启动服务后会有随机副本,可在其他服务器上查看


       

    2. 启动3个副本,动态扩缩荣
       

      docker service update --replicas 3 my-nginx


      并且可以在别的服务器中看到服务


      并可以在浏览器中进行访问,只要在集群中的服务器都可以访问


       

    3. 甚至可以扩容10个,会随机分配容器个数。服务可以有多个副本动态扩缩容,实现高可用。

      docker service update --replicas 10 my-nginx


       

    4. 也可以使用scale进行扩缩容,与update效果一样

      docker service scale my-nginx=5

    展开全文
  • Docker Swarm集群搭建教程 接下来通过实例演示一下如何使用 Swarm 来创建安全的集群 实例中包含 3 个管理节点和 3 个工作节点如下图所示可以根据需要自行调整管理节点和工作节点的数量名称和 IP 每个节点都需要安装?...
  • docker swarm集群搭建高可用mysql主备

    千次阅读 2020-12-16 21:22:04
    docker swarm集群搭建高可用mysql主备 前提:为了避免mysql单点故障,很有必要引进mysql主备。主和备分别在不同机器,并且需要保持数据一致性 技术:这里用到nginx+mysql+mysql做高可用的主备,利用nginx做反向...

    docker swarm集群搭建高可用mysql主备

    前提:为了避免mysql单点故障,很有必要引进mysql主备。主和备分别在不同机器,并且需要保持数据一致性

    技术:这里用到nginx+mysql+mysql做高可用的主备,利用nginx做反向代理,当其中一台mysql服务器宕机后,自动切换另一台,注意这里不能做负载均衡,因为高并发是有存在问题的。

     

    一,启动docker swarm集群 

    1,docker stack 配置如下图,如果不会搭建docker swarm 集群的,参考文章:搭建docker swarm高可用集群以及常用命令

     

    #mysql1服务
      mysql-1:
        image: mysql:5.7
        ports:
          - 3310:3306
        networks:
          #指定容器加入的网络
          - network
        environment:
          #最好使用此设定时区,其它静像也可以使用
          - TZ=CST-8
          #指定mysql的访问密码
          - MYSQL_ROOT_PASSWORD=123456
        #可以加--default-time-zone='+8:00'设定时区
        volumes:
          #本地文件目录,持久化
          - /home/AuthenticationCenter/new_mysql/mone/data:/var/lib/mysql
          #指定开启binlog的配置文件
          - /home/AuthenticationCenter/new_mysql/mone/conf/my.cnf:/etc/mysql/my.cnf
        command: --character-set-server=utf8 
                 --collation-server=utf8_general_ci
                 --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
        deploy:
          placement:
            constraints:
              #该hostname为指定容器在哪个主机启动
              - node.hostname == ecs2d8ed9c368b9
    
    #mysql2服务
      mysql-2:
        image: mysql:5.7
        ports:
          - 3311:3306
        networks:
          #指定容器加入的网络
          - network
        environment:
          #最好使用此设定时区,其它静像也可以使用
          - TZ=CST-8
          #指定mysql的访问密码
          - MYSQL_ROOT_PASSWORD=123456
        #可以加--default-time-zone='+8:00'设定时区
        volumes:
          #本地文件目录挂载,持久化
          - /home/AuthenticationCenter/new_mysql/mtwo/data:/var/lib/mysql
          #指定开启binlog的配置文件
          - /home/AuthenticationCenter/new_mysql/mtwo/conf/my.cnf:/etc/mysql/my.cnf
        command: --character-set-server=utf8 
                 --collation-server=utf8_general_ci
                 --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
        deploy:
            placement:
              constraints:
                #该hostname为指定容器在哪个主机启动
                - node.hostname == ecseafe0d11214a
    
    
    
    
    #mysql-nginx服务
      mysql_nginx:
        image: nginx:1.19.2
        ports:
          - 33060:3306
        networks:
          - network
        volumes:
          #本地文件目录
          - /home/AuthenticationCenter/new_mysql/nginx/nginx.conf:/etc/nginx/nginx.conf
          - /home/AuthenticationCenter/new_mysql/nginx/data:/var/www/html/upload
        deploy:
          mode: replicated
          #这里开启两个副本,防止nginx单点故障
          replicas: 2
          placement:
            constraints: [node.role == manager]    
        depends_on:
         - mysql-1

    查找mysql-1mysql-2hostname,可以通过manager管理节点执行下面命令查看, 结果如下图

    命令:docker nodel ls 

    mysql-1的my.cnf配置:

    [mysqld]
    server_id=1
    log-bin= mysql-bin
    
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    
    read-only=0
    relay_log=mysql-relay-bin
    log-slave-updates=on
    auto-increment-offset=1
    auto-increment-increment=2
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/

    mysql-2的my.cnf配置:

    [mysqld]
    server_id=2
    log-bin= mysql-bin
    
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    
    read-only=0
    relay_log=mysql-relay-bin
    log-slave-updates=on
    auto-increment-offset=2
    auto-increment-increment=2
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/

     

    利用nginx做第四层的反向代理,也可以使用Haproxy

    nginx的配置如下 

    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    
    events {
        use   epoll;
        worker_connections  1024;
    }
    
    
    stream {
        upstream mysql {
            #backup为备用mysql,当mysql-1故障后自动切换mysql-2,达到主备效果,
            server mysql-1:3306 max_fails=3 fail_timeout=30s;
            server mysql-2:3306      backup;
        }
    
        server {
            listen    3306;
            proxy_connect_timeout 3000s;
            proxy_timeout 6000s;
            proxy_pass mysql;
        }
    }
    
    
    

    通过命令启动docker swarm 集群: docker stack deploy -c docker-stack-test.yml mysqltest

    二,开启mysql主主同步,

    1,  在对应的主机执行以下命令,进入mysql-1mysql-2容器

    查看docker的容器id:  docker ps -f "name=mysql-1"    或者   docker ps -f "name=mysql-2"

    进入容器:docker exec -it (容器ID) /bin/bash            (容器ID为下图红框位置)

     

     

    2,  分别进入mysql-1mysql-2容器后执行以下命令进入mysql服务     (密码:123456) 

    进入mysql服务:mysql -u root -p 

    输入密码:123456

    3,mysql-1mysql-2分别执行以下命令,允许其他slaveio thread进行监听自己的binlog文件,原理如下图

         GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';

    这里写图片描述

    4, 执行以下命令记录mysql-1同步的binlog文件状态

       show master status;

    如下图:记录mysql-bin.000003 和 3825

     

    5,mysql-2执行以下命令,开启IO线程监听mysql-1的binlog文件黄色信息mysql-1记录的信息

    解释:master_host:这里可以指定容器名,因为在同个docker swarm集群,  

               master_password: 访问mysql-1或者mysql-2的密码

    命令:change master to master_host='mysql-1',master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=3825,master_port=3306;

    6,mysql-2 中开启同步

    start slave ;

     7,记录mysql-2同步的binlog文件状态

    show master status;

    如下图:记录mysql-bin.000004 和 3161 

    8,在mysql-1中执行以下命令,黄色信息mysql-2记录的信息

    change master to master_host='mysql-2',master_user='slave',master_password='123456',master_log_file='mysql-bin.000004',master_log_pos=3161,master_port=3306;

     9,mysql-1开启同步

    start slave ;

    10,分别在mysql-1mysql-2中执行以下命令查看是否开启成功。

    show slave status\G;

     如下图:如果两个都是yes , 说明成功。

    疑问:


    1,通过进入对应MySQL容器配置MySQL主从配置,下次重启后还需不需要重新配置,    答:不需要重新配置,因为配置文件已经持久化到宿主机了,重启不影响。
    2,加入某台MySQL宕机了,当这台MySQL重启后会不会自动同步之前未同步的数据   搭:会的,因为会记录对应master的binlog同步的位置,positon的位置。

     

     

    三,mysql数据恢复

    如果当某个MySQL服务器数据丢失了,需要重新做数据恢复,并且需要重新配置MySQL主主,这一块我们下期讲。。。。。。。

     

    展开全文
  • Docker SwarmDocker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。 使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器...
  • 1.1Docker默认网络管理 ①创建自定义网络 ②使用自定义网络启动容器 ③为容器添加网络管理 2.容器之间的网络通信 (1)创建容器 ①创建两个使用默认的bridge网络的容器 ②创建一个使...
  • 一、主机规划 [root@localhost ~]# hostnamectl set-hostname AnalysisHost1 192.168.9.188|198.9.6.188 [root@localhost ~]# hostnamectl set-hostname AnalysisHost2 192.168.9....二、安装docker环境hostname...
  • Docker(1)-Docker安装(CentOS7系统) Docker(2)-docker run hello-world的执行流程 Docker(3)-Docker镜像操作常用命令 Docker(4)-Docker容器操作常用命令 Docker(5)-Docker之间数据共享技术即数据卷容器 ...
  • [root@analysishost1 ~]# docker pull registry 创建共享目录 [root@analysishost1 _data]# mkdir -p /var/lib/registry 3、启动私有仓库 [root@analysishost1 ~]# docker run -dit --nam...
  • title: "docker swarm 搭建与服务更新" date: 2021-12-15T17:54:53+08:00 Description: "" Tags: ["docker", "swarm", "docker-compose"] Categories: ["docker"] DisableComments: false 序 研究了好久的...
  • [Y_H]实践原创 三台虚拟机:1台centOS , 2台ubuntu。 网上有用docker-machine创建虚拟机...1.利用镜像swarm,搭建swarm集群,创立了连接,但是节点不能识别,报错较多,且不易解决。 2.在建立好manager管理节点...
  • 搭建swap集群: 管理机: systemctl start docker #开启docker服务 docker swarm init --advertise-addr 172.25....#初始化swarm集群节点与端口,生成tocken值 节点机: systemctl start docker ...
  • 关掉管理节点防火墙 [root@analysishost1 ~]# systemctl stop firewalld.service ...AnalysisHost1 192.168.9.188|198.9.6.188运行 docker swarm init 命令,初始化swarm集群,有加入管理节点和工作节点的...
  • Docker Swarm 集群搭建

    2019-11-26 10:25:21
    文章目录环境介绍安装Docker打开端口创建集群创建私有网络安装Portainer面板安装MYSQL和Redis 环境介绍 我的两台虚拟主机 主机名centos IP 192.168.137.200 为管理节点 主机名node1 IP 192.168.137.2 为普通节点 ...
  • docker swarm集群搭建

    2019-08-13 08:51:11
    docker swarm init 复制doker swarm join server2 server3 粘贴 回车 查看集群 docker node ls 在各个节点导入nginx:latest docker service create --name web --replicas 3 --publish 80:80...
  • Docker swarm 集群搭建

    2019-10-18 15:26:23
    15. Docker swarm 创建集群 15.1需要环境: VMware 2. Centos 7 3. Docker 首先创建一个虚拟机,系统为Centos 7 15.2 Centos 7 安装dockerswarm yum install docker 安装docker 命令 docker pull swarm ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,253
精华内容 2,101
关键字:

dockerswarm集群搭建