如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器

作者:Arun Pyasi 2015-09-06 09:53:41

云计算

系统运维 在这篇教程里,我们将使用 nginx 来将负载均衡分配到一个运行 Apache 的容器集合。最简单轻松的方法就是使用 Weave 来把运行在 ubuntu 上的 docker 容器中的 nginx 配置成负载均衡服务器。

Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器。Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动发现。它可以让我们更加专注于应用的开发,而不是基础架构。Weave 提供了一个如此棒的环境,仿佛它的所有容器都属于同个网络,不需要端口/映射/连接等的配置。容器中的应用提供的服务在 weave 网络中可以轻易地被外部世界访问,不论你的容器运行在哪里。在这个教程里我们将会使用 weave 快速并且简单地将 nginx web 服务器部署为一个负载均衡器,反向代理一个运行在 Amazon Web Services 里面多个节点上的 docker 容器中的简单 php 应用。这里我们将会介绍 WeaveDNS,它提供一个不需要改变代码就可以让容器利用主机名找到的简单方式,并且能够让其他容器通过主机名连接彼此。

在这篇教程里,我们将使用 nginx 来将负载均衡分配到一个运行 Apache 的容器集合。最简单轻松的方法就是使用 Weave 来把运行在 ubuntu 上的 docker 容器中的 nginx 配置成负载均衡服务器。

[[147906]]

 

1. 搭建 AWS 实例

首先,我们需要搭建 Amzaon Web Service 实例,这样才能在 ubuntu 下用 weave 跑 docker 容器。我们将会使用AWS 命令行 来搭建和配置两个 AWS EC2 实例。在这里,我们使用最小的可用实例,t1.micro。我们需要一个有效的Amazon Web Services 账户使用 AWS 命令行界面来搭建和配置。我们先在 AWS 命令行界面下使用下面的命令将 github 上的 weave 仓库克隆下来。

  1. $ git clone https://github.com/weaveworks/guides
  2. $ cd weave-gs/aws-nginx-ubuntu-simple

在克隆完仓库之后,我们执行下面的脚本,这个脚本将会部署两个 t1.micro 实例,每个实例中都是 ubuntu 作为操作系统并用 weave 跑着 docker 容器。

  1. $ sudo ./demo-aws-setup.sh

在这里,我们将会在以后用到这些实例的 IP 地址。这些地址储存在一个 weavedemo.env 文件中,这个文件创建于执行 demo-aws-setup.sh 脚本期间。为了获取这些 IP 地址,我们需要执行下面的命令,命令输出类似下面的信息。

  1. $ cat weavedemo.env
  2.  
  3. export WEAVE_AWS_DEMO_HOST1=52.26.175.175
  4. export WEAVE_AWS_DEMO_HOST2=52.26.83.141
  5. export WEAVE_AWS_DEMO_HOSTCOUNT=2
  6. export WEAVE_AWS_DEMO_HOSTS=(52.26.175.17552.26.83.141)

请注意这些不是固定的 IP 地址,AWS 会为我们的实例动态地分配 IP 地址。

我们在 bash 下执行下面的命令使环境变量生效。

  1. ../weavedemo.env

 

2. 启动 Weave 和 WeaveDNS

在安装完实例之后,我们将会在每台主机上启动 weave 以及 weavedns。Weave 以及 weavedns 使得我们能够轻易地将容器部署到一个全新的基础架构以及配置中, 不需要改变代码,也不需要去理解像 Ambassador 容器以及 Link 机制之类的概念。下面是在第一台主机上启动 weave 以及 weavedns 的命令。

  1. ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1
  2. $ sudo weave launch
  3. $ sudo weave launch-dns 10.2.1.1/24

下一步,我也准备在第二台主机上启动 weave 以及 weavedns。

  1. ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2
  2. $ sudo weave launch $WEAVE_AWS_DEMO_HOST1
  3. $ sudo weave launch-dns 10.2.1.2/24

 

3. 启动应用容器

现在,我们准备跨两台主机启动六个容器,这两台主机都用 Apache2 Web 服务实例跑着简单的 php 网站。为了在第一个 Apache2 Web 服务器实例跑三个容器, 我们将会使用下面的命令。

  1. ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1
  2. $ sudo weave run --with-dns 10.3.1.1/24-h ws1.weave.local fintanr/weave-gs-nginx-apache
  3. $ sudo weave run --with-dns 10.3.1.2/24-h ws2.weave.local fintanr/weave-gs-nginx-apache
  4. $ sudo weave run --with-dns 10.3.1.3/24-h ws3.weave.local fintanr/weave-gs-nginx-apache

在那之后,我们将会在第二个实例上启动另外三个容器,请使用下面的命令。

  1. ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2
  2. $ sudo weave run --with-dns 10.3.1.4/24-h ws4.weave.local fintanr/weave-gs-nginx-apache
  3. $ sudo weave run --with-dns 10.3.1.5/24-h ws5.weave.local fintanr/weave-gs-nginx-apache
  4. $ sudo weave run --with-dns 10.3.1.6/24-h ws6.weave.local fintanr/weave-gs-nginx-apache

注意: 在这里,–with-dns 选项告诉容器使用 weavedns 来解析主机名,-h x.weave.local 则使得 weavedns 能够解析该主机。

 

4. 启动 Nginx 容器

在应用容器如预期的运行后,我们将会启动 nginx 容器,它将会在六个应用容器服务之间轮询并提供反向代理或者负载均衡。 为了启动 nginx 容器,请使用下面的命令。

  1. ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1
  2. $ sudo weave run --with-dns 10.3.1.7/24-ti -h nginx.weave.local-d -p 80:80 fintanr/weave-gs-nginx-simple

因此,我们的 nginx 容器在 $WEAVEAWSDEMO_HOST1 上公开地暴露成为一个 http 服务器。

 

5. 测试负载均衡服务器

为了测试我们的负载均衡服务器是否可以工作,我们执行一段可以发送 http 请求给 nginx 容器的脚本。我们将会发送6个请求,这样我们就能看到 nginx 在一次的轮询中服务于每台 web 服务器之间。

  1. $ ./access-aws-hosts.sh
  2.  
  3. {
  4. "message":"Hello Weave - nginx example",
  5. "hostname":"ws1.weave.local",
  6. "date":"2015-06-26 12:24:23"
  7. }
  8. {
  9. "message":"Hello Weave - nginx example",
  10. "hostname":"ws2.weave.local",
  11. "date":"2015-06-26 12:24:23"
  12. }
  13. {
  14. "message":"Hello Weave - nginx example",
  15. "hostname":"ws3.weave.local",
  16. "date":"2015-06-26 12:24:23"
  17. }
  18. {
  19. "message":"Hello Weave - nginx example",
  20. "hostname":"ws4.weave.local",
  21. "date":"2015-06-26 12:24:23"
  22. }
  23. {
  24. "message":"Hello Weave - nginx example",
  25. "hostname":"ws5.weave.local",
  26. "date":"2015-06-26 12:24:23"
  27. }
  28. {
  29. "message":"Hello Weave - nginx example",
  30. "hostname":"ws6.weave.local",
  31. "date":"2015-06-26 12:24:23"
  32. }

 

结束语

我们最终成功地将 nginx 配置成一个反向代理/负载均衡服务器,通过使用 weave 以及运行在 AWS(Amazon Web Service)EC2 里面的 ubuntu 服务器中的 docker。从上面的步骤输出可以清楚的看到我们已经成功地配置了 nginx。我们可以看到请求在一次轮询中被发送到6个应用容器,这些容器在 Apache2 Web 服务器中跑着 PHP 应用。在这里,我们部署了一个容器化的 PHP 应用,使用 nginx 横跨多台在 AWS EC2 上的主机而不需要改变代码,利用 weavedns 使得每个容器连接在一起,只需要主机名就够了,眼前的这些便捷, 都要归功于 weave 以及 weavedns。

如果你有任何的问题、建议、反馈,请在评论中注明,这样我们才能够做得更好,谢谢:-)


via: http://linoxide.com/linux-how-to/nginx-load-balancer-weave-docker/

作者:Arun Pyasi 译者:dingdongnigetou 校对:wxy

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/264261.html<

(0)
运维的头像运维
上一篇2025-05-04 23:00
下一篇 2025-05-04 23:01

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注