9.1 负载均衡的原理
kong 为后端服务器节点提供了2种负载均衡策略,一种是直接基于dns的策略,另外一种是动态的环形均衡器策略,其中后者无需dns服务器
即可进行服务的注册与发现。
9.1.1 基于 DNS 的负载均衡
当服务中的host属性不能被解析为上游名称或此host属性的名称并不在本地的 DNS host 文件中,且服务中的host属性是名称而不是ip地址时,
kong会自动选择基于dns的负载均衡策略。
当使用基于dns的负载均衡策略时,后端服务的注册是在kong外部完成的,此时kong仅查询来自dns服务器的更新。在dns记录中,ttl决定了信息的
刷新频率。当将它设置为0时,表示每一次请求都会对dns服务器发起查询操作,这显然会有性能问题。
dns 主要有A记录和SRV记录两种解析方式,分别对应简单的负载均衡策略和加权轮询策略:
1.A记录
包含一个或者多个ip地址。因此,当域名解析为A记录时,每个后端服务必须具有自己独立的ip地址。又因为A记录没有附加权重信息,所以
所有的ip地址均按同等权重对待,我们称为简单常规的负载均衡策略。
2.SRV记录
包含ip地址的权重和端口信息。我们可以通过ip地址和端口的组合的方式来唯一标识一个后端服务,单个ip地址可以在不同的端口上托管同一
服务的多个实例。这不同于A记录,SRV记录有内置权重属性,所以每个ip地址和端口的组合都可以设置不同的权重值,称为加权轮询策略。
需要注意的是,任何本地指定的端口信息都将被dns服务器中的端口信息所覆盖。假设我们的服务的属性配置为 host=wwww.aa.com和port=123,但将
www.aa.com 域名进行 DNS解析的SRV记录为 127.0.0.1:456,此时如果采用SRV记录,则该请求将会被代理到 http
|