[Demo實踐]使用Docker測試nginx負載均衡策略
阿新 • • 發佈:2018-12-06
實踐環境:
linux主機,已安裝docker
步驟1:
下載伺服器映象,此處直接選擇nginx
docker pull nginx
步驟2:
啟動5個容器,分別命名n1~n5,並暴露埠8071 ~ 8075
docker run --name n1 -d -p 8071:80 nginx
docker run --name n2 -d -p 8072:80 nginx
docker run --name n3 -d -p 8073:80 nginx
docker run --name n4 -d -p 8074:80 nginx
docker run --name n5 -d -p 8075:80 nginx
步驟3:
建立新的index.html,替換容器nginx主頁,以區分負載均衡的情況
建立
echo n1 > index.html
覆蓋
docker cp index.html n5:/usr/share/nginx/html/
其他n2~n5略,此處麻煩的話可以寫shell指令碼處理。
步驟4:
為先忽略docker容器間通訊問題,把負載均衡策略的nginx[以下稱為n0
]部署在docker外側
測試
策略一:輪詢
修改nginx.conf,訪問n0
地址,多次訪問發現結果在n1~n5間切換。
user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; upstream tomcat_server{ server 127.0.0.1:8071 weight=10; server 127.0.0.1:8072 weight=10; server 127.0.0.1:8073 weight=10; server 127.0.0.1:8074 weight=10; server 127.0.0.1:8075 weight=10; } server { listen 80; server_name localhost; location / { proxy_pass http://tomcat_server; root html; index index.html; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } }
策略二:基於權重
只需增加權重即可
server 127.0.0.1:8071 weight=10
;
策略三:ip_hash
只需在upstream尾部增加ip_hash;
即可按ip分配
策略四:fair
按響應時間短分配,需要安裝第三方模組
策略五:url_hash
hash $request_uri;
hash_method crc32;
按url分配,需要安裝第三方模組