`
jzy996492849
  • 浏览: 120455 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Docker Stack 部署web集群

阅读更多
摘要: Docker越来越成熟,功能也越来越强大。使用Dokcer Stack做服务集群也是非常的方便,docker 自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。 环境   我是用了两台centos7的虚拟机来做这个教程他们的ip分别是 主服务器:192.

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



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

  地址1:http://www.cnblogs.com/li-peng/p/6511331.html

  地址2:https://yq.aliyun.com/articles/303216?spm=5176.8091938.0.0.2ce387dadknIQu

  也可以用harbor自己搭建,这个我还没有做过教程,有时间再写。



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

使用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/#dockerfile

复制代码
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

版权声明:本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:yqgroup@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
分享到:
评论

相关推荐

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

    使用Dokcer Stack做服务集群也是非常的方便,docker自己就提供了负载功能,感觉很方便,就想给大家分享一下,做一个简单的教程。 环境 我是用了两台centos7的虚拟机来做这个教程他们的ip分别是 主服务器:192.168.0...

    docker 一键部署redis集群 shell脚本 适用centos7.x版本

    docker 一键部署redis集群 shell脚本 适用centos7.x版本,按照说明 将参数传递给 安装脚本,自动执行部署程序,亲测可用

    在docker上部署hadoop集群

    教程:在linux虚拟机下(centos),通过docker容器,部署hadoop集群。一个master节点和三个slave节点。

    docker compose部署redis集群

    docker compose部署redis集群,三主三从,并且外网可以访问,另外还可以从gitee上获取此文件,gitee上除了Redis之外还会陆续提供其他docker部署的文件,https://gitee.com/korov/Docker.git

    使用 Docker 部署 Django web 应用.zip

    使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 Django web 应用.zip使用 Docker 部署 ...

    Docker集群化部署 pdf

    Docker集群化部署

    docker集群部署.txt

    docker集群部署,导出导入镜像,各自集群部署的知识。docker集群部署,导出导入镜像,各自集群部署的知识。docker集群部署,导出导入镜像,各自集群部署的知识。docker集群部署,导出导入镜像,各自集群部署的知识。

    利用docker来部署fastdfs集群.zip

    利用docker来部署fastdfs集群.zip

    基于Docker容器的Web集群设计与实现

    针对完全虚拟化技术不能快速部署Web集群及自适应动态扩容的问题。本文提出了一种基于Docker容器组建Web集群的设计方案。...实验结果表明,通过Docker容器部署Web集群系统开销小,能有效的满足Web集群的部署和扩容需求。

    使用docker部署hadoop集群的详细教程

    最近要在公司里搭建一个hadoop测试集群,于是采用docker来快速部署hadoop集群。 0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程。 目标:使用docker搭建一个一主两从三台机器...

    Docker+K8S 集群环境搭建及分布式应用部署

    Docker+K8S 集群环境搭建及分布式应用部署,一个简单的教程,对docker+k8s有个初步的了解

    使用脚本和docker部署ceph集群

    使用脚本和docker部署ceph集群. 不过得去每个机器上去指定执行一次(前提是先有docker, 并且有对应的docker- ceph镜像), 可以部署mon,osd,mgr,mds.这个是L版本的ceph, 支持多mds active. 也可以用ansible批量执行

    docker中部署hadoop集群脚本

    docker中启动大数据脚本

    docker-compose一键搭建Redis集群

    1.先运行 createFile.py 输入宿主机IP地址,输入redis密码 2.按照控制台输出执行docker-compose up -d 启动命令 3.启动成功后执行加入集群命令即可

    Docker-学习总结(集群管理-Docker Stack+Portainer图形)

    文章目录Docker Stack概念命令Docker stack 实践实践环境实践过程部署一个简单服务添加监控visualizer滚动更新资源控制图形界面portainer安装前准备安装portainer Docker Stack 概念 技术由来:Docker Swarm在大规模...

    详解如何使用Docker部署一个web项目并打包成镜像文件

    docker基本入门以后,可以试试打包docker镜像与dockerfile了 docker镜像 docker hub仓库有2类仓库,用户仓库和顶层仓库,用户仓库由docker用户创建的,顶层仓库由docker内部的人来管理的。仓库里存放的是镜像文件,...

    Docker部署本地以及集群hadoop.zip

    资料目录如下: 1. 制作docker基础镜像-01 2. 制作支持ssh的docker镜像-centos7_ssh-01 3. 制作ssh无密码登录的docker镜像-01 4. 构建基于docker的单节点的HDFS集群-01 ...Docker一键部署hadoop分布式.zip

Global site tag (gtag.js) - Google Analytics