• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker Stack 部署web集群的方法步骤

    Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。

    环境

    我是用了两台centos7的虚拟机来做这个教程他们的ip分别是

    主服务器:192.168.0.105 // 也是私有仓库服务器
    服务器2: 192.168.0.49

    这篇帖子中所有的代码 github地址:https://github.com/lpxxn/godockerswarm

    设置Docker Swarm

    我以192.168.0.105做为主服务器,在他上面开启swarm

    docker swarm init

    执行命令后会给出加入这个swarm的命令

    在192.168.0.49上执行命令加入swarm

    docker swarm join --token SWMTKN-1-425vswwmb8o34uhnmo58w0k4rfzs5okjtye7mokpqps1vl9ymq-0p6pr2gua7l8a6udb67tfndoo 192.168.0.105:2377

    这样我们就建好了swarm,两台主机现在建立好了关系。

    web服务

    web服务是用go语言写一个简单的接口,返回主机的名称:这样方便我们查看是否有负载

    package main
    
    import (
      "fmt"
      "log"
      "net/http"
      "os"
    )
    
    func main() {
      http.HandleFunc("/hi", func(w http.ResponseWriter, r *http.Request) {
        hostName, _ := os.Hostname()
        fmt.Fprintf(w, "HostName: %s", hostName)
      })
    
      log.Fatal(http.ListenAndServe(":8000", nil))
    }

    Docker file

    看一下dockerfile文件:

    执行的意思就是基于golang境像,把代码复制到相应文件夹,暴露出端口,运行程序。简单吧

    FROM golang
    
    # Copy the current directory contents into the container
    COPY . /go/src/github.com/lpxxn/godockerswarm/
    
    WORKDIR /go/src/github.com/lpxxn/godockerswarm/
    
    RUN go build
    
    EXPOSE 8000
    
    CMD ["./godockerswarm"]

    看一下dockerfile 文件所在的文件夹

    在这个目录下执行docker build命令:

    docker build . -t goweb:1.0

    你可以运行一下新生成的镜像

    docker run -p 8100:8000 7a7e3

    镜像提交到私有仓库

    关于如何搭建私有仓库服务器我这里的就多说了,可以去我之前的帖子看一下

    地址:https://www.jb51.net/article/156168.htm

    因为集群的上机器是自动从仓库取镜像然后再运行程序,所以需要将我们上面生成的镜像推送到我们的私有仓库上去。我自己搭建的

    使用tag重新命名

    docker tag goweb:1.0 lpxxn.com:5000/goweb:1.0

    推送

    docker push lpxxn.com:5000/goweb:1.0

    docker-compose文件

    接下来创建docker-compose.yml文件

    image就是我们上面创建好的镜像。运行5个应用程序,docker会自己做负载,端口映射8111,失败时自动重启服务,并且创建了自己的网络,当有多个server服务时这个非常有用。

    里面的具体参数,大家可以看官方教程:

    https://docs.docker.com/compose/compose-file/

    version: "3"
    services:
     web:
      image: lpxxn.com:5000/goweb:1.0
      deploy:
       replicas: 5
       resources:
        limits: 
         cpus: "0.1"
         memory: 50M
       restart_policy:
        condition: on-failure
      ports:
       - "8111:8000"
      networks: 
       - gowebnet
    networks: 
     gowebnet:

    部署应用

    到了最后的阶段了,部属一样很简单,执行deploy命令

    docker stack deploy -c docker-compose.yml mygoweb

    查看启动的服务

    docker service ps mygoweb

    测试服务

    看这些返回的主机名:不一样吧。docker为我们做了负载了。

    这篇帖子中所有的代码github地址:https://github.com/lpxxn/godockerswarm

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    上一篇:搭建Docker私有仓库(自签名方式)
    下一篇:rancher下的kubernetes之构建标准化vmware镜像的方法步骤
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    Docker Stack 部署web集群的方法步骤 Docker,Stack,部署,web,集群,