这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
经典连接负载均衡
经典连接负载均衡功能为与数据库的所有客户端连接应用单个策略。数据库和客户端都必须启用负载均衡选项才能对连接进行负载均衡。如果客户端和服务器都启用负载均衡,则在客户端尝试与 Vertica 建立连接时,会发生以下过程:
-
客户端连接数据库群集中的主机时,连接参数指示它正在请求负载均衡连接。
-
主机根据当前负载均衡方案,从群集中当前正在运行的主机列表中选择一个主机。在所有方案下,主机都可以选择自身。
-
主机告诉客户端它选择了哪个主机来处理客户端连接。
-
如果主机选择数据库中其他主机来处理客户端连接,客户端将断开与初始主机的连接。否则,客户端将跳到步骤 6。
-
客户端与将负责处理其连接的主机建立连接。客户端设置第二个连接请求,使第二个主机不会将连接解释为负载均衡请求。
-
客户端连接继续正常运行(如果连接已启用 SSL,则协商加密,并继续对用户进行身份验证)。
此过程对客户端应用程序是透明的。客户端驱动程序会自动断开与初始主机的连接,然后重新连接到为负载均衡选择的主机。
要求
负载均衡方案
负载均衡方案控制主机如何选择哪个主机来处理客户端连接。以下是三种可用方案:
您可以使用 SET_LOAD_BALANCE_POLICY 函数设置本机连接负载均衡方案。有关说明,请参阅启用和禁用本机连接负载均衡。
驱动程序注意事项
连接故障转移
客户端库包含故障转移功能,如果连接属性中指定的主机无法到达,则通过此功能,可以连接备份主机。使用本机连接负载均衡时,故障转移功能只能用于数据库的初始连接。如果客户端重定向到的主机没有对客户端的连接请求进行响应,客户端不会尝试连接备份主机,而是向用户返回连接错误。
客户端仅重定向到已知正常运行的主机。因此,只有当目标主机在客户端被重定向到它的那一刻发生故障时,才会发生这种连接失败。有关详细信息,请参阅 ADO.NET 连接故障转移、JDBC 连接故障转移和连接故障转移。
1 - 启用和禁用经典连接负载均衡
只有数据库
超级用户才能启用或禁用群集范围的经典连接负载均衡。要启用或禁用负载均衡,请使用 SET_LOAD_BALANCE_POLICY 函数设置负载均衡策略。将负载均衡策略设置为“NONE”以外的任何其他值可在服务器中启用负载均衡。以下示例通过将负载均衡策略设置为 ROUNDROBIN 来启用本机连接负载均衡。
=> SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');
SET_LOAD_BALANCE_POLICY
--------------------------------------------------------------------------------
Successfully changed the client initiator load balancing policy to: roundrobin
(1 row)
要禁用本机连接负载均衡,请使用 SET_LOAD_BALANCE_POLICY 将此策略设置为“NONE”:
=> SELECT SET_LOAD_BALANCE_POLICY('NONE');
SET_LOAD_BALANCE_POLICY
--------------------------------------------------------------------------
Successfully changed the client initiator load balancing policy to: none
(1 row)
注意
客户端连接时,本机负载均衡器会选择一个节点并返回
NODES 表中
export_address 列的值。之后,客户端使用
export_address 进行连接。
node_address 指定要用于在节点间分配通信的地址。安装数据库时,
export_address 和
node_address 被设置为相同的值。如果将 Vertica 安装到了专用地址上,必须将每个节点的 export_address 设置为
公共地址。
默认情况下,客户端连接不会进行负载均衡,即使服务器启用了连接负载均衡也是如此。客户端必须通过设置连接参数来指明其愿意对自己的连接请求进行负载均衡。 有关在客户端启用负载均衡的信息,请参阅 ADO.NET 中的负载均衡、JDBC 中的负载均衡和负载均衡。对于 vsql,使用 -C 命令行选项来启用负载均衡。
重要
在混合使用 IPv4 和 IPv6 的环境中,平衡仅适用于已配置了负载均衡的地址系列。例如,如果您使用 IPv4 地址配置了负载均衡,则 IPv6 客户端无法使用负载均衡,不过 IPv6 客户端仍然可以连接,只是不进行负载均衡而已。
重置负载均衡状态
当负载均衡策略为 ROUNDROBIN 时,Vertica 群集中的每个主机都保持其自己的状态,即它选择哪个主机来处理下一个客户端连接。可使用 RESET_LOAD_BALANCE_POLICY 函数将此状态重置为其初始值(通常为具有最低节点 ID 的主机):
=> SELECT RESET_LOAD_BALANCE_POLICY();
RESET_LOAD_BALANCE_POLICY
-------------------------------------------------------------------------
Successfully reset stateful client load balance policies: "roundrobin".
(1 row)
另请参阅
2 - 监控传统连接负载均衡
查询 V_CATALOG.DATABASES 的 LOAD_BALANCE_POLICY 列可确定服务器上本机连接负载均衡的状态:
=> SELECT LOAD_BALANCE_POLICY FROM V_CATALOG.DATABASES;
LOAD_BALANCE_POLICY
---------------------
roundrobin
(1 row)
确定客户端已连接到哪个节点
客户端可以通过查询 V_MONITOR.CURRENT_SESSION 表的 NODE_NAME 列来确定它已连接到哪个节点:
=> SELECT NODE_NAME FROM V_MONITOR.CURRENT_SESSION;
NODE_NAME
------------------
v_vmart_node0002
(1 row)