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)

效果:
在这里插入图片描述
**加粗样式**

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