Nginx+Consul+upsync 實現動態負載均衡

Nginx+Consul+upsync 實現動態負載均衡

1.原理圖

在這裏插入圖片描述

2.原理

2.1 consulServer專門存放負載均衡註冊配置信息。
2.2 Ngninx間隔讀取ConsulServer的配置信息,獲取最新配置。(通過upsync)

3. 步驟

3.1 搭建Consul

    (1)下載
wget https://releases.hashicorp.com/consul/0.7.1/consul_0.7.1_linux_amd64.zip
(2)解壓
 unzip consul_0.7.1_linux_amd64.zip 

在這裏插入圖片描述
(3) 安裝

./consul

在這裏插入圖片描述
(4) 啓動

 ./consul agent -dev -ui -node=consul-dev -client=192.168.50.128
注:192.168.50.128 虛擬機IP

在這裏插入圖片描述
(5) 點擊查看是否正常啓動

  http://192.168.50.128:8500

在這裏插入圖片描述
(6)使用postman註冊http服務

 http://192.168.50.128:8500/v1/catalog/register

注:10.2.100.23 運行服務的IP(本機windowsIP)

{
	 "Datacenter": "dc1",
     "Node":"tomcat",
     "Address":"10.2.100.23",
     "Service":
        {
           "Id" :"10.2.100.23:8081",
           "Service": "itmayiedu",
           "tags": ["dev"],
           "Port": 8081
          }  
	
}
Datacenter指定數據中心,
Address指定服務IP,
Service.Id指定服務唯一標識,
Service.Service指定服務分組,
Service.tags指定服務標籤(如測試環境、預發環境等),
Service.Port指定服務端口。

返回true,就是成功。

(7) 驗證添加結果

在這裏插入圖片描述

3.2 安裝Nginx

注意:Nginx版本必須1.9以上

3.2.1 下載Nginx

wget http://nginx.org/download/nginx-1.9.10.tar.gz

3.2.2 解壓

 tar -zxvf  nginx-1.9.10.tar.gz

3.2.3 預先創建目錄

groupadd nginx
useradd -g nginx -s /sbin/nologin nginx
mkdir -p /var/tmp/nginx/client/
mkdir -p /usr/local/nginx
mkdir -p /usr/local/nginx

3.2.4 編譯

 #cd nginx-1.9.0
 
# ./configure   --prefix=/usr/local/nginx   --user=nginx   --group=nginx   --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

報錯:
在這裏插入圖片描述
解決:
yum -y install openssl openssl-devel

3.3 Upstream 動態配置

    upstream backServer{
    server 127.0.0.1:11111;
    upsync 192.168.50.128:8500/v1/kv/upstreams/itmayiedu 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://backServer;
        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服務器出問題了,本地還有一個備份。

注意:替換 consul 註冊中心地址

3.3 整合Nginx與consul

*(1) 創建upsync_dump_path
mkdir /usr/local/nginx/conf/servers/
upsync_dump_path指定從consul拉取的上游服務器後持久化到的位置,
這樣即使consul服務器出問題了,本地還有一個備份。

(2)啓動Nginx

      /usr/local/nginx/sbin/nginx 

(3) 啓動consul

  ./consul agent -dev -ui -node=consul-dev -client=192.168.50.128

(4) 添加Nginx upstream服務

使用postman方式發送put請求

http://192.168.50.128:8500/v1/kv/upstreams/itmayiedu/10.2.100.23:8082
http://192.168.50.128:8500/v1/kv/upstreams/itmayiedu/10.2.100.23:8081 
http://192.168.50.128:8500/v1/kv/upstreams/itmayiedu/10.2.100.23:8080

負載均衡信息參數

  {"weight":1, "max_fails":2, "fail_timeout":10, "down":0}

在這裏插入圖片描述

在Consulweb上展示頁面
在這裏插入圖片描述

Nginx讀取key value 值 ,實例化本地

在這裏插入圖片描述

Nginx讀取key value 值 ,實例化本地文件, 就是通過這個key-value值去映射的service服務,(實際上是一個服務對應一個key-value)

效果:
在這裏插入圖片描述
**加粗樣式**

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章