摘要:實現無需動態負載均衡實現無需動態負載均衡環境搭建出現下面提示說明成功啟動是新浪微博開源的基于實現動態配置的三方模塊。配置動態負載均衡創建指定從拉取的上游服務器后持久化到的位置,這樣即使服務器出問題了,本地還有一個備份。
方案
傳統的負載均衡,如果Upstream參數發生變化,每次都需要重新加載nginx.conf文件,因此擴展性不是很高,所以我們可以采用動態負載均衡,實現Upstream可配置化、動態化,無需人工重新加載nginx.conf,類似分布式的配置中心
Consul+Consul-template 每次發現配置更改需要raload nginx,重啟Nginx。
Consul+OpenResty 實現無需raload動態負載均衡
Consul+upsync+Nginx 實現無需raload動態負載均衡
Consul+upsync+Nginx Consul環境搭建https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip
yum -y install unzip
unzip consul_0.7.5_linux_amd64.zip
./consul 出現下面提示說明成功
[root@localhost local]# ./consul usage: consul [--version] [--help][ ] Available commands are: agent Runs a Consul agent configtest Validate config file event Fire a new event exec Executes a command on Consul nodes force-leave Forces a member of the cluster to enter the "left" state info Provides debugging information for operators join Tell Consul agent to join cluster keygen Generates a new encryption key keyring Manages gossip layer encryption keys kv Interact with the key-value store leave Gracefully leaves the Consul cluster and shuts down lock Execute a command holding a lock maint Controls node or service maintenance mode members Lists the members of a Consul cluster monitor Stream logs from a Consul agent operator Provides cluster-level tools for Consul operators reload Triggers the agent to reload configuration files rtt Estimates network round trip time between nodes snapshot Saves, restores and inspects snapshots of Consul server state version Prints the Consul version watch Watch for changes in Consul
5.啟動consul
./consul agent -dev -ui -node=consul-dev -client=192.168.102.129
Upsync是新浪微博開源的基于Nginx實現動態配置的三方模塊。Nginx-Upsync-Module的功能是拉取Consul的后端server的列表,并動態更新Nginx的路由信息。此模塊不依賴于任何第三方模塊。Consul作為Nginx的DB,利用Consul的KV服務,每個Nginx Work進程獨立的去拉取各個upstream的配置,并更新各自的路由。
nginx-upsync-module:
cd /usr/local
wget https://github.com/weibocom/nginx-upsync-module/archive/master.zip
unzip master.zip
unzip consul_0.7.1_linux_amd64.zip
配置Nginxtar -zxvf nginx-1.9.9.tar.gz
groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
mkdir -p /var/tmp/nginx/client/
mkdir -p /usr/local/nginx
cd nginx-1.9.9/
./configure --prefix=/usr/local/nginx --user=nginx --group=root --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --with-http_realip_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre --add-module=../nginx-upsync-module-master
make && make install
動態負載均衡創建upsync_dump_pathmkdir /usr/local/nginx/conf/servers/
upsync_dump_path指定從consul拉取的上游服務器后持久化到的位置,這樣即使consul服務器出問題了,本地還有一個備份。
添加nginx Upstream服務
使用linux命令方式發送put請求
curl -X PUT http://192.168.102.129:8500/v1/kv/upstreams/tmp/192.168.102.128:8081
curl -X PUT http://192.168.102.129:8500/v1/kv/upstreams/tmp/192.168.102.128:8081
使用postmen 發送put請求
http://192.168.102.129:8500/v1/kv/upstreams/tmp/192.168.102.128:8081
http://192.168.102.129:8500/v1/kv/upstreams/tmp/192.168.102.128:8081
負載均衡信息參數
{"weight":1, "max_fails":2, "fail_timeout":10, "down":0}
Upstream 動態配置
##動態去consul 獲取注冊的真實反向代理地址
upstream tmpup{
server 127.0.0.1:11111; upsync 192.168.212.134:8500/v1/kv/upstreams/tmp upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off; upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf; } server { listen 80; server_name localhost; location / { proxy_pass http://tmpup; index index.html index.htm; } }
upsync指令指定從consul哪個路徑拉取上游服務器配置;upsync_timeout配置從consul拉取上游服務器配置的超時時間;upsync_interval配置從consul拉取上游服務器配置的間隔時間;upsync_type指定使用consul配置服務器;strong_dependency配置nginx在啟動時是否強制依賴配置服務器,如果配置為on,則拉取配置失敗時nginx啟動同樣失敗。upsync_dump_path指定從consul拉取的上游服務器后持久化到的位置,這樣即使consul服務器出問題了,本地還有一個備份。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40482.html
摘要:接入層作用一的聚合。接入層作用二服務發現與動態負載均衡既然統一的入口變為了接入層,則接入層就有責任自動的發現后端拆分,聚合,擴容,縮容的服務集群,當后端服務有所變化的時候,能夠實現健康檢查和動態的負載均衡。 此文已由作者劉超授權網易云社區發布。 歡迎訪問網易云社區,了解更多網易技術產品運營經驗。 這個系列是微服務高并發設計,所以我們先從最外層的接入層入手,看都有什么樣的策略保證高并發。...
上篇文章和大家聊了 Spring Session 實現 Session 共享的問題,有的小伙伴看了后表示對 Nginx 還是很懵,因此有了這篇文章,算是一個 Nginx 掃盲入門吧! 基本介紹 Nginx 是一個高性能的 HTTP 和反向代理 web 服務器,同時也提供了 IMAP/POP3/SMTP 服務。 Nginx 是由伊戈爾·賽索耶夫為俄羅斯訪問量第二的 Rambler.ru 站點開發...
摘要:反向代理要說反向代理,我們就先要理解正向代理下面我們就談談正向代理和反向代理吧。客戶端才能使用正向代理。反向代理總結就一句話代理端代理的是服務端。因此,動態資源轉發到服務器我們就使用到了前面講到的反向代理了。 反向代理 要說反向代理,我們就先要理解正向代理 ,下面我們就談談正向代理和反向代理吧。 正向代理 一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始...
閱讀 3345·2021-11-25 09:43
閱讀 3133·2021-10-11 10:58
閱讀 2734·2021-09-27 13:59
閱讀 3073·2021-09-24 09:55
閱讀 2165·2019-08-30 15:52
閱讀 1826·2019-08-30 14:03
閱讀 2256·2019-08-30 11:11
閱讀 2020·2019-08-28 18:12