在提到負載均衡的時候,大多數人都是想着幾台服務器甚至幾十台服務器組成一個群組
也就是橫向拓展服務器來實現負載均衡吧
但是還有一種情況是縱向拓展
也就是當你的項目在一台服務器上占用的資源很少,其實是可以在同一台服務器上部署多個項目來實現負載均衡的
這里利用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容器就好了
這樣至少能保證一台服務器掛了還會有其他服務器可以繼續訪問,至於要多少服務器就根據實際的業務情況來考慮