暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker Swarm

爱德华的奇妙生活 2020-07-27
328

准备工作:四台服务器,vutrl,四台机器安装docker

  1. 安装文件

    yum -y install gcc
    yum -y install gcc-c++
    1. 移除旧版本

      yum remove docker \
      docker-client \
      docker-client-latest \
      docker-common \
      docker-latest \
      docker-latest-logrotate \
      docker-logrotate \
      docker-engine
      1. 安装需要的软件包

        yum install -y yum-utils
        1. 设置镜像仓库

          yum-config-manager \
          --add-repo \
          https://download.docker.com/linux/centos/docker-ce.repo
          1. 安装docker

            yum install -y docker-ce docker-ce-cli containerd.io  #-y说明 一路yes下去
            1. 启动docker

              systemctl start docker

              Swarm集群搭建

              工作模式

              搭建集群

              1. 初始化节点docker swarm init,docker swarm join 加入一个节点

                [root@guest ~]# docker swarm init --advertise-addr 45.76.192.12

                1. 加入管理节点

                  #获取令牌
                  docker swarm join-token manager #获取manager节点的命令
                  docker swarm join-token worker #获取worker节点的命令


                  [root@guest ~]# docker swarm join --token SWMTKN-1-5lna9tp8dxpfq2xqyomp1mr822pgrywnj1ny8vt57l4252smmb-5u1nohfsa1li1x6m6pnoghfiy 45.76.192.12:2377

                  如果出现错误

                  Error response from daemon: rpc error: code = Unavailable desc = all SubConns are in TransientFailure, latest connection error: connection error: desc = "transport: Error while dialing dial tcp 45.76.192.12:2377: connect: no route to host"

                  这是因为防火墙没有关闭(同一安全组下的不用担心这个问题)

                  解决方案:

                    [root@guest ~]# systemctl stop firewalld.service
                    [root@guest ~]# systemctl disable firewalld.service
                    1. 查看节点,两主两从

                    Raft协议

                    Raft:保证大多数节点存活才可以用,只要>1,集群至少大于3台(三个主节点,>1台管理节点存活),才可以使用,这就是高可用。

                    其他

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


                      #集群,弹性扩缩容
                      [root@guest ~]# docker service create -p 8888:80 --name my-nginx nginx
                      l6zdyv77gt357ixgcr5bmbtoc
                      overall progress: 1 out of 1 tasks
                      1/1: running [==================================================>]
                      verify: Service converged


                      [root@guest ~]# docker service update --replicas 3 my-nginx


                      [root@guest ~]# docker service ls
                      ID NAME MODE REPLICAS IMAGE PORTS
                      l6zdyv77gt35 my-nginx replicated 3/3 nginx:latest *:8888->80/tcp
                      [root@guest ~]#


                      #服务,集群中的任意的节点都可以访问,服务可以有多个副本动态扩缩容实现高可用。

                      update和scale差不多都可以实现扩缩容。

                        # 移除
                        [root@guest ~]# docker service rm my-nginx
                        my-nginx

                        总结

                        swarm

                        集群的管理和编号。docker可以初始化一个swarm集群,其他节点可以加入(管理者、工作者)

                        Node

                        就是一个docker节点。多个节点就组成了一个网络集群(管理者、工作者)

                        Service

                        任务,可以在管理节点或者工作节点来运行。核心,用户访问。

                        Task

                        容器内的命令,细节任务

                        具体的流程

                        命令-->管理-->api-->调度-->工作节点(创建Task容器维护创建)

                        服务副本与全局服务

                        调整service以什么方式运行

                          --mode string
                          Service mode(replicated or global)(default "replicated")


                          docker service create --mode replicated --name mytom tomcat:7 默认的
                          docker service create --mode global --name haha alpine ping baidu.com


                          # 场景:日志收集
                          每一个节点都有自己的日志收集器,过滤,把所有日志最终再传给日志中心
                          服务监控,状态性能

                          Docker Stack

                          Docker-compose 单机部署项目

                          Docker Stack 部署,集群部署

                            # 单机
                            docker-compose up -d wordpress.yaml


                            #集群部署
                            docker stack deploy wordpress.yaml

                            Docker Secret

                            安全!配置密码,证书!

                            Docker Config

                            文章转载自爱德华的奇妙生活,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                            评论