nginx+consul做動態負載均衡(docker)
導讀 | 負載均衡建立在現有網路結構之上,它提供了一種廉價有效透明的方法擴充套件網路裝置和伺服器的頻寬、增加吞吐量、加強網路資料處理能力、提高網路的靈活性和可用性。 |
Consul 是一個支援多資料中心分散式高可用的服務發現和配置共享的服務軟體。 服務發現以及註冊:當服務Producer 啟動時,會將自己的Ip/host等資訊透過傳送請求告知 Consul,Consul 接收到 Producer 的註冊資訊後,每隔一段時間會向 Producer 傳送一個健康檢查的請求,檢驗Producer是 否健康。
服務呼叫:當 Consumer 請求Product時,會先從 Consul 中拿到儲存Product服務的 IP 和 Port 的臨時表 (temp table),從temp table表中任選一個· Producer 的 IP 和 Port, 然後根據這個IP和Port,傳送訪問請 求;temp table表只包含透過了健康檢查的 Producer 資訊,並且每隔一段時間更新。
拉取consul映象
docker pull consul
docker run -p 8500:8500 -d --name consul -v /docker/consul/data:/consul/data -- privileged=true –e CONSUL_BIND_INTERFACE='eth0'consul agent -server -bootstrap-expect 1 -data-dir /consul/data -node=ali -ui -client='0.0.0.0'
引數含義:
agent -server表示啟動的是一個服務
-bootstrap-expect 1 表示等待多少個節點再啟動,這裡1個,就是自己一個就啟動了
-node=texun_1 就是給consul服務起個別名為ali
-data-dir /opt/data 資料儲存目錄為/opt/data
-ui 啟動預設ui介面
-client consul繫結在哪個client地址上,這個地址提供HTTP、DNS、RPC等服務,預設是 127.0.0.1,可指定允許客戶端使用什麼ip去訪問
1.將準備的素材copy到nginx容器
docker cp /home/nginx-upsync-module-master.zip nginx:/home/ docker cp /home/nginx-1.21.0.tar.gz nginx:/home/
2.進入容器解壓安裝包
unzip nginx-upsync-module-master.zip tar -zxvf nginx-1.21.0.tar.gz
3.安裝相關擴充套件
apt-get install -y gcc autoconf automake make libpcre3 libpcre3-dev openssl libssl-dev zlib1g-dev
4.進入解壓的nginx安裝包,進行編譯安裝
cd /home/nginx-1.21.0 #透過命令檢視nginx版本與編譯資訊 nginx -V #複製相關編譯資訊,新增nginx- upsync-module-master模組 ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-g -O2 -fdebug-prefix-map=/data/builder/debuild/nginx-1.21.0/debian/debuild-base/nginx-1.21.0=. -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' --add-module=/home/nginx-upsync-module-master
5.編譯安裝
make && make install
upstream edu{ server 192.168.35.138; upsync 172.17.0.3:8500/v1/kv/upstreams/nginx_test upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /etc/nginx/conf.d/server_test.conf; include /etc/nginx/conf.d/server_test.conf; } server { listen 80; listen [::]:80; server_name localhost; root /docker/www/; index index.php index.html; location / { proxy_pass } }
往consul加入nginx服務
curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://192.168.35.139:8500/v1/kv/upstreams/nginx_test/192.168.35.131:81 curl -X PUT -d '{"weight":1,"max_fails":2,"fail_timeout":10}' http://192.168.35.139:8500/v1/kv/upstreams/nginx_test/192.168.35.131:80
接著檢視server_test.conf檔案,看看consul是否有將我們新增的nginx服務加入到負載均衡中。
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2792088/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 負載均衡和動態負載均衡分別是什麼?-VeCloud負載Cloud
- 利用nginx做後臺伺服器的動態載入和負載均衡Nginx伺服器負載
- APACHE做負載均衡時出錯Apache負載
- 使用Docker+Nginx模擬負載均衡DockerNginx負載
- docker初體驗:docker部署nginx負載均衡叢集DockerNginx負載
- 負載均衡負載
- 基於開源Tars的動態負載均衡實踐負載
- docker下nginx反向代理和負載均衡配置DockerNginx負載
- Docker Compose+nginx實現負載均衡DockerNginx負載
- gRPC負載均衡(客戶端負載均衡)RPC負載客戶端
- gRPC負載均衡(自定義負載均衡策略)RPC負載
- nginx負載均衡原理分析到手動編寫簡易負載均衡器Nginx負載
- Radware Web Server Director動態負載均衡產品介紹WebServer負載
- Nginx 做負載均衡的幾種輪詢策略Nginx負載
- Docker Swarm :gRPC 基於 DNS 的負載均衡DockerSwarmRPCDNS負載
- Docker compose 水平擴充套件 和負載均衡Docker套件負載
- NGINX 負載均衡Nginx負載
- WebSocket負載均衡Web負載
- IP負載均衡負載
- nginx負載均衡Nginx負載
- 【Nginx】負載均衡Nginx負載
- 負載均衡技術(一)———負載均衡技術介紹負載
- 解密負載均衡技術和負載均衡演算法解密負載演算法
- 負載均衡技術(二)———常用負載均衡服務介紹負載
- 【知識分享】四層負載均衡和七層負載均衡負載
- 淺談負載均衡負載
- 漫談負載均衡負載
- Nginx負載均衡模式Nginx負載模式
- 面試之負載均衡面試負載
- 負載均衡知多少?負載
- 負載均衡簡介負載
- 負載均衡詳解負載
- LoadBalancer負載均衡負載
- 負載均衡叢集負載
- 負載均衡---ribbon負載
- Nginx--負載均衡Nginx負載
- Flume負載均衡配置負載
- apache 負載均衡配置Apache負載