金点分享 | 数据库系列之GoldenDB整体架构和一键部署

2022-03-15 00:00:00 数据 集群 节点 配置 安装

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系统配置、数据库备份管理、数据重分布等功能。

  • 管理节点

管理节点包含四个主要的功能模块:
  1. MetaDataServer主要功能是管理分布式数据库的元数据信息,对外提供操作接口;持久化数据以及进行相应的任务管理工作。

  2. ProxyManager(PM)主要功能包括:管理计算节点,管理连接实例,收集计算节点状态、统计告警信息和对计算节点的异常进行处理。

  3. ClusterManager(CM) 在分布式数据库系统中主要用于存储节点安全组的管理,协同计算节点控制对数据库的访问。

  4. LoadServer 主要功能是在存储节点间批量导入导出数据。

  • 全局事务节点

全局事务协调中心,用于协助计算节点进行分布式事务管理,主要包括生成、释放全局事务ID(GTID)、维护活跃事务以及当前活跃GTIDs的快照。在GoldenDB中,只有跨分片的写操作才会申请GTID,其它读查询操作和单分片的写操作都不会申请GTID。

  • 计算节点

计算节点主要负责分布式优化、执行具体的分布式计划、分布式事务控制、存储节点负载均衡、用户认证与鉴权等任务。

  • 数据节点

数据节点用于实际存储数据、执行原子Sql操作和本地事务控制。每个数据节点对应一个MySQL节点,多个数据节点组成一个安全组Group。在安全组Group中,数据节点按照一主多备进行快同步数据复制。多个Group组成一个数据库集群,数据在Group之间按照用户设计的策略进行水平分布。

  • 连接方式

应用客户端可以通过JDBC或者ODBC直接连接到计算节点,也可以经过负载均衡F5或loadbalance或LVS的方式连接到计算节点,达到流量均衡的目的。

1.2 GoldenDB组件和进程关系
  • GoldenDB中各组件模块和进程列表

    1. 计算节点和数据节点之间通过dbagent建立长连接,所有的副本都需要建立

    2. 数据节点主节点和从节点之间通过mysql的binlog同步复制原理,实现数据的同步

    3. 事务访问计算节点,如果需要申请全局事务ID,会通过GTM管理节点申请GTID

    4. 管理节点中ClusterManager会统一管理数据节点,比如数据节点的状态、扩容缩容,并协同计算节点控制数据的访问

    5. 管理节点中的ProxyManager实现对计算节点的统一管理,会和每个计算节点进行连接

    6. 管理节点中的Metadataserver管理元数据信息,有DDL相关的变更会在这里同步更新,元数据会保存在RDB中。同时为了优化执行效率,元数据信息也会同时同步到每个计算节点和数据节点的内存中,业务访问的时候优先从本地读取元数据信息。

    7. 每台服务器会部署ommagent,用于执行OMM管理节点下发的命令,并将告警信息同步到OMM管理节点
    • Insight运维管理平台访问关系

      1. InsightAgent是主机代理,每台主机上部署,执行insightserver下发的命令,并将数据收集推送到kafka

      2. Filebeat是日志采集代理,用于收集每台服务器的日志数据

      3. 运维性能数据经过kafka消息队列后通过logstash采集到elasticsearch中存储

      4. 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代表多租户安装(不安装dbproxy、不组建集群、不配置互信)
      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表示异地机房1remote_room2表示异地机房2
      # 配置值的格式如下:
      # 城市|机房|服务器ip列表
      # 说明:服务器ip列表中可以有一个ip或者多个ip(多个ip之间用英文逗号分隔),
      # 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.1110.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.1110.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编号1team编号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.1110.0.0.20内所有连续ip
      # 配置项由使用者来增加,不要与已经有的配置项重复。配置项如果重复,使用后一个。多余配置项请删除
      sys_gtmg1_team1=192.168.112.124,M;192.168.112.123,S

      # increment_persistenceGTM增量持久化配置:
      # 1表示仅主机做增量持久化;
      # 2表示主备机均不做增量持久化;
      # 3表示主备机均做增量持久化
      increment_persistence=1

      # is_master_count为主GTM是否计数:
      # 1表示计数;
      # 0表示不计数
      is_master_count=1

      # response_numGTMteam响应数:
      # 当主GTM不计数时,GTMteam响应数不能大于GTMteam中的备机数量;
      # 当主GTM计数时,GTMteam响应数不能大于GTMteam中的GTM数量总数量
      response_num=1

      # hwlw分别为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.1110.0.0.20内所有连续ip
      ip=192.168.112.123, 192.168.112.124

      # 集群信息
      [CLUSTER]
      # 配置集群、groupteam:
      # 配置项:
      # 集群字符集: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, 表示集群编号1group编号2team编号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, 表示专属c1GTM集群,group编号1team编号1
      # 配置值:
      # 格式为 gtm1,role;gtm2,role;...;gtmn,role
      # role: M - master, S - slave
      # 配置项由使用者来增加,不要与已经有的配置项重复。配置项如果重复,使用后一个。多余配置项请删除
      # 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.1110.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.1110.0.0.20内所有连续ip
      ip=192.168.112.125


      # insight安装配置
      [INSIGHT]
      # zk安装服务器列表,可以有一个ip或者多个ip(多个ip之间用英文逗号分隔,zkip应该包括omm_domain_name
      # 连续ip使用-连接,起始IP-同网段截止IP中后一段:例如10.0.0.11-20,代表10.0.0.1110.0.0.20内所有连续ip
      zk_server_ip=192.168.112.125
      # zookeeper客户端连接端口
      zk_server_port=32181
      2.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//' *.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.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. 步骤1:本机OMM安装

      2. 步骤2:insight安装

      3. 步骤3:生成安装配置文件

      4. 步骤4:发送脚本

      5. 步骤5:其他管理节点OMM安装

      6. 步骤6:安装组件

      7. 步骤7:组建集群

      8. 步骤8:启动组件

      9. 步骤9:配置互信环境

      6)安装完成后,可以通过以下信息登录Insight访问页面:

    • 来源 https://mp.weixin.qq.com/s/Vh9blkhFPoUn3034VmglFw

相关文章