GoldenDB作为国产化分布式数据库产品,在金融行业已有广泛的应用案例。其在mysql内核innodb的基础了做了大量的优化,在中间件计算节点、全局事务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 环境准备
2.2 GoldenDB一键安装
2.2.1 安装包准备
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=0# 多租户安装,0代表非多租户安装,1代表多租户安装(不安装db和proxy、不组建集群、不配置互信)install_tenancy=0# OMM domain name: ommserver机器地址(固定IP、浮动IP或域名), 用户访问OMM网页用的域名# 单管理节点配置本机ip, HA配置浮动ip或者域名, ZK配置本机ipomm_domain_name=192.168.112.125# omm listen port for ommangent.omm_listen_port=6471# rdb port,默认是3309rdb_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-125city_room=remote_room1=remote_room2=# 单管理节点安装, install_type=0时此配置生效[MANAGER_SINGLE]# 从[Nodes]配置段中选取,用于配置 本地,同城,异地# 本地,只允许一个IP# 同城、异地如果没有,可以保留为空值,如果有值,也是只允许一个IPlocal_room_ip=192.168.112.125city_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。不指定掩码时,为24local_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内所有连续iplocal_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=1lw=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内所有连续ipip=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_1c1_character_set_server=utf8mb4c1_group_mode=1c1_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内所有连续ipip=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内所有连续ipzk_server_ip=192.168.112.125# zookeeper客户端连接端口zk_server_port=32181
复制
2.2.3 一键安装GoldenDB
1)上传产品包到tango-GDB-OMM01并解压,修改ini文件为unix格式
cd home/OneInstallunzip ZXCLOUD-GoldenDB-ALL-RHV*.zipcd oneKeyInstallUpdate/install/config sed -i 's/\r//' *.ini
复制
2)编辑安装配置文件
[root@tango-GDB-OMM01 config]# cd home/OneInstall/oneKeyInstallUpdate/install/config[root@tango-GDB-OMM01 config]# vi install_senior.ini
复制
3)进入/home/OneInstall/oneKeyInstallUpdate/install,执行init_env.py脚本进行本机环境初始化。
#cd home/OneInstall/oneKeyInstallUpdate/install#python init_env.py [root@tango-GDB-OMM01 install]# python init_env.py2021-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 it2021-04-09 00:43:58,093 [INFO] init_env.py(119) - install tqdm-4.45.0 success2021-04-09 00:43:58,517 [INFO] init_env.py(119) - install requests-toolbelt-0.9.1 success2021-04-09 00:43:58,908 [INFO] init_env.py(119) - install PyMySQL-master success2021-04-09 00:44:00,365 [INFO] init_env.py(119) - install kazoo-2.6.1 success2021-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.zip2021-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访问页面:
至此,完成了GoldenDB一键部署流程。其中OMM和insight节点涉及到很多大数据组件,相当的消耗资源,安装过程中也需要准备充足的测试资源,并且准备好yum源。
参考资料:
GoldenDB_OnekeyInstall_Redhat