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