动态负载均衡概念
传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新重启nginx。这类似分布式的配置中心。
Consul介绍
Consul是一款开源的分布式服务注册与服务发现系统,通过HTTP API可以使得服务注册、服务发现实现起来非常简单。
服务注册:服务实现者可以通过HTTP API或自带的DNS方式,将服务注册到Consul。
服务发现:服务消费者可以通过HTTP API或自带的DNS方式,从Consul获取服务的IP和Port。
故障检测:支持如TCP、HTTP等方式的健康检查机制,从而当服务有故障时自动摘除。
K/V存储:使用K/V存储实现动态配置中心。
多数据中心:使用多数据中心集群,可以避免单数据中心的单点故障。
Upsync介绍
Upsync是新浪微博开源的基于Nginx实现动态配置的三方模块。Nginx-Upsync-Module的功能是拉取Consul的后端server的列表,并动态更新Nginx的配置信息。Consul作为Nginx的DB,利用Consul的KV服务,Nginx Work进程独立的去拉取各个upstream的配置,并更新。