博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Stack 部署web集群
阅读量:7089 次
发布时间:2019-06-28

本文共 2254 字,大约阅读时间需要 7 分钟。

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

环境

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

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

  

  这篇帖子中所有的代码 github地址

设置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 mainimport (    "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 containerCOPY . /go/src/github.com/lpxxn/godockerswarm/WORKDIR /go/src/github.com/lpxxn/godockerswarm/RUN go buildEXPOSE 8000CMD ["./godockerswarm"]

 

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

 

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

docker build . -t goweb:1.0

 

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

docker run -p 8100:8000 7a7e3

 

镜像提交到私有仓库

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

  地址1:

  地址2:

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

 

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

使用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服务时这个非常有用。

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

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:       - gowebnetnetworks:   gowebnet:

 

部署应用

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

docker stack deploy -c docker-compose.yml mygoweb

 

 

 查看启动的服务

 

docker service ps mygoweb

 

 

 

 

测试服务

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

 

 

 这篇帖子中所有的代码 github地址:

 我的博客即将搬运同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan

本文转自lpxxn博客园博客,原文链接:http://www.cnblogs.com/li-peng/p/8144372.html,如需转载请自行联系原作者

你可能感兴趣的文章
Android 三星手机拍照,从图库选择照片旋转问题完美解决
查看>>
在线表格 x-spreadsheet 1.0.16 发布
查看>>
PostgreSQL 多值列的选择性 - Statistics, Cardinality, Selectivity, Estimate
查看>>
三大主流芯片架构特点
查看>>
Python Flask学习知识点(四)
查看>>
Confluence 6 数据库整合的限制
查看>>
scala 与 java泛型数组
查看>>
哈佛团队开发出使用声波来辅助粘性液体的3D打印技术
查看>>
leaflet实用插件整理
查看>>
vue基础
查看>>
Eclipse中安装MemoryAnalyzer插件及使用
查看>>
GEF入门实例_总结_02_新建初始RCP空项目
查看>>
用js来实现那些数据结构04(栈01-栈的实现)
查看>>
你的api加锁了吗?
查看>>
.NET快速信息化系统开发框架 V3.2-Web版本“产品管理”事例编辑界面新增KindEditor复文本编辑控件...
查看>>
浅谈直播行业发展前景和发展方向
查看>>
2- OpenCV+TensorFlow 入门人工智能图像处理-opencv入门
查看>>
Flink1.4 窗口触发器与Evictors
查看>>
几个与文本处理相关的Linux命令总结
查看>>
django模板详解(二)
查看>>