麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 網站 > WEB服務 > 正文

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

2020-07-10 11:17:55
字體:
來源:轉載
供稿:網友

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。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一本色道精品久久一区二区三区 | 天天色人人爱 | 亚洲欧美日韩久久精品第一区 | 国产精品白嫩白嫩大学美女 | a视频网站 | 免费h片网站 | 视频一区二区久久 | 欧美成人午夜精品久久久 | 国产成人综合在线观看 | 成人国产精品久久 | 国产九九热 | 羞羞视频免费网站含羞草 | 羞羞色在线观看 | 精品一区二区三区免费 | 免费男女乱淫真视频 | 国产妇女乱码一区二区三区 | 91aa.app| japanese hot milf free av | 国产亚洲精品成人 | 国产精品一区二区三区在线播放 | 亚洲成人高清在线观看 | 国产成年人视频网站 | 最新精品在线 | 中文字幕 亚洲一区 | 成人三级电影在线 | 91丨九色丨国产在线观看 | 亚洲国产视频网 | 91精品国产成人 | 精品无码一区在线观看 | 国产99久久精品一区二区 | 香蕉成人在线观看 | 国内精品久久久久久2021浪潮 | 法国性经典xxxhd | 久久羞羞 | 看免费的毛片 | 一本一道久久久a久久久精品91 | 日韩毛片一区二区三区 | 久久国产中文字幕 | 国产一国产一级毛片视频 | 久草在线网址 | a视频在线免费观看 |