1 自带的负载均衡- Native Connection Load Balancing
自带的负载均衡是通过 vertica服务器端和客户端的库文件实现的应用层负载均衡, 相比 IPVS自带的负载均衡有以下优势:
- 容易设置,自带负载均衡只需要设置参数和启用负载均衡即可, IPVS 则需要安装额外的软件和进行一些网络的配置。
- 必要时容易覆盖,比如使用 copy 加载数据时指定 host。
- 自带的负载均衡单点故障风险较低, IPVS 则依赖网关节点及其备份,容易出现单点故障。
- CPU 和内存消耗更低
- IPVS 由于所有连接都需要经过集群的网关才能跳转到连接实例,所以增加了网络的延迟。
- HP 对自带的负载均衡提供厂商支持, IPVS 则没有支持
- 自带负载均衡在所有操作系统平台都支持, HP 只认准了 redhat 平台 IPVS。
1.1 启用了自带负载均衡之后的连接过程
- 客户端通过带负载均衡参数的连接到集群的某一个节点,请求一个负载均衡的连接。
- 该节点负责根据指定的负载均衡策略选择一个当前存活的节点。
- 该节点告诉客户端哪个节点并选择了处理连接请求。
- 如果该节点选择了其它的节点来处理连接请求,那么客户端要端口同该节点的连接,否则跳转到步骤 6。
- 客户端建立同选定节点的连接,同时客户端设置该连接为第二次连接以避免选择节点认为该连接为需要处理的负载均衡连接。
- 客户端继续进行后续处理, 如权限认证等过程。
1.2 负载均衡策略和实现
通过**SET_LOAD_BALANCE_POLICY('policy')**可以设置负载均衡的连接策略,有以下策略可选:
- 1.NONE,不使用自带负载均衡,这是默认的策略。
- 2.ROUNDROBIN,从当前存活的节点列表中选择下一个连接的节点,每个节点负责维护自己的连接编号。
- RANDOM,随机的从当前存活节点列表选择一个节点。
为了现实负载均衡,除了服务器端设置相应的策略外,客户端还需要指定ConnectionLoadBalance=true
jdbc:vertica://127.0.0.1:5433/vetc?ConnectionLoadBalance=true