nginx配置负载均衡在upstream server中进行配置:
updtream backend {
hash $uri;
server 192.168.1.1:8080 weight=1 max_fails=2 fail_timeout=10s;
server 192.168.1.2:8080 weight=2 max_fails=2 fail_timeout=10s;
check interval=3000 rise=1 fail=3 timeout=2000 type=http;
check_http_send "HEAD /status HTTP/1.0\r\n\r\n";
check_http_expect_alive http_2xx http_3xx;
}
但是每次upstream有变更时,都需要到服务器进行修改。因为,需要一种服务注册,可以将upstream动态注册到nginx上,实现upstream服务的自动发现。
分布式服务发现与注册系统,需要具备以下特性:
- 服务注册:服务实现者可以通过HTTP API 或者DNS方式,将服务注册到系统
- 服务发现:服务消费者可以通过HTTP API 或者DNS方式,从系统获取最新的服务IP 和 PORT
- 故障检测:支持TCP、HTTP等方式的健康检查机制,从而当服务有故障时,自动摘除
- K/V存储:使用K/V存储实现动态配置中心,
- 数据一致性:实现集群数据一致性