每天早上七点三十,准时推送干货
Hello 大家好,我是阿粉,今天给大家分享一个采用 Consul 实现的负载均衡的方案,很多小伙伴都知道 Nginx 可以实现负载均衡,但是可能没实现过结合 Consul,今天就给大家分享一下。
整体架构
我们先看下整个框架的架构是什么样子的,这里我们有三个服务提供者和三个服务调用者,它们通过 Consul 和 Nginx,以及 Consul-template 来实现负载均衡。
说明 本例子是进行 RPC 的负载均衡,RPC 是 tcp协议,所以 Nginx 要配置 tcp 模块,支持 tcp 负载均衡。
Consul 集群 用于服务注册,注册多个服务实例,对外提供 RPC 服务。
Consul-template 用于实时监测 Consul 中服务的状态,配合自身一个模板文件,生成 Nginx 的配置文件。
Nginx 使用自身的配置文件和第二步生成的配置文件,进行负载均衡。
Nginx安装
安装最新版 Nginx,保证 Nginx 版本在1.9.0以上
1.9.0 版本以上才支持 TCP 转发,据说不是默认安装了该模块,安装完成可以查询一下,如果有
--with-stream
参数,表示已经支持TCP。如果没有就重新编译增加参数安装。我的 Nginx 安装在
/etc/nginx
目录下安装完成使用
nginx -t
监测一下是否成功。
Consul-template
本文旨在负载均衡,Consul 集群搭建不作介绍。
下载对应系统版本文件 https://releases.hashicorp.com/consul-templa