位置: 编程技术 - 正文

在Linux系统下使用Docker以及Weave搭建Nginx反向代理(在linux系统中)

编辑:rootadmin

推荐整理分享在Linux系统下使用Docker以及Weave搭建Nginx反向代理(在linux系统中),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:在linux系统中 用来存放系统所需,在linux2.4.0版本中,在linux系统中,在linux系统中 用来存放系统所需,在linux操作系统中,/etc/rc.d/init.d,在linux操作系统中,/etc/rc.d/init.d,在linux2.4.0版本中,在linux系统中,内容如对您有帮助,希望把文章链接给更多的朋友!

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

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

Docker之weave工具weave是什么呢?weave创建了一个虚拟网络,用来连接部署在多台机器上的docker容器。

下面看看weave的应用场景:

应用在使用该网络的时候就像所有的容器都在同一个交换机网络下一样,不需要配置端口映射、连接等等,容器中的应用提供的服务在weaver网络中可以被外部世界访问,不论你的容器运行在哪里。同样的,已经存在的系统应用也可以暴露给容器中的应用来调用,而不用担心内部应用运行的位置。

weave可以穿透防火墙,流量是被加密的,允许主机连接通过一个不被信任的网络,使用weave你可以方便的部署多个容器在不同的地方运行

假如你有一个docker应用运行在两台不同的主机HOST1和HOST2上面,也就是我们要在这两台主机上各部署一个相同类型的docker应用。

在HOST1上面:启动weave复制代码代码如下:#这一步先启动weave路由,需要在每一台HOST上都启动weave launch #启动一个容器,在命令行设置了一个ip,weave run调用docker run -d,因此我们可以使用这种办法启动一个容器,同理存在weave start命令,它是调用docker start命令启动已经存在的容器,如果我们在该HOST1上有多个容器要部署,则继续执行第二行的命令即可,只要保证容器设置的ip没有冲突即可,同一个网段的ip可以到处使用ssh=$(weave run .1.1.1/ -t -i ubuntu)

在Linux系统下使用Docker以及Weave搭建Nginx反向代理(在linux系统中)

在HOST2上面:启动weave复制代码代码如下:#这一步有点不一样,我们在HOST2上告诉weave他有一个同行在HOST1上,可以指定ip或者主机名,还可以指定端口。如果在HOST1和HOST2直接有防火墙,要确保tcp/udp的端口被打开weave launch $HOST1 #和第一步中不同的地方在于,配置的IP不一样ssh=$(weave run .1.1.2/ -t -i ubuntu)

我们也可以告诉HOST1去连接HOST2,或者两者都告诉他们,这是没有任何问题的,weave会自动的连接,在他们的服务启动后,我们也可以告诉weave连接多个同行,你可以提供多个ip地址,用空格分开即可。

在HOST1上面:

复制代码代码如下:docker attach $ssh在HOST2上面:

复制代码代码如下:docker attach $ssh然后两者进行互ping,会发现网络是通的

下面来看一下具体的部署过程1. 搭建 AWS 实例首先,我们需要搭建 Amzaon Web Service 实例,这样才能在 ubuntu 下用 weave 跑 docker 容器。我们将会使用AWS 命令行 来搭建和配置两个 AWS EC2 实例。在这里,我们使用最小的可用实例,t1.micro。我们需要一个有效的Amazon Web Services 账户使用 AWS 命令行界面来搭建和配置。我们先在 AWS 命令行界面下使用下面的命令将 github 上的 weave 仓库克隆下来。复制代码代码如下:$ git clone cd weave-gs/aws-nginx-ubuntu-simple在克隆完仓库之后,我们执行下面的脚本,这个脚本将会部署两个 t1.micro 实例,每个实例中都是 ubuntu 作为操作系统并用 weave 跑着 docker 容器。复制代码代码如下:$ sudo ./demo-aws-setup.sh在这里,我们将会在以后用到这些实例的 IP 地址。这些地址储存在一个 weavedemo.env 文件中,这个文件创建于执行 demo-aws-setup.sh 脚本期间。为了获取这些 IP 地址,我们需要执行下面的命令,命令输出类似下面的信息。复制代码代码如下:$ cat weavedemo.envexport WEAVE_AWS_DEMO_HOST1=...export WEAVE_AWS_DEMO_HOST2=...export WEAVE_AWS_DEMO_HOSTCOUNT=2export WEAVE_AWS_DEMO_HOSTS=(... ...)请注意这些不是固定的 IP 地址,AWS 会为我们的实例动态地分配 IP 地址。

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

复制代码代码如下: . ./weavedemo.env2. 启动 Weave 和 WeaveDNS在安装完实例之后,我们将会在每台主机上启动 weave 以及 weavedns。Weave 以及 weavedns 使得我们能够轻易地将容器部署到一个全新的基础架构以及配置中, 不需要改变代码,也不需要去理解像 Ambassador 容器以及 Link 机制之类的概念。下面是在第一台主机上启动 weave 以及 weavedns 的命令。复制代码代码如下:ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1$ sudo weave launch$ sudo weave launch-dns .2.1.1/下一步,我也准备在第二台主机上启动 weave 以及 weavedns。复制代码代码如下:ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2$ sudo weave launch $WEAVE_AWS_DEMO_HOST1$ sudo weave launch-dns .2.1.2/. 启动应用容器现在,我们准备跨两台主机启动六个容器,这两台主机都用 Apache2 Web 服务实例跑着简单的 php 网站。为了在第一个 Apache2 Web 服务器实例跑三个容器, 我们将会使用下面的命令。复制代码代码如下:ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1$ sudo weave run --with-dns .3.1.1/ -h ws1.weave.local fintanr/weave-gs-nginx-apache$ sudo weave run --with-dns .3.1.2/ -h ws2.weave.local fintanr/weave-gs-nginx-apache$ sudo weave run --with-dns .3.1.3/ -h ws3.weave.local fintanr/weave-gs-nginx-apache在那之后,我们将会在第二个实例上启动另外三个容器,请使用下面的命令。复制代码代码如下:ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2$ sudo weave run --with-dns .3.1.4/ -h ws4.weave.local fintanr/weave-gs-nginx-apache$ sudo weave run --with-dns .3.1.5/ -h ws5.weave.local fintanr/weave-gs-nginx-apache$ sudo weave run --with-dns .3.1.6/ -h ws6.weave.local fintanr/weave-gs-nginx-apache注意: 在这里,--with-dns 选项告诉容器使用 weavedns 来解析主机名,-h x.weave.local 则使得 weavedns 能够解析该主机。

4. 启动 Nginx 容器在应用容器如预期的运行后,我们将会启动 nginx 容器,它将会在六个应用容器服务之间轮询并提供反向代理或者负载均衡。 为了启动 nginx 容器,请使用下面的命令。复制代码代码如下:ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1$ sudo weave run --with-dns .3.1.7/ -ti -h nginx.weave.local -d -p : fintanr/weave-gs-nginx-simple因此,我们的 nginx 容器在 $WEAVEAWSDEMO_HOST1 上公开地暴露成为一个 http 服务器。

5. 测试负载均衡服务器为了测试我们的负载均衡服务器是否可以工作,我们执行一段可以发送 http 请求给 nginx 容器的脚本。我们将会发送6个请求,这样我们就能看到 nginx 在一次的轮询中服务于每台 web 服务器之间。复制代码代码如下:$ ./access-aws-hosts.sh{"message" : "Hello Weave - nginx example","hostname" : "ws1.weave.local","date" : "-- ::"}{"message" : "Hello Weave - nginx example","hostname" : "ws2.weave.local","date" : "-- ::"}{"message" : "Hello Weave - nginx example","hostname" : "ws3.weave.local","date" : "-- ::"}{"message" : "Hello Weave - nginx example","hostname" : "ws4.weave.local","date" : "-- ::"}{"message" : "Hello Weave - nginx example","hostname" : "ws5.weave.local","date" : "-- ::"}{"message" : "Hello Weave - nginx example","hostname" : "ws6.weave.local","date" : "-- ::"}结束语我们最终成功地将 nginx 配置成一个反向代理/负载均衡服务器,通过使用 weave 以及运行在 AWS(Amazon Web Service)EC2 里面的 ubuntu 服务器中的 docker。从上面的步骤输出可以清楚的看到我们已经成功地配置了 nginx。我们可以看到请求在一次轮询中被发送到6个应用容器,这些容器在 Apache2 Web 服务器中跑着 PHP 应用。在这里,我们部署了一个容器化的 PHP 应用,使用 nginx 横跨多台在 AWS EC2 上的主机而不需要改变代码,利用 weavedns 使得每个容器连接在一起,只需要主机名就够了,眼前的这些便捷, 都要归功于 weave 以及 weavedns。

Linux系统中的切换用户命令宝典 #1:runuser命令runuser命令使用一个替代的用户或者组ID运行一个Shell。这个命令仅在root用户时有用。仅以会话PAM钩子运行,并且没有密码提示。如果用一

简介Linux系统的etc目录及其下的passwd文件 先来看一下etc目录下一般包含哪些东西:/etc目录包含很多文件.许多网络配置文件也在/etc中./etc/rcor/etc/rc.dor/etc/rc*.d启动、或改变运行级时运行的scripts或

详解Linux系统下的/dev目录 dev是设备(device)的英文缩写。/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部

标签: 在linux系统中

本文链接地址:https://www.jiuchutong.com/biancheng/350457.html 转载请保留说明!

上一篇:Linux系统下基本的帮助查询命令小结(linux系统基本指令)

下一篇:Linux系统中的切换用户命令宝典(linux 切文件)

  • 长期待摊费用怎么算
  • 银行承兑的商业汇票计入什么科目
  • 法人可以领发票吗现在
  • 红字发票信息表盖章位置图片
  • 社保本期工资总额是怎么填的
  • 小规模纳税人租金发票的税率是多少
  • 按季度申报,利润表中所得税费用怎么算出来的
  • 怎么开具红票
  • 生产企业购进的用于生产的机器设备
  • 客户能把货款打给个人吗
  • 职工取暖费计入什么科目
  • 税控盘服务费怎么填写申报表
  • 应付职工薪酬月末结转到哪里
  • 周转材料低值易耗品怎么摊销
  • 本月发放上月工资情况说明
  • 案例分析建筑业发展趋势
  • 的商品编码
  • 补贴属于什么手段
  • 出口货物国际运输流程图
  • 无形资产摊销是什么科目
  • 不动产租赁费计入什么科目
  • php获取useragent
  • 行政事业单位会计职责
  • 商场返现活动怎么入账
  • 个人出售二手房要交增值税吗
  • 股权转让有溢价分录怎么写
  • 门店装修费怎么记会计凭证
  • 10分钟搞定3种网红小吃
  • ccf noi指导教师认证考核
  • php过滤字符
  • 交易性金融资产属于流动资产
  • three.js入门指南
  • packet命令
  • 工业企业采购商品过程中发生的进货费用
  • 工资计提与发放在一个月行吗
  • 公司一季度报表
  • 织梦怎么采集文章
  • 收到汇算清缴的退税需要交税吗
  • 电子承兑汇票到期提示付款后多久到账
  • 认缴制下实收资本如何证明
  • 投资管理公司怎么收费
  • 坏账准备的借贷方向代表什么
  • 预收一年房租的会计科目
  • 电子银行承兑到期没有兑现怎么办
  • 增值税明细账怎么结账
  • 库存商品过期报废的会计分录是什么
  • 跨年成本少结转如何调整
  • 异地工程开票要注意什么手续
  • 质量问题扣货款会计怎么处理
  • 增加的实收资本印花税
  • 怎么查对方是一般还是小规模
  • 应纳税额与应纳所得额
  • 小规模需要进项税额吗
  • 现成的财务报表
  • linux中,什么命令可以控制口令的存活时间?
  • linux安装solr
  • ghost怎么安装gho文件
  • win7系统控制面板在哪里打开
  • xp系统如何去掉开机登陆界面
  • linux系统怎么安装wine
  • centos 安装
  • 编写一个定时间隔为5ms的子程序
  • win7 64位纯净版图标变成了一样该怎么办?win7旗舰版图标变成一样的解决方法
  • win7能用多屏协同吗
  • 隐藏网络怎么连接电脑连不上
  • png批量转换成jpg
  • opengl geometry shader
  • c++ not1
  • android拍照
  • 加密批处理代码
  • SendTo增强版 批处理实用小工具
  • 从零开始学什么好
  • Unity3D实现Billboard效果
  • javascript开发平台
  • android基础入门教程
  • 城市配套费需要什么资料
  • 居民与非居民的区别国际金融
  • 车船税填表说明
  • 甘肃省国家励志奖学金证书打印网址
  • 新加坡国税局的电话号码
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设