1. 程式人生 > >nginx+docker同一伺服器上部署多個docker實現負載均衡

nginx+docker同一伺服器上部署多個docker實現負載均衡

在提到負載均衡的時候,大多數人都是想著幾臺伺服器甚至幾十臺伺服器組成一個群組

也就是橫向拓展伺服器來實現負載均衡吧

但是還有一種情況是縱向拓展

也就是當你的專案在一臺伺服器上佔用的資源很少,其實是可以在同一臺伺服器上部署多個專案來實現負載均衡的

這裡利用nginx+docker來實現同一臺伺服器實現負載均衡

這裡用的伺服器是Linux centos

一,搭建nginx

這個步驟比較簡單,可以自己百度一下,也可以參考我寫的另外一篇部落格

http://blog.csdn.net/wsbgmofo/article/details/78771255

二,建立一個docker專案

1,搭建docker環境,直接yum install docker

2,建立本地專案

這裡用java寫的一個小程式,分別輸入以下內容,分別打成2個jar包

jar包1:


jar包2:


然後把這2個jar包上傳到伺服器

3,在你存放專案的路徑建立一個名為Dockerfile的檔案

vim Dockerfile

在檔案裡輸入以下內容

#基礎映象
FROM java:8
#把你的專案jar包引入到容器的root目錄下
ADD jar包1.jar /root
#專案的啟動方式
ENTRYPOINT ["java","-jar","/root/jar包1.jar"]

這裡例子比較簡單,所以Dockerfile的語句比較少

4,建立映象

docker build -t docker1 .

建立成功後,再把檔案裡的jar包1.jar換成jar包2.jar

這樣就建立了2個映象

可以先執行映象,然後訪問下看看效果

docker run -d -p 8005:7000 docker1

docker run -d -p 8006:7000 docker2

然後瀏覽器輸入ip:埠訪問,如下圖

三,修改nginx配置檔案

1,在nginx的conf目錄下找到nginx.conf進行編輯,如下圖


修改監聽埠,自定義

新增框起來的內容,upstream裡面的內容是你同一臺伺服器上部署的多個docker的IP和埠

2,啟動nginx並輸入IP和nginx的埠,效果如下圖

當其中一個docker容器掛掉的時候,nginx就不會再分配給那個容器了,當所有docker容器都掛掉了你的服務才無法繼續訪問

說到這裡也有人會問如果是直接伺服器掛掉了呢

確實會有這種情況發生,所以要根據實際情況來決定採用幾臺伺服器,然後在這些伺服器上部署多個docker容器就好了

這樣至少能保證一臺伺服器掛了還會有其他伺服器可以繼續訪問,至於要多少伺服器就根據實際的業務情況來考慮