聚合支付中轻量级微服务网关的实现

本项目中对于网关的要求:

1.流量控制

2.灰度发布

3.负载均衡

4.服务上线、下线不停服务,不影响正常业务的运行

网关架构图如下:


网关架构

采用nginx+nginx-upsync-module+consul实现

nginx版本:1.9.2

consul版本:1.2.0

1.安装consul

将下载的consul_1.2.0_linux_amd64.zip解压后放到/usr/local/consul/目录下

2.启动consul:

./consul agent -server -bootstrap-expect=1 -data-dir=/data/consul_data -node=192.168.10.112 -bind=192.168.10.112 -config-dir=/etc/consul.d -client 0.0.0.0 -ui

agent:运行一个consul代理。

-server :切换代理到服务器模式。

-bootstrap :将服务器设置为引导模式。

-ui:启用内置的静态web UI服务器。

-data-dir:路径到数据目录存储代理状态。

-bind:设置集群通信的绑定地址。

-client:设置用于绑定客户端访问的地址。这包括RPC、DNS、HTTP和HTTPS(如果配置)。

-node:此节点的名称。 在集群中必须是唯一的,如果你运行第2台consul,可以写trade_server02、trade_server03等。

3.访问consul:

http://192.168.10.112:8500/ui


4.配置服务:

key/Value中增加两个服务列表,路径upstreams/itms/


服务列表


upstream值

6.nginx安装

nginx安装需要编译nginx-upsync-module:服务发现模块

7.nginx&upstream配置

 nginx从consul的数据中心抓取。新的upstream配置如下:

upstream itms {

  # fake server otherwise ngx_http_upstream will report error when startup

  # 后端使用consul存储

  upsync 192.168.10.112:8500/v1/kv/upstreams/itms upsync_timeout=6m upsync_interval=500ms upsync_type=consul strong_dependency=off;

  upsync_dump_path /usr/local/nginx/conf/servers/servers_test.conf;

  include /usr/local/nginx/conf/servers/servers_test.conf;

}

服务转发:

location /trade {

    proxy_pass http://itms;

}

查询服务列表:

location = /upstream_show {

    upstream_show;

  }


8.测试

配置consul服务下的值测试

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

1.down为 1表示单前的server暂时不参与负载,0表示参与

2.weight 默认为1.weight越大,负载的权重就越大。

3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

4.fail_timeout:max_fails次失败后,暂停的时间。

你可能感兴趣的:(聚合支付中轻量级微服务网关的实现)