docker容器間的負載均衡

2021-09-24 07:21:01 字數 1591 閱讀 1642

場景

第一次寫文章有點害怕,心理慌慌的,寫得不好的或是不對的,還請指點。在最近一次開發過程中遇見這個這樣的問題:在面臨突發性大量使用者湧進系統的時候,伺服器的資源使用並不高,cpu使用率28%左右,記憶體的使用率40%左右但是依然會造成系統卡頓,請求超時等問題。百思不得其解頭髮都快抓掉完了~。系統也未發現sql慢查詢等操作,修改php的最大鏈結數,程序數等配置依然不見得到改善。思來想去大概確定問題應該出現在php**的身上,由於php處理任務時間過長一直佔據著程序得不到釋放,在大量請求的請求的情況下後面的一直處於等待狀態,等待時候過長就會出現504,系統卡頓的情況。目前可以確定不是硬體問題,sql瓶頸問題,所以問題在於php瓶頸大概會有以下幾個地方:

2.使用者提現請求請求數量太大,商戶支付時請求數太多占用程序(可能性最大)。

3.還在找。哈哈哈哈(找到了告訴你們)

思來想去既然服務的資源使用不多還不到50%,處理不過來的是php,如果使用多個php去執行這些任務就會得到改善,這個時候直覺就是負載均衡。在以往的負載均衡裡都是多台伺服器搭建一樣的執行環境然配置nginx的proxy_pass反向**到http請求上,但是現在問題在於伺服器資源使用只有三分鐘一,再購買伺服器會有點浪費,也不是最根本的辦法,想到docker-compose scale的引數可以設定啟動容器的數量,唉~我可以啟動多個容器然後使用nginx負載聚合每次訪問不用的phpfpm容器處理任務的啊,提起袖子說幹就幹。。。

實現思路

啟動多個phpfpm容器,利用nginx負載均衡分配處理任務的容器

具體配置

nginx:

image: nginx:stable

ports:

- 80:80

- 443:443

volumes:

- ./vhost:/etc/nginx/conf.d

- ../code:/var/www/html

links:

- phpfpm

- phpfpm2

//第乙個phpfpm

phpfpm:

image: php:v7.2

volumes:

- ../code:/var/www/html

- ./php-fpm7.2/queue:/etc/supervisor/conf.d

# ports:

# - "9000"

# - "9501:9501"

//第二個phpfpm

phpfpm2:

image: php:v7.2

volumes:

- ../code:/var/www/html

- ./php-fpm7.2/queue:/etc/supervisor/conf.d

# ports:

# - "9000"

# - "9501:9501"

複製**

upstream webs 

server

location ^~ /web/

}location /

}location ~ \.php(.*)$

}複製**

缺陷

Docker容器實現Nginx的負載均衡

準備工作 docker 主機 192.168.1.10 tomcat latest tomcat1 tomcat latest tomcat2 nginx latest nginx 準備好nginx 和 tomcat 映象 root localhost docker images repositor...

nginx 為docker容器新增負載均衡

nginx作為當前最流行的負載均衡和反向 伺服器,它執行在linux平台,一般的.net 為了實現分流與負載,需要在多個應用伺服器的iis上部署,通過一些工具實現 的同步,然後再nginx上去配置它們.有了docker,你可以在多個linux上花個1秒鐘去run它即可,不用在iis上部署了,對於do...

nginx 為docker容器新增負載均衡

nginx作為當前最流行的負載均衡和反向 伺服器,它執行在linux平台,一般的.net 為了實現分流與負載,需要在多個應用伺服器的iis上部署,通過一些工具實現 的同步,然後再nginx上去配置它們.有了docker,你可以在多個linux上花個1秒鐘去run它即可,不用在iis上部署了,對於do...