• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 學習電腦 > 操作系統 > Linux教程 > 如何在Linux系統下使用Docker及Weave搭建Nginx的反向代理

    如何在Linux系統下使用Docker及Weave搭建Nginx的反向代理

    時間: 曉斌668 分享

    如何在Linux系統下使用Docker及Weave搭建Nginx的反向代理

      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 10.1.1.1/24 -t -i ubuntu)

      在HOST2上面:啟動weave

      代碼如下:

      #這一步有點不一樣,我們在HOST2上告訴weave他有一個同行在HOST1上,可以指定ip或者主機名,還可以指定端口。如果在HOST1和HOST2直接有防火墻,要確保tcp/udp的6783端口被打開

      weave launch $HOST1

      #和第一步中不同的地方在于,配置的IP不一樣

      ssh=$(weave run 10.1.1.2/24 -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 https://github.com/weaveworks/guides

      $ 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.env

      export WEAVE_AWS_DEMO_HOST1=52.26.175.175

      export WEAVE_AWS_DEMO_HOST2=52.26.83.141

      export WEAVE_AWS_DEMO_HOSTCOUNT=2

      export WEAVE_AWS_DEMO_HOSTS=(52.26.175.175 52.26.83.141)

      請注意這些不是固定的 IP 地址,AWS 會為我們的實例動態地分配 IP 地址。

      我們在 bash 下執行下面的命令使環境變量生效。

      代碼如下:

      . ./weavedemo.env

      2. 啟動 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 10.2.1.1/24

      下一步,我也準備在第二臺主機上啟動 weave 以及 weavedns。

      代碼如下:

      ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2

      $ sudo weave launch $WEAVE_AWS_DEMO_HOST1

      $ sudo weave launch-dns 10.2.1.2/24

      3. 啟動應用容器

      現在,我們準備跨兩臺主機啟動六個容器,這兩臺主機都用 Apache2 Web 服務實例跑著簡單的 php 網站。為了在第一個 Apache2 Web 服務器實例跑三個容器, 我們將會使用下面的命令。

      復制代碼

      代碼如下:

      ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1

      $ sudo weave run --with-dns 10.3.1.1/24 -h ws1.weave.local fintanr/weave-gs-nginx-apache

      $ sudo weave run --with-dns 10.3.1.2/24 -h ws2.weave.local fintanr/weave-gs-nginx-apache

      $ sudo weave run --with-dns 10.3.1.3/24 -h ws3.weave.local fintanr/weave-gs-nginx-apache

      在那之后,我們將會在第二個實例上啟動另外三個容器,請使用下面的命令。

      代碼如下:

      ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST2

      $ sudo weave run --with-dns 10.3.1.4/24 -h ws4.weave.local fintanr/weave-gs-nginx-apache

      $ sudo weave run --with-dns 10.3.1.5/24 -h ws5.weave.local fintanr/weave-gs-nginx-apache

      $ 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 容器,請使用下面的命令。

      復制代碼

      代碼如下:

      ssh -i weavedemo-key.pem ubuntu@$WEAVE_AWS_DEMO_HOST1

      $ 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 服務器之間。

      代碼如下:

      $ ./access-aws-hosts.sh

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws1.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws2.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws3.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws4.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws5.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      {

      "message" : "Hello Weave - nginx example",

      "hostname" : "ws6.weave.local",

      "date" : "2015-06-26 12:24:23"

      }

      結束語:學習啦小編最終成功地將 nginx 配置成一個反向代理/負載均衡服務器,通過使用 weave 以及運行在 AWS(Amazon Web Service)EC2 里面的 ubuntu 服務器中的 docker。從上面的步驟輸出可以清楚的看到我們已經成功地配置了 nginx。我們可以看到請求在一次輪詢中被發送到6個應用容器,這些容器在 Apache2 Web 服務器中跑著 PHP 應用。在這里,我們部署了一個容器化的 PHP 應用,使用 nginx 橫跨多臺在 AWS EC2 上的主機而不需要改變代碼,利用 weavedns 使得每個容器連接在一起,只需要主機名就夠了,眼前的這些便捷, 都要歸功于 weave 以及 weavedns。你們都學會了么……

    358860 主站蜘蛛池模板: 看全色黄大色黄女视频| 男女男精品网站| 久久国产精品久久久久久久久久| 国产噜噜噜视频在线观看| 好大好硬好爽免费视频| 日韩综合第一页| 波多野结衣系列电影在线观看| 色片网站在线观看| 13一14周岁毛片免费| 一区二区三区在线看| 久久伊人精品一区二区三区| 亚洲国产成人精品无码区花野真一| 又粗又大又长又爽免费视频| 国产女人视频免费观看| 国产精品天天干| 天天在线天天综合网色| 成人欧美一区二区三区在线观看| 最新免费jlzzjlzz在线播放| 欧美激情视频网| 特级毛片a级毛片免费播放| 精品精品国产欧美在线观看| 青草青在线视频| 国产玉足榨精视频在线观看| 91九色视频无限观看免费| xxxx日本黄色| 一级做a爰性色毛片| 中文字幕在线观看一区二区 | 国产精品一区二区三区久久| 在线视频一区二区三区| 好男人资源在线手机免费| 怡红院成人在线| 怡红院精品视频| 影音先锋男人站| 女人18毛片水真多国产 | 欧美精品dorcelclub全集31| 永久在线免费观看港片碟片| 激情综合色五月六月婷婷| 波多野结衣33| 在线观看永久免费| 又黄又爽一线毛片免费观看| 国产一二三视频|