`
jzy996492849
  • 浏览: 128870 次
  • 性别: 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...

    sure-deploy:实际上应该是什么“ docker stack deploy”

    "docker stack deploy"是Docker Swarm集群管理的一部分,用于在Docker Swarm模式下部署和管理服务。"sure-deploy"这个项目可能是对"Docker stack deploy"的一种增强或替代方案,可能旨在提供更稳定、更易用的部署...

    ElasticStack(ELK)从入门到实践.pdf

    在安装前,可以通过Docker容器或者Chrome插件进行安装。安装过程中,用户需要了解Elasticsearch的基本概念,如索引(indices)、文档(documents)、映射(mappings)、RESTful API等。通过这些API,用户可以创建非...

    Azure Stack ASDK功能介绍与测试方案.pptx

    此外,对于容器化应用,Azure Stack可以测试Docker Swarm Mode,实现容器集群的管理和编排。 **支持ADFS离线部署和Azure AD** Azure Stack 支持使用Active Directory Federation Services(ADFS)进行离线部署,同时...

    docker-traefik-prometheus:一个用于使用Promethues和Grafana监视Traefik的Docker Swarm堆栈

    为了启动和管理这个堆栈,你可能会使用`docker stack deploy`命令,或者在Docker Desktop的用户界面中进行操作。一旦部署完成,你将能够通过Grafana的Web界面访问监控仪表板,实时查看Traefik的性能指标。这有助于...

    docker-compose-elasticsearch-kibana:用于Elasticsearch和Kibana的Docker Compose

    在本文中,我们将深入探讨如何使用Docker Compose来部署Elasticsearch和Kibana,这两个都是Elastic Stack(以前称为ELK Stack)的关键组件。** **Elasticsearch** 是一个强大的分布式、开源的搜索引擎,它被广泛...

    harmonyos2-ansible-rancher-docker-deploy:使用ansible+rancher+docker实现微服务+

    Stack等), 应该可以快速创建/删除 Hadoop 集群,例如 Amazon Web Service 的 EMR, 已部署的 Web 服务的横向扩展/故障转移/负载平衡…… 它应该易于设置以进行操作等。 Hadoop 生态软件(Apache spark、Apache ...

    基于Jupyter Notebook的AI模型上线与模型部署

    此外,服务化平台如Seldon Core或Kubeflow提供了一套完整的解决方案,将Notebook中的模型部署到Kubernetes集群。 6. **持续集成/持续部署(CI/CD)**:在模型上线的过程中,CI/CD工具如Jenkins、CircleCI和GitHub ...

    Full Stack Python简体中文翻译项目-fullstackpython.cn.zip

    6. **部署与运维**:了解如何在AWS、Google Cloud Platform或Azure等云服务上部署应用程序,以及使用Docker进行容器化和Kubernetes进行集群管理,是全栈开发者的重要技能。 7. **API设计与调用**:RESTful API设计...

    项目自动化之道-如何构建、部署、监控java应用

    容器化技术,如Docker,也使得应用部署更加标准化和可移植,Dockerfile可以定义应用运行环境,而Docker Compose或Kubernetes则用于管理容器集群。 **监控自动化**是确保应用稳定运行的关键。Java应用可以使用各种...

    构建高性能WEB站点(完整版)

    4. 容器化与编排:Docker实现应用的轻量化部署,Kubernetes进行容器编排。 通过学习《构建高性能WEB站点》,读者将能够全面了解和掌握提高Web站点性能的各个环节,从而为用户提供更快、更稳定的在线体验。

    graceful-shutdown-spring-boot:使用Spring Boot正常关闭(演示)

    5. **Docker Service 和 Docker Stack**:在Docker Swarm模式下,`docker service`命令用于管理服务,而`docker stack`则用于在Swarm集群上部署和管理多服务应用。在服务定义中,可以配置优雅停机的相关参数,以确保...

    DevOps.for.Web.Development.2016.10.pdf

    - **日志管理工具**(如 ELK Stack):收集、存储、分析日志数据。 #### 知识点四:DevOps 实践案例 - **案例一**:自动化测试 - **背景**:随着功能不断添加,手动回归测试耗时增加,难以满足快速迭代需求。 - ...

    web开发的网上购物系统

    JUnit和Mockito等工具可以帮助进行自动化测试,而持续集成/持续部署(CI/CD)工具如Jenkins和Docker则可以加速开发流程。 总的来说,“web开发的网上购物系统”是一个涵盖广泛技术领域的项目,包括但不限于Java后端...

    使用open source产品组装你的web应用架构(转载)

    9. **容器化与编排**:Docker用于将应用及其依赖打包成轻量级的容器,Kubernetes或Docker Swarm提供容器编排,实现服务发现、负载均衡和弹性伸缩。 10. **监控与日志**:Prometheus、Grafana用于性能监控,ELK ...

    GooglePlay代码及服务器部署

    同时,根据业务需求,考虑使用集群、容器化(如Docker)或Serverless架构提升扩展性。 6. **监控与日志**:通过如Prometheus、Grafana等工具监控服务器性能,使用ELK Stack(Elasticsearch、Logstash、Kibana)收集...

    SpringBoot536外卖点餐系统.zip

    5. 部署上线:Docker打包,Kubernetes集群部署,监控系统性能。 五、优化与扩展 系统上线后,还需要持续监控性能,根据用户反馈进行迭代优化。可能涉及的技术有: 1. 负载均衡:Nginx或Traefik实现Web层负载,保证...

    基于springbootweb游戏管理系统

    - **Docker**:用于部署和管理应用,实现环境隔离和快速扩展。 8. **测试与持续集成**: - **JUnit**:单元测试框架,确保代码质量。 - **Mockito**:模拟对象库,帮助隔离测试。 - **Maven或Gradle**:构建...

    springboot459客户管理系统--论文pf.zip

    - 内嵌Web服务器:如Tomcat或Jetty,允许开发者无需单独部署Web服务器即可运行应用。 - Starter POMs:预定义的Maven依赖集合,帮助快速构建不同类型的应用。 2. **Spring Boot应用结构**: - `application....

Global site tag (gtag.js) - Google Analytics