动态负载均衡(Nginx+Consul+UpSync)
Http动态负载均衡
什么是动态负载均衡
传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,
因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。
这类似分布式的配置中心
动态负载均衡实现方案
- Consul+Consul-template 每次发现配置更改需要raload nginx,重启Nginx。
- Consul+OpenResty 实现无需raload动态负载均衡 (lua语言,配置文件放字典里面,每隔时间读取)
- Consul+upsync+Nginx 实现无需raload动态负载均衡 (原理同上)
常用服务器注册与发现框架
常见服务发现框架 Consul、Eureka、 ZooKeeper以及Etcd ZooKeeper是这种类型的项目中历史最悠久的之一,它起源于Hadoop。它非常成熟、可靠,被许多大公司(YouTube、eBay、雅虎等)使用。
etcd是一个采用HTTP协议的健/值对存储系统,它是一个分布式和功能层次配置系统,可用于构建服务发现系统。其很容易部署、安装和使用,提供了可靠的数据持久化特性。它是安全的并且文档也十分齐全。
修改Nginx配置文件,需要重启。(静态的)
IP区分主机 port区别进程 服务
注册中心 存放IP地址和端口号
服务注册于发现应用场景: 服务RPC远程调用
注册中心 存放IP地址和端口
RPC http协议如何调用: HttpClient
动态负载均衡(Nginx+Consul+UpSync)原理
1、搭建ConsulServer专门存放负载均衡注册配置信息
2、nginx间隔时间动态获取最新的ConsulServer配置信息