GBase 8a MPP Cluster 高可用连接配置说明
1.背景说明
高可用是一种面向风险设计,使系统具备控制风险,提供更高的可用性的能力。连接高可用是尽量保证客户端数据库连接可靠性的方案。仅通过修改配置,无需修改应用代码,即可实现:当一个集群节点不能正常连接时,驱动自动使用另外的集群节点进行连接,从而消除数据库系统服务不可用的时间。这种“自动使用”的机制客户端是无感知的。
目前 GBase 8a MPP Cluster 数据库对 JDBC、ODBC、ADO.NET、Python 驱动都支持连接高可用。
具体和其他接口配置信息,请查阅 GBASE 官网以下在线手册
https://www.gbase.cn/docs/gbase-8a/%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8C/doc-introduction
假设部署一个 3 个管理节点的 GBase 8a MPP Cluster 集群,IP 节点如下:
192.168.195.10 192.168.195.20 192.168.195.30
本文仅对 GBase 8a 支持的组件、驱动提供“高可用”配置指导,其他参数请查阅各组件和驱动的手册文档。
2.JDBC 连接高可用
在通过 GBase JDBC 访问 GBase 8a MPP Cluster 集群时,如果集群当前节点不可用,希望直接连接到集群中一个可用的节点上时,可以使用 GBase JDBC 集群高可用性功能(该功能需要 GBase JDBC 8.3.81.53 及以上版本)。
GBase JDBC 高可用是接口针对 GBase 8a 集群所做的在接口层面的连接高可用处理(IP 自动路由),在创建 JDBC 连接时,如果当前 IP 的集群节点不可用,接口会根据相关参数信息把连接数据库请求自动路由到集群其他可用的节点,消除数据库系统服务不可用的时间。
连接高可用功能是按照 hostList 参数配置的 IP 顺序获取节点,尝试连接,如果某个 IP 连接成功,则直接返回这个节点的连接,如果所有节点都不能连接,则抛出异常。连接高可用功能,只保证获取可用连接,并不能保证连接的均匀分布。
高可用负载均衡是 GBaseJDBC 针对集群开发的接口层面的客户端负载均衡功能,把数据库连接请求平均分布到各个节点,以分散节点数据库连接压力,增加数据库的吞吐量。高可用负载均衡功能是将 url 中的 IP 和 hostList 中的 IP 放入一个列表中,当应用获取连接的时候,JDBC 会从列表中顺序获取 IP 创建连接,每个 IP 获取一个连接,从而实现连接的负载均衡,同时,当列表中的 IP 不可连接时,JDBC 会顺序获取列表中的下一个 IP,获取连接,如果无可用连接时,将抛出异常。也就是说高可用负载均衡功能既实现了连接负载均衡功能,也实现了高可用功能。
假设创建 9 个数据库连接,三个节点都是可用状态,执行结果是每个节点分配到三个连接;如果其中一个节点不可用状态,GBase JDBC 驱动会把 9 个数据库连接请求分配到另外两个节点上。
示例如下:
String dbUrl = "jdbc:gbase://192.168.195.10:5258/testDB?user=root&password=root&failoverEnable=true&hostList=192.168.195.20,192.168.195.30&gclusterId=gcl1&connectTimeout=3000&socketTimeout=3000";
failoverEnable:是否开启高可用。
hostList:IP 列表,以逗号分隔;
hostList 中不需要包含 url 中的主 IP( 192.168.195.10 )。
gclusterId:不同的 gclusterId 会创建不同的列表,用于区分连接的集群,要求必须以字母开头的可以包含字母和数字最大长度为 20 的字符串
3.ADO.NET 连接高可用
GBase ADO.NET 高可用特性是针对 GBase 8a MPP Cluster 数据库集群提供客户端高可用及负载均衡相关功能。
在通过 GBase ADO.NET 访问 GBase 8a MPP Cluster 集群时,如果集群当前节点不可用,希望直接连接到集群中一个可用的节点上时,可以使用 GBase ADO.NET 集群高可用性功能(该功能需要 GBase ADO.NET 8.3.81.53 及以上版本)。
GBase ADO.NET 集群高可用性是接口针对 GBase 8a MPP Cluster 集群开发的在接口层面的高可用性处理。高可用性适用于扁平结构的 GBase 8a MPP Cluster 集群,在通过 GBase ADO.NET 创建连接时,如果当前节点不可用时,接口会根据相关参数信息把连接数据库请求自动路由到集群其他可用的节点上。
如果需要将连接请求分摊到集群的每个节点上时,可以使用集群负载均衡功能(该功能需要 GBase ADO.NET 8.3.81.53 及以上版本)。
当 ADO.NET 应用程序获取连接的时候,会从 iplist 中顺序获取 IP 创建数据库连接,为每个 IP 创建一个连接,从而实现连接的负载均衡。如果列表中的 IP 不可连接,ADO.NET 会顺序获取列表中的下一个 IP,尝试连接,所有 IP 都不能创建数据库连接,则抛出异常。即,连接负载均衡功能既实现了连接负载均衡功能,也实现了高可用功能。
示例如下:
C# 示例:
String _ConnStr = "server=192.168.195.10;userid=root;password=1;database=test;port=5258;pooling=false;failover=true;iplist=192.168.195.20,192.168.195.30;gclusterid=gc1&connectiontimeout=3000";
failover:是否开启高可用。
iplist:IP 列表,以逗号分隔;
hostList 中不需要包含 url 中的主 IP( 192.168.195.10 )。
gclusterid:不同的 gclusterId 会创建不同的列表,用于区分连接的集群,要求必须以字母开头的可以包含字母和数字最大长度为 20 的字符串
4.ODBC 连接高可用
使用 GBase ODBC 连接 GBase 8a 数据库有两种方式,分别是:配置并使用数据源名称和使用连接字符串。
在 windows 平台下配置数据源名称时,需要在“服务器名称”一栏中填写 GBase 8a 数据库所有节点的 IP 地址,并使用“;”分割符将其分割开来(如下图所示),并选择“连接”选项卡中的“高可用性”选项。GBase ODBC 的集群 IP 自动路由功能就会开启。除非数据库集群的所有节点都不可用,否则 GBase ODBC 总会将连接路由到数据库群集中的一个可用的节点上。
在 Linux 平台上配置数据源名称时,修改 odbc.ini 文件中“SERVER”变量的值为 GBase 8a 数据库所有节点的 IP 地址,使用“;”分割符将其分割,并增加 IP_ROUTE=1 选项,GBase 8a ODBC 的高可用功能就会开启。
[ODBC Data Sources]
test = GBase 8a ODBC
[test]
Driver = GBase 8a ODBC 8.3 Driver
DATABASE = test
DESCRIPTION = GBase 8a ODBC 8.3 Driver test
SERVER = 192.168.195.10;192.168.195.20;192.168.195.30
UID = root
PASSWORD = 1
使用 GBase 8a ODBC 连接字符串时,需要将数据库集群所有节点 IP 列在 SERVER=之后的大括号中,并使用“;”分割开,并增加 IP_ROUTE=1;。
"DRIVER={GBase 8a ODBC 8.3 Driver};"
"SERVER={192.168.195.10;192.168.195.20;192.168.195.30};"
"UID=root;PWD=1;DATABASE=test;PORT=5258;IP_ROUTE=1;"
在 Linux 下使用 GBase 8a ODBC 连接字符串连接时需要在 odbcinst.ini 文件中写入如下信息:
[GBase 8a ODBC 8.3 Driver]
Description = GBase 8a ODBC
Driver = /usr/lib/libgsodbc8.so
Setup =
FileUsage =1
Threading =0
DontDLClose =1
GBase 8a ODBC 提供两种方式来使用高可用负载均衡。一种是配置数据源,另一种是使用连接字符串。
如果通过配置数据源使用 GBase 8a ODBC 的高可用负载均衡,在 windows 平台下需要使用 ODBC 数据源管理器打开 GBase 8a ODBC 的数据源配置界面进行配置。
首先要在“服务器名称”文本框中输入集群所有节点的 IP 地址,IP 地址间使用“;”进行分割;其次要打开“高级”选项,选择“连接”选项卡中的“负载均衡”选项,并指定“集群 ID”的值,“节点检测间隔(秒)”是使用高可用负载均衡所需要的,它的默认值为 60 秒;最后点击“确定”,一个带有高可用负载均衡的 GBase 8a ODBC 数据源就配置好了。
在 Linux 平台下则需要修改 odbcinst.ini 和 odbc.ini 数据源配置文件。通常情况下需要将如下内容添加到/etc/odbcinst.ini 和/etc/odbc.ini 的文件尾部。
在/etc/odbcinst.ini 文件中加入:
[GBase 8a ODBC 8.3 Driver]
Description = GBase 8a ODBC
Driver = /usr/lib/libgsodbc8.so
FileUsage = 1
threading = 0
DontDLClose = 1
在/etc/odbc.ini 文件中加入:
[test]
Driver = GBase 8a ODBC 8.3 Driver
DATABASE = test
DESCRIPTION = GBase 8a ODBC 8.3 Driver DSN
SERVER = 192.168.195.10;192.168.195.20;192.168.195.30
UID = gbase
PASSWORD = gbase20110531
CONNECTION_BALANCE = 1
GCLUSTER_ID = gcluster
CHECK_INTERVAL = 90
如果通过连接字符串使用 GBase 8a ODBC 的高可用负载均衡,请参考如下示例。
"DRIVER=GBase 8a ODBC 8.3 Driver;UID=gbase;PWD=gbase20110531;"
"SERVER={192.168.195.10;192.168.195.20;192.168.195.30};"
"CONNECTION_BALANCE=1;GCLUSTER_ID=gcluster;"
"CHECK_INTERVAL=90;"
如果在 Linux 平台下使用连接字符串,需要在/etc/odbcinst.ini 增加往下内容。
[GBase 8a ODBC 8.3 Driver]
Description = GBase 8a ODBC
Driver = /usr/lib/libgsodbc8.so
FileUsage = 1
threading = 0
DontDLClose = 1
5.Python 连接高可用
Python 驱动连接高可用功能是按照 host 参数配置的 IP 顺序获取节点,尝试连接,如果某个 IP 连接成功,则直接返回这个节点的连接,如果所有节点都不能连接,则抛出异常。连接高可用功能,只保证获取可用连接,并不能保证连接的均匀分布。
示例如下:
config = {'host': ['192.168.195.10', '192.168.195.20', '192.168.195.20'], 'port':5258, 'connection_timeout':3000, ...}
6.gccli 连接高可用
gccli 是 GBase 8a MPP Cluster 自带的命令行连接数据库工具。可以独立安装在一个非集群环境的机器上,仅支持 GBase 8a MPP Cluster 持的 Linux 操作系统。
语法:gccli –u -p [-h] [-P] [-D] [--nice_time_format] [-c] [-f] [-v[v][v]] [-e] [<]
评论
热门帖子
- 12025-12-01浏览数:183172
- 22023-05-09浏览数:25956
- 42023-09-25浏览数:19602
- 52020-05-11浏览数:18236
hostList 填写全部管理节点 IP,不要遗漏,保证故障切换兜底节点充足。