金点分享 | 数据库系列之GoldenDB整体架构和一键部署
GoldenDB作为国产化分布式数据库产品,在金融行业已有广泛的应用案例。其在内核做了大量的优化,在计算节点、全局事务GTM以及高可用层面有自己的优势和特色。本文将简单介绍GoldenDB的基本架构和组件模块,并测试一键部署集群环境。
1、GoldenDB基本架构和组件
1.1 GoldenDB整体架构
GoldenDB整体架构如下图所示包括:计算节点CN、数据节点DN、全局事务节点GTM、管理节点,其中管理节点分为集群管理和Insight运维管理平台。集群管理部分包括元数据管理Metadataserver、ClusterManager和ProxyManager,这一部分实现分布式数据库架下的整个集群元数据、数据节点和计算节点的管理和维护。
OMM功能
OMM(Operations, Maintenance & Monitoring Manager)是整个分布式数据库系统中用于进行维护工作的管理平台,负责所有组件的管理,主要功能包括用户和权限管理、统计监控、元数据管理、DBProxy管理、Cluster管理、操作日志查询、资源管理、FAQ管理、OMM系统配置、数据库备份管理、数据重分布等功能。
管理节点
MetaDataServer主要功能是管理分布式数据库的元数据信息,对外提供操作接口;持久化数据以及进行相应的任务管理工作。
ProxyManager(PM)主要功能包括:管理计算节点,管理连接实例,收集计算节点状态、统计告警信息和对计算节点的异常进行处理。
ClusterManager(CM) 在分布式数据库系统中主要用于存储节点安全组的管理,协同计算节点控制对数据库的访问。
LoadServer 主要功能是在存储节点间批量导入导出数据。
全局事务节点
全局事务协调中心,用于协助计算节点进行分布式事务管理,主要包括生成、释放全局事务ID(GTID)、维护活跃事务以及当前活跃GTIDs的快照。在GoldenDB中,只有跨分片的写操作才会申请GTID,其它读查询操作和单分片的写操作都不会申请GTID。
计算节点
计算节点主要负责分布式优化、执行具体的分布式计划、分布式事务控制、存储节点负载均衡、用户认证与鉴权等任务。
数据节点
数据节点用于实际存储数据、执行原子Sql操作和本地事务控制。每个数据节点对应一个MySQL节点,多个数据节点组成一个安全组Group。在安全组Group中,数据节点按照一主多备进行快同步数据复制。多个Group组成一个数据库集群,数据在Group之间按照用户设计的策略进行水平分布。
连接方式
应用客户端可以通过JDBC或者ODBC直接连接到计算节点,也可以经过负载均衡F5或loadbalance或LVS的方式连接到计算节点,达到流量均衡的目的。
1.2 GoldenDB组件和进程关系
GoldenDB中各组件模块和进程列表 计算节点和数据节点之间通过dbagent建立长连接,所有的副本都需要建立
数据节点主节点和从节点之间通过mysql的binlog同步复制原理,实现数据的同步
事务访问计算节点,如果需要申请全局事务ID,会通过GTM管理节点申请GTID
管理节点中ClusterManager会统一管理数据节点,比如数据节点的状态、扩容缩容,并协同计算节点控制数据的访问
管理节点中的ProxyManager实现对计算节点的统一管理,会和每个计算节点进行连接
管理节点中的Metadataserver管理元数据信息,有DDL相关的变更会在这里同步更新,元数据会保存在RDB中。同时为了优化执行效率,元数据信息也会同时同步到每个计算节点和数据节点的内存中,业务访问的时候优先从本地读取元数据信息。
每台服务器会部署ommagent,用于执行OMM管理节点下发的命令,并将告警信息同步到OMM管理节点
Insight运维管理平台访问关系
InsightAgent是主机代理,每台主机上部署,执行insightserver下发的命令,并将数据收集推送到kafka
Filebeat是日志采集代理,用于收集每台服务器的日志数据
运维性能数据经过kafka消息队列后通过logstash采集到elasticsearch中存储
Insightserver会查询ES中的性能数据、RDB中的集群信息以及Redis中的缓存信息进行展示和汇总分析
2、GoldenDB集群环境部署
2.1 环境准备
GoldenDB集群环境部署至少需要一台计算节点、2台数据节点(主从)、1台GTM节点和1台OMM管理节点,配置如下: 2.2 GoldenDB一键安装
2.2.1 安装包准备
1)将ZXCLOUD-GoldenDB-ALL-RHV*.zip软件安装包上传至服务器 2)解压ZXCLOUD-GoldenDB-ALL-RHV*.zip, 进入目录oneKeyInstallUpdate/install/config
2.2.2 配置文件
以单-管理节点配置文件为例:
# 适用Goldendb者, 对各组件及其配置项有详细了解
[GENERAL]
# 安装机器登录用户,具有root权限的高权用户
root_user=root
# 安装机器用于登录用户
root_pwvalue=xxxx
# 管理组件(OMM, CM, PM, MDS), GTM, Proxy, DB, LOADSERVER等用户名的前缀信息
# (同一节点上有多个时,末尾采用从1开始的数字进行区分)
user_prefix=gz
# 安装路径
install_path=/goldendb
#企业版License.dat文件
#license_dat_path=/home/OneInstall/License.dat
#安装模式(针对管理节点):
# 0代表单-管理节点,需要配置[Nodes],[Manager-Single],[GTM],[DBPROXY],[CLUSTER],[LOADSERVER];
# 1代表HA, 需要配置[Nodes],[Manager-HA], [GTM],[DBPROXY],[CLUSTER],[LOADSERVER];
# 2代表ZK, 需要配置[Nodes],[Manager-ZK], [GTM],[DBPROXY],[CLUSTER],[LOADSERVER];
install_type=
# 多租户安装,代表非多租户安装,1代表多租户安装(不安装db和proxy、不组建集群、不配置互信)
install_tenancy=
# OMM domain name: ommserver机器地址(固定IP、浮动IP或域名), 用户访问OMM网页用的域名
# 单-管理节点配置本机ip, HA配置浮动ip或者域名, ZK配置本机ip
omm_domain_name=192.168.112.125
# omm listen port for ommangent.
omm_listen_port=6471
# rdb port,默认是3309
rdb_port=3309
# 所有服务器
[NODES]
# 配置项的名称格式如下,不允许修改:
# local_room表示本地机房,city_room表示同城机房,remote_room1表示异地机房1,remote_room2表示异地机房2
# 配置值的格式如下:
# 城市|机房|服务器ip列表
# 说明:服务器ip列表中可以有一个ip或者多个ip(多个ip之间用英文逗号分隔),
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
# 没有相应服务器则置为空比如remote_room2=
local_room=广州|广州机房1|192.168.112.121-125
city_room=
remote_room1=
remote_room2=
# 单-管理节点安装, install_type=0时此配置生效
[MANAGER_SINGLE]
# 从[Nodes]配置段中选取,用于配置 本地,同城,异地
# 本地,只允许一个IP
# 同城、异地如果没有,可以保留为空值,如果有值,也是只允许一个IP
local_room_ip=192.168.112.125
city_room_ip=
remote_room_ip=
# HA安装, install_type=1时此配置生效, 多支撑两地三中心即本地同城异地
[MANAGER_HA]
# 配置管理节点,配置项的名称格式如下,不允许修改:
# local_room表示本地机房,city_room表示同城机房,remote_room表示异地机房
# 配置值的格式如下:
# ip1,ip2|float_ip
# ip1,ip2|float_ip/16
# 说明:每个机房配置两台manager(其中安装OMM, CM, PM, MDS),且只能为两台,从[Nodes]配置段中选取
# float_ip是浮动ip,它应该是当前机房所属局域网未被其他机器占用的ip,
# float_ip后可以采用/n来指定掩码,如10.10.10.88/24。不指定掩码时,为24
local_room_ip=
city_room_ip=
remote_room_ip=
# zk安装, install_type=2时此配置生效
[MANAGER_ZK]
# 配置管理节点ip,配置项的名称为ip,不允许修改。
# 配置值的格式如下:
# ip1,ip2,...
# 说明:从[Nodes]配置段中选取,英文逗号分隔
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
local_room_ip=
city_room_ip=
remote_room1_ip=
remote_room2_ip=
# GTM组件
[GTM]
# 配置项:
# 系统级GTM集群部署:
# 格式为 sys_gtmg<num>_team<num>
# 例如:sys_gtmg1_team1, 表示系统级GTM集群,group编号1,team编号1,一个gtm集群暂时只支持一个group
# 配置值:
# 格式为 gtm1,role;gtm2,role;...;gtmn,role
# role: M - master, S - slave
# 可以多次配置相同IP,因为一个IP上可以使用不同端口安装多个GTM
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
# 配置项由使用者来增加,不要与已经有的配置项重复。配置项如果重复,使用后一个。多余配置项请删除
sys_gtmg1_team1=192.168.112.124,M;192.168.112.123,S
# increment_persistence为GTM增量持久化配置:
# 1表示仅主机做增量持久化;
# 2表示主备机均不做增量持久化;
# 3表示主备机均做增量持久化
increment_persistence=1
# is_master_count为主GTM是否计数:
# 1表示计数;
# 0表示不计数
is_master_count=1
# response_num为GTMteam响应数:
# 当主GTM不计数时,GTMteam响应数不能大于GTMteam中的备机数量;
# 当主GTM计数时,GTMteam响应数不能大于GTMteam中的GTM数量总数量
response_num=1
# hw和lw分别为GTMteam高水位和低水位信息
hw=1
lw=1
# auto_switch_between_different_room为跨机房自动切换配置:
# 1表示开启;
# 0表示不开启
auto_switch_between_different_room=1
[DBPROXY]
#dbproxy:#一个IP上装多个服务,则配置多次相同IP
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
ip=192.168.112.123, 192.168.112.124
# 集群信息
[CLUSTER]
# 配置集群、group、team:
# 配置项:
# 集群字符集:utf8mb4 gbk gb18030 latin1 utf8
# 格式为c<num>_character_set_server=utf8mb4
# 集群分片模式:
# 格式为c<num>_group_mode=<num>
# 例如:c1_group_mode=1表示集群1的分片模式,0表示多分片;1表示单分片
# 集群部署:
# 格式为 c<num>_g<num>_team<num>
# 例如:c1_g2_team1, 表示集群编号1,group编号2,team编号1,一个gtm集群暂时只支持一个group
# 配置值:
# 格式为 db1,role;db2,role;...;dbn,role
# role: M - master, S - slave, L - logic master
# 配置项:
# 专属级GTM集群部署:
# 格式为 c1_gtmg<num>_team<num>
# 例如:c1_gtmg1_team1, 表示专属c1的GTM集群,group编号1,team编号1
# 配置值:
# 格式为 gtm1,role;gtm2,role;...;gtmn,role
# role: M - master, S - slave
# 配置项由使用者来增加,不要与已经有的配置项重复。配置项如果重复,使用后一个。多余配置项请删除
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
# 暂时只支持一个集群绑定一个proxy,多配置的proxy只安装,不绑定
# 除单分片集群(单分片集群不配置gtm集群)外,一个DB集群绑定一个GTM集群,没有配置专属级GTM集群则使用系统级GTM集群
# cluster_1
c1_character_set_server=utf8mb4
c1_group_mode=1
c1_g1_team1=192.168.112.121,M;192.168.112.122,S
# cluster_1专属级gtm集群
c1_gtmg1_team1=192.168.112.124,M;192.168.112.123,S
# loadserver组件
[LOADSERVER]
#一个IP上装多个服务,则配置多次相同IP
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
ip=192.168.112.125
# insight安装配置
[INSIGHT]
# zk安装服务器列表,可以有一个ip或者多个ip(多个ip之间用英文逗号分隔,zk的ip应该包括omm_domain_name)
# 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.11到10.0.0.20内所有连续ip
zk_server_ip=192.168.112.125
# zookeeper客户端连接端口
zk_server_port=321812.2.3 一键安装GoldenDB
1)上传产品包到tango-GDB-OMM01并解压,修改ini文件为unix格式
cd /home/OneInstall
unzip ZXCLOUD-GoldenDB-ALL-RHV*.zip
cd oneKeyInstallUpdate/install/config
sed -i 's/\r//' *.ini2)编辑安装配置文件
[root@tango-GDB-OMM01 config]# cd /home/OneInstall/oneKeyInstallUpdate/install/config
[root@tango-GDB-OMM01 config]# vi install_senior.ini3)进入/home/OneInstall/oneKeyInstallUpdate/install,执行init_env.py脚本进行本机环境初始化。
#cd /home/OneInstall/oneKeyInstallUpdate/install
#python init_env.py
[root@tango-GDB-OMM01 install]# python init_env.py
2021-04-09 00:19:22,704 [INFO] init_env.py(234) - **************** start to initializing environment ****************
2021-04-09 00:19:23,302 [INFO] init_env.py(89) - start check python dependent lib and install it
2021-04-09 00:43:58,093 [INFO] init_env.py(119) - install tqdm-4.45.0 success
2021-04-09 00:43:58,517 [INFO] init_env.py(119) - install requests-toolbelt-0.9.1 success
2021-04-09 00:43:58,908 [INFO] init_env.py(119) - install PyMySQL-master success
2021-04-09 00:44:00,365 [INFO] init_env.py(119) - install kazoo-2.6.1 success
2021-04-09 00:44:00,369 [INFO] init_env.py(244) - **************** done environment initialization ****************4)安装本机omm、insight、生成安装配置文件(/home/OneInstall/oneKeyInstallUpdate/install/generated_config_files/detail_conf.json),此步骤可定制化修改生成的安装配置文件
#cd /home/OneInstall/oneKeyInstallUpdate/install
#python install_control.py --type install --product_pkg "/home/OneInstall/ZXCLOUD-GoldenDB-ALL-RHV5.1.05.zip" --ini "/home/OneInstall/oneKeyInstallUpdate/install/config/install_senior.ini" --g "yes"
附参数意义:
--type,help='install or update' 安装模式:安装还是升级
--product_pkg,help='goldendbproductpackage' 安装包存放路径
--ini,help='install config file path' 配置文件存放路径
--g,help='by the end of generate Config, yes for sure' 是否需要在生成配置文件后停止程序5)进入/home/OneInstall/oneKeyInstallUpdate/install,执行install_control.py脚本进行安装
#cd /home/OneInstall/oneKeyInstallUpdate/install
[root@tango-GDB-OMM01 install]# python install_control.py --type install --product_pkg "/home/OneInstall/ZXCLOUD-GoldenDB-ALL-RHV5.1.05.zip" --ini "/home/OneInstall/oneKeyInstallUpdate/install/config/install_senior.ini"
2021-04-09 04:37:10,528 [INFO] global_args.py(109) - Global param:
2021-04-09 04:37:10,529 [INFO] global_args.py(110) - product pkg: /home/OneInstall/ZXCLOUD-GoldenDB-ALL-RHV5.1.05.zip
2021-04-09 04:37:10,529 [INFO] global_args.py(111) - ini file: /home/OneInstall/oneKeyInstallUpdate/install/config/install_senior.ini
2021-04-09 04:37:10,529 [INFO] global_args.py(112) - execute_type: install
2021-04-09 04:37:10,569 [INFO] doExcuteLog.py(80) - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2021-04-09 04:37:10,570 [INFO] doExcuteLog.py(81) - 一键安装全流程说明:总共分成9个步骤:
2021-04-09 04:37:10,570 [INFO] doExcuteLog.py(88) - 步骤1:本机OMM安装 步骤2:insight安装 步骤3:生成安装配置文件 步骤4:发送脚本
2021-04-09 04:37:10,570 [INFO] doExcuteLog.py(92) - 步骤5:其他管理节点OMM安装 步骤6:安装组件 步骤7:组建集群 步骤8:启动组件 步骤9:配置互信环境
2021-04-09 04:37:10,571 [INFO] doExcuteLog.py(93) - >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>可以看到整个安装过程分为几步: 步骤1:本机OMM安装
步骤2:insight安装
步骤3:生成安装配置文件
步骤4:发送脚本
步骤5:其他管理节点OMM安装
步骤6:安装组件
步骤7:组建集群
步骤8:启动组件
步骤9:配置互信环境
6)安装完成后,可以通过以下信息登录Insight访问页面:
来源 https://mp.weixin.qq.com/s/Vh9blkhFPoUn3034VmglFw
相关文章