首页 > 服务器 > Web服务器 > 正文

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

2024-09-01 13:56:34
字体:
来源:转载
供稿:网友

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的命令

Docker,Stack,web集群

在192.168.0.49上执行命令加入swarm

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

Docker,Stack,web集群

这样我们就建好了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,Stack,web集群

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

docker build . -t goweb:1.0

Docker,Stack,web集群

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

docker run -p 8100:8000 7a7e3

Docker,Stack,web集群

镜像提交到私有仓库

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

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

使用tag重新命名

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

Docker,Stack,web集群

推送

docker push lpxxn.com:5000/goweb:1.0

Docker,Stack,web集群

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

部署应用

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

docker stack deploy -c docker-compose.yml mygoweb

Docker,Stack,web集群

查看启动的服务

docker service ps mygoweb

Docker,Stack,web集群

Docker,Stack,web集群

测试服务

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

Docker,Stack,web集群

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

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


注:相关教程知识阅读请移步到服务器教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表