背景

谈到负载均衡, 对于数据库集群需要区分几个概念:

  1. 运算的负载均衡, Vertica 本身是 MPP 数据库, SQL 操作自动会利用多台机器来加快处理速度.
  2. 数据库连接的负载均衡, Vertica 和 Teradata 一样都是无主节点的架构, 这种架构允许客户端连接任意一个节点, 连接后将由这个节点负责和客户端交互.
  3. 数据库连接的 Fail over, 这个概念不同于会话 node 的负载均衡. 对于多数数据库, 数据库连接字符串(比如 JDBC)只能设定一个 IP 地址, 如果这个 IP 的节点宕机, 客户端就无法连接. Vertica 允许指定多个 IP 地址, 如果第一个 IP 的节点无法连接, Vertica JDBC driver 会使用其他 IP 尝试连接.

上面这几个特性 Vertica 都支持. 另外 Vertica 是一个纯列式数据库, 没有数据倾斜问题. 因为这些特性, 使用上稍加注意, Vertica 就不太容易出现某个节点成为性能瓶颈.

下面重点讲解如何开启数据库连接的 Load balance 和 Fail over.

Server 端的配置

通过 SET_LOAD_BALANCE_POLICY() 函数设置负载均衡策略, 共有三种, 分别是 NONE/ROUNDROBIN/RANDOM , 这三个设置的含意是很显然的, NONE 是禁用负载均衡, ROUNDROBIN 是轮询, RANDOM 是随机, 推荐使用 ROUNDROBIN 策略. 具体设置代码为:

--设置节点load balance的方法, 有NONE/ROUNDROBIN/RANDOM三种
SELECT SET_LOAD_BALANCE_POLICY('ROUNDROBIN');--查询服务器端的 Load balance 策略
SELECT GET_LOAD_BALANCE_POLICY();

Java代码客户端的配置

下面是一个 JDBC 示例代码, 开启了 Load balance 和 Fail over.


Properties myProp = new Properties();
myProp.put("user", "dbadmin");
myProp.put("password", "vertica");# 开启 connection failover
myProp.put("BackupServerNode", "VerticaHost02,VerticaHost03");# JDBC客户端开启Load balance
myProp.put("ConnectionLoadBalance", 1);
conn = DriverManager.getConnection(
"jdbc:vertica://BadVerticaHost:5433/vmart", myProp);

客户端多连接几次, 并执行下面SQL, 观察 node_name 节点是否不同, 就可以验证负载均衡是否工作,

SELECT node_name,client_version FROM CURRENT_SESSION;

DbVisualizer 工具开启负载平衡

Vertica 查询工具并不多, DbVisualizer 工具是最好的一个, 具体配置:

升级 JDBC driver

DbVisualizer 工具自带的 Vertica jdbc driver 版本太低, 要支持负载均衡, JDBC driver 至少是7.0以上, 推荐使用和服务器版本一致的jdbc, 这里使用的是 vertica-jdbc-8.1.1-0.jar .

在 DbVisualizer 工具菜单 Tool/Driver manager界面中, 选择 Vertica 数据库类型, 删除原有的自带老版本的jdbc driver, 增加新版的driver.

修改已有的 Vertica connection

新建或修改一个Vertica connection, 选择 connection 的 Properties - Driver Properties快捷菜单, 找到 connectionloadbalance, 将它的值设置为 true, 点击 Apply 应用.

验证

客户端多连接几次, 并执行下面SQL, 观察 node_name 节点是否不同.

SELECT node_name,client_version FROM CURRENT_SESSION;

转载于:https://www.cnblogs.com/harrychinese/p/vertica_load_balance.html

Vertica系列: Vertica DB连接负载均衡相关推荐

  1. Spring Cloud 系列之 Netflix Ribbon 负载均衡

    什么是 Ribbon Ribbon 是一个基于 HTTP 和 TCP 的 客服端负载均衡工具,它是基于 Netflix Ribbon 实现的. 它不像 Spring Cloud 服务注册中心.配置中心 ...

  2. 解决k8s中的长连接负载均衡问题

    目录 长连接与短连接: 简介 使用步骤 适用场景 当k8s遇上长连接: 问题描述 解决方案 长连接与短连接: 简介 长连接是指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数 ...

  3. Exchange 2013部署系列之(五)NLB负载均衡

    Exchange 2013部署系列之NLB负载均衡(五) 前面第四篇章介绍了Exchange 2013的数据库的DAG搭建方法,下面我们将对前端CAS服务器进行NLB负载均衡的组建.在Exchange ...

  4. 面试必会系列 - 5.3 LVS负载均衡

    本文已收录至 Github(MD-Notes),若博客中图片模糊或打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵 ...

  5. socket 获取回传信息_基于netty框架的socket长连接负载均衡解决方案 oswl

    前言 物联网如今是一个大的趋势,但是概念还比较新颖.大家对这一块的技术积累也比较匮乏,借此前段时间摩拜单车出现了大规模瘫痪的现象.我们今天来讨论一下物联网项目的开发方式. 关于tcp/ip 相关的知识 ...

  6. SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册 ...

  7. 基于netty框架的socket长连接负载均衡解决方案

    socket通讯的单机瓶颈 物联网的项目socket使用方式有两种: 短连接的socket请求 维持socket长连接的请求 对于socket短链接来说就好比是http请求,请求服务器,服务器返回数据 ...

  8. Nginx教程系列五:实现负载均衡配置

    文章目录 1. 案例 1.1 环境准备 1.2 实现效果 1.3 修改Nginx配置文件 1.4 测试 2. 负载均衡策略对比 2.1 轮询 2.2 权重 2.3 iphash 2.4 fair 1. ...

  9. linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接

    一.简介 1.1. lvs的持久连接简介 先说说lvs的持久连接能干什么:无论你选择lvs的何种转发策略,如果你想确定来自某一个客户端的所有连接均返回到同一台Real Server,就需要LVS的持久 ...

最新文章

  1. GARFIELD@07-12-2005 DILBERT
  2. ubuntu 16.04 更换国内源(下载源)(阿里源)(换源)
  3. Android组件之BroadCast简单实践
  4. from 下拉框多个值提交_Git commit 多行信息提交
  5. 美团点评Kubernetes集群管理实践
  6. php web 目录遍历,php的目录遍历操作
  7. SteamVR导致场景相机不正常
  8. cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第1天
  9. 喀什师范学计算机学院学位论文开题报告,喀什师范学院本科生毕业论文开题报告.doc...
  10. 股票交易费的计算---沪A版
  11. 实用计算机技术光盘,《计算机网络技术学习宝典》教学光盘使用说明.doc
  12. 无线路由当交换机的设置方法
  13. lightGBM使用
  14. C51实现时钟12MHz,使用定时器T1的方式1定时20mS ,做一个时分秒的电子钟。
  15. STM32SPI通信原理
  16. CSR8670项目实战:BlueHeart心率监测耳机
  17. 程序是怎样跑起来的-读书文摘
  18. 彗星mysql_为什么彗星被认为是一个“脏雪球”?
  19. 基于AI+RT-THREAD的人检测入侵检测摄像头(一 AI模型的导入及处理)
  20. SIR SIRE 传染病预测模型与代码应用之概念篇

热门文章

  1. Ubuntu 发布迁移手册,拉拢 Windows 7 用户
  2. linux下oracle10g安装配置说明,Linux下oracle10g安装配置说明(ZT)
  3. python minimize_【趣味案例】用Python来做一个屏幕录制工具
  4. druid连接池以及数据源了解
  5. python qt5 数据改变 触发信号_pyqt5 使用 QTimer, QThread, pyqtSignal 实现自动执行,多线程,自定义信号触发。...
  6. vue3 element-ui el-date-picker选择日期后,悬停至日期icon时切换为清空icon
  7. arch linux系统安装教程,Arch Linux系统的安装(BIOS)教程,archlinux
  8. c语言剪枝函数,[求助]关于剪枝算法
  9. dlibdotnet 人脸相似度源代码_使用dlib中的深度残差网络(ResNet)实现实时人脸识别 - supersayajin - 博客园...
  10. python django开发工具_Python和Django web开发工具pycharm介绍