1. 程式人生 > 實用技巧 >docker nginx 負載均衡

docker nginx 負載均衡

本來這個配置很簡單,也就好像從來沒測試過。正好用 docker 來模擬多臺伺服器,於是開啟了三臺 nginx 容器,還測試了容器相互通過 Ping 內部 IP 172.17.0.X 能通,可是等配置好了,就是請求入口伺服器時,返回 No route to host。

百度查了下,說什麼防火牆,我都沒開。加上我是用的 WSL,與真實 Linux 系統還有點差異,所以就想通過別的方式。想過改為繫結宿主機埠,又還麻煩,不如把容器加入同一個網路,這樣相互之間可以通過容器名訪問,試試看行不行。

建立一個網路

docker network create network

啟動三個容器

dockerrun-d--networknetwork--namenginx-1nginx:latest dockerrun-d--networknetwork--namenginx-2nginx:latest dockerrun-d--networknetwork--namenginx-3nginx:latest 進入容器nginx-1,並安裝 vim 和 ping 命令 dockerexec-itnginx-1bash sed-i"s/deb.debian.org/mirrors.aliyun.com/g"/etc/apt/sources.list aptupdate aptinstall-yvimiputils-ping pingnginx-2 pingnginx-3 編輯容器nginx-1 中的 配置檔案,在http 塊中新增入下內容,順便把 http 塊最下邊 include 其他配置檔案刪掉 vim/etc/nginx/nginx.conf
http {

     upstream backend {
     server nginx-
2; server nginx-3; } server { listen 80; location / { proxy_pass http://backend; } } }

儲存後重啟容器nginx-1

docker restart nginx-1 進入容器nginx-2 dockerexec-itnginx-2 bash echo 'ngxin 2 號伺服器' >/usr/share/nginx/html/index.html 進入容器nginx-3 dockerexec-itnginx-3 bash echo 'ngxin 3 號伺服器' >/usr/share/nginx/html/index.html 回到宿主機的命令,檢視nginx-1 的 ip 地址 docker container inspect nginx-1 例如是172.17.0.2,請求一下這個地址,返回內容會不會變,如果變的話,說明成功了。 curl 172.17.0.2 curl 172.17.0.2 curl 172.17.0.2 我用自己封裝的快捷命令走一遍。