资源池化网络双集群部署

内容简介

openGauss资源池化是openGauss推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,达到节省底层存储资源以及集群内部支持一写多读且可以实时一致性读的目的。 本文主要介绍基资源池化部署网络双集群。

  • 在社区上正式发布的企业版安装包中,如果需要搭建资源池化网络双集群,在硬件上需要准备磁阵,服务器和光交换机,且需要部署CM和OM组件。

手动部署网络双集群示例

资源池化部署通过om管理工具部署两个资源池化单集群,再配置容灾参数,从而搭建网络双集群。

说明: 此处的手动安装是指工程编译之后,可通过om管理工具执行相关命令进行资源池化集群安装部署,openGauss常规安装请参照《安装指南》。

  • 前置条件

    • 工程已完成代码编译,编译请参见软件安装编译
    • 主备存储已经挂载磁阵LUN设备,磁阵设备可用。
  • 限制条件

    • 一套正常的dorado存储,需要搭建两套资源池化集群(至少2+2计算节点)。
  • 组网方式

    生产中心主端业务计算节点010.0.0.10主存储Dorado1
    业务计算节点110.0.0.20
    容灾中心备端业务计算节点020.0.0.10备存储Dorado2
    业务计算节点120.0.0.20
  • 操作步骤

    第一步: 在主存储上创建资源池化需要的lun,以及远程同步复制xlog卷对应的lun,并且所有lun全部映射到业务计算节点上

    • 需要保证同一个Dorado lun在一个集群内多台机器上映射的盘符一致,若不一致可以通过建立软连接的方法,使其对openGauss暴露的盘符一致即可。

    • 例如wwn为00000000000001的盘在主集群0节点的盘符为sda,在主集群1节点的盘符为sdb,我们可以通过

      ll /dev/disk/by-id             // 查看lun对应的wwn来确定具体的盘符
      ln -s /dev/sda /dev/first      // 在0节点执行
      ln -s /dev/sdb /dev/first      // 在1节点执行
      

      然后将/dev/first作为我们可用的盘

      lun盘符
      data/dev/sda
      xlog/dev/sdb
      votingDiskPath/dev/sdc
      shareDiskDir/dev/sdd

    第二步: 主存储上准备xml文件。

    在《文档->安装指南->企业版安装->安装openGauss->创建XML配置文件->配置数据库名称及各项目录》中有配置说明, https://docs.opengauss.org/zh/docs/5.0.0/docs/InstallationGuide/%E5%88%9B%E5%BB%BAXML%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html

    根据配置说明准备资源池化集群需要的xml文件,以一主一备举例:

    <?xml version="1.0" encoding="UTF-8"?>
    <ROOT>
        <!-- openGauss整体信息 -->
        <CLUSTER>
            <!-- 数据库名称 -->
            <PARAM name="clusterName" value="cluster" />
            <!-- 数据库节点名称(hostname) -->
            <PARAM name="nodeNames" value="node1,node2" />
            <!-- 数据库安装目录-->
            <PARAM name="gaussdbAppPath" value="/opt/huawei/install/app" />
            <!-- 日志目录-->
            <PARAM name="gaussdbLogPath" value="/opt/huawei/install/log" />
            <!-- 临时文件目录-->
            <PARAM name="tmphuaweidbPath" value="/opt/huawei/install/tmp"/>
            <!-- 数据库工具目录-->
            <PARAM name="gaussdbToolPath" value="/opt/huawei/install/tool" />
            <!-- 数据库core文件目录-->
            <PARAM name="corePath" value="/opt/huawei/install/corefile"/>
            <!-- 节点IP,与数据库节点名称列表一一对应 -->
            <PARAM name="backIp1s" value="10.0.0.10,10.0.0.20"/>
            <PARAM name="clusterType" value="single-inst"/>
            <PARAM name="enable_dss" value="on"/>
            <PARAM name="dss_home" value="/opt/huawei/install/dss_home"/>
            <PARAM name="dss_vg_info" value="data:/dev/sda,log0:/dev/sdb"/>
            <PARAM name="votingDiskPath" value="/dev/sdc"/>
            <PARAM name="shareDiskDir" value="/dev/sdd"/>
            <PARAM name="ss_dss_vg_name" value="data"/>
            <PARAM name="dss_ssl_enable" value="on"/>
        </CLUSTER>
        <!-- 每台服务器上的节点部署信息 -->
        <DEVICELIST>
            <!-- 节点1上的部署信息 其中“name”的值配置为主机名称(hostname) -->
            <DEVICE sn="node1">
                <PARAM name="name" value="node1"/>
                <PARAM name="azName" value="AZ1"/>
                <PARAM name="azPriority" value="1"/>
                <PARAM name="backIp1" value="10.0.0.10"/>
                <PARAM name="sshIp1" value="10.0.0.10"/>
    
                <PARAM name="cmDir" value="/opt/huawei/install/cm"/>
                <PARAM name="cmsNum" value="1"/>
                <PARAM name="cmServerPortBase" value="27000"/>
                <PARAM name="cmServerListenIp1" value="10.0.0.10,10.0.0.20"/>
                <PARAM name="cmServerlevel" value="1"/>
                <PARAM name="cmServerRelation" value="node1,node2"/>
    
                <PARAM name="dataNum" value="1"/>
                <PARAM name="dataPortBase" value="25400"/>
                <PARAM name="dataNode1" value="/opt/huawei/install/data/dn,node2,/opt/huawei/install/data/dn"/>
            </DEVICE>
    
            <!-- 节点2上的节点部署信息,其中“name”的值配置为主机名称(hostname) -->
            <DEVICE sn="node2">
                <PARAM name="name" value="node2"/>
                <PARAM name="azName" value="AZ1"/>
                <PARAM name="azPriority" value="1"/>
                <PARAM name="backIp1" value="10.0.0.20"/>
                <PARAM name="sshIp1" value="10.0.0.20"/>
                <PARAM name="cmDir" value="/opt/huawei/install/cm"/>
            </DEVICE>
        </DEVICELIST>
    </ROOT>
    

    将xml保存在/opt/software/openGauss/cluster_config.xml中

    Tips: 用户需要修改节点名称、节点IP、目录、盘符、端口号

    第三步: 在主存储上执行如下操作安装部署主集群,安装用户omm。

    执行《文档->安装指南->企业版安装->安装openGauss->初始化安装环境》中的步骤,https://docs.opengauss.org/zh/docs/5.0.0/docs/InstallationGuide/%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%89%E8%A3%85%E7%8E%AF%E5%A2%83.html

    简化步骤如下:

    su - root 
    mkdir -p /opt/software/openGauss
    chmod 755 -R /opt/software
    将下载的安装包放置/opt/software/openGauss目录下
    
    cd /opt/software/openGauss
    tar -zxvf openGauss-All-x.x.x-openEuler20.03-x86_64.tar.gz
    tar -zxvf openGauss-OM-x.x.x-openEuler20.03-x86_64.tar.gz
    
    cd /opt/software/openGauss/script
    ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --sep-env-file=/home/omm/env
    
    su - omm
    source /home/omm/env
    gs_install -X /opt/software/openGauss/cluster_config.xml
    

    参数解释:

    • sep-env-file 分离环境变量,参数取值是一个安装用户omm可以访问到的文件目录
    • omm 操作系统用户
    • dbgrp 操作系统用户属组

    第四步: 查询主集群状态。

    建立容灾关系之后就是主集群,未建立容灾关系之前还是资源池化单集群。

    [huawei@node1 dn_6001]$ cm_ctl query -Cvidp
    [  CMServer State   ]
    
    node           node_ip         instance                           state
    -------------------------------------------------------------------------
    1  node1 10.0.0.10   1    /opt/huawei/install/cm/cm_server Primary
    2  node2 10.0.0.20   2    /opt/huawei/install/cm/cm_server Standby
    
    
    [ Defined Resource State ]
    
    node           node_ip         res_name instance  state
    ---------------------------------------------------------
    1  node1 10.0.0.10   dms_res  6001      OnLine
    2  node2 10.0.0.20   dms_res  6002      OnLine
    1  node1 10.0.0.10   dss      20001     OnLine
    2  node2 10.0.0.20   dss      20002     OnLine
    
    [   Cluster State   ]
    
    cluster_state   : Normal
    redistributing  : No
    balanced        : Yes
    current_az      : AZ_ALL
    
    [  Datanode State   ]
    
    node           node_ip         instance                             state            | node           node_ip         instance                             state
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1  node1 10.0.0.10   6001 25400  /opt/huawei/install/data/dn P Primary Normal | 2  node2 10.0.0.20   6002 25400  /opt/huawei/install/data/dn S Standby Normal
    

    第五步: 在备存储上准备lun和xml文件。同第1步和第2步一样。

    Tips: 用户需要修改节点名称、节点IP、目录、盘符、端口号

    第六步: 在备存储上集群(建立容灾关系之后就是备集群)上执行如下操作安装部署备集群,安装用户omm。

    简化步骤如下:

    su - root 
    mkdir -p /opt/software/openGauss
    chmod 755 -R /opt/software
    将下载的安装包放置/opt/software/openGauss目录下
    
    cd /opt/software/openGauss
    tar -zxvf openGauss-All-x.x.x-openEuler20.03-x86_64.tar.gz
    tar -zxvf openGauss-OM-x.x.x-openEuler20.03-x86_64.tar.gz
    
    cd /opt/software/openGauss/script
    gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --sep-env-file=/home/omm/env
    
    su - omm
    gs_install -X /opt/software/openGauss/cluster_config.xml
    

    第七步: 查询备存储上集群(建立容灾关系之后就是备集群)状态。

    建立容灾关系之后就是备集群,未建立容灾关系之前还是资源池化单集群。
    [omm@node1 dn_6001]$ cm_ctl query -Cvidp
    [  CMServer State   ]
    
    node           node_ip         instance                           state
    -------------------------------------------------------------------------
    1  node1 20.0.0.10   1    /opt/huawei/install/cm/cm_server Primary
    2  node2 20.0.0.20   2    /opt/huawei/install/cm/cm_server Standby
    
    
    [ Defined Resource State ]
    
    node           node_ip         res_name instance  state
    ---------------------------------------------------------
    1  node1 20.0.0.10   dms_res  6001      OnLine
    2  node2 20.0.0.20   dms_res  6002      OnLine
    1  node1 20.0.0.10   dss      20001     OnLine
    2  node2 20.0.0.20   dss      20002     OnLine
    
    [   Cluster State   ]
    
    cluster_state   : Normal
    redistributing  : No
    balanced        : Yes
    current_az      : AZ_ALL
    
    [  Datanode State   ]
    
    node           node_ip         instance                             state            | node           node_ip         instance                             state
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1  node1 20.0.0.10   6001 25400  /opt/huawei/install/data/dn P Primary Normal | 2  node2 20.0.0.20   6002 25400  /opt/huawei/install/data/dn S Standby Normal
    

    第八步: 停止主集群,配置容灾参数,重新拉起主集群

    cm_ctl stop
    
    主节点
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_0'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_stream_cluster = on"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.10 remoteport=25400'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.20 remoteport=25400'"
    
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host    all             all             20.0.0.10/32        trust"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host    all             all             20.0.0.20/32        trust"
    
    备节点
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_1'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_stream_cluster = on"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.10 remoteport=25400'"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.20 remoteport=25400'"
    
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host    all             all             20.0.0.10/32        trust"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host    all             all             20.0.0.20/32        trust"
    
    设置主集群cm参数
    cm_ctl set --param --agent -k ss_double_cluster_mode=1
    cm_ctl set --param --server -k ss_double_cluster_mode=1
    
    启动主集群
    cm_ctl start
    

    参数解释:

    • cross_cluster_replconninfo 主备集群建立连接信息,localport为数据库HA端口(上述示例用的xml里的dataPortBase,当开启线程池enable_thread_pool时,需配置为实际HAPort)

    Tips: gs_guc为openGauss提供的修改配置文件工具,也可以通过直接打开/opt/huawei/install/data/dn($PGDATA)下的postgresql.conf与pg_hba.conf文件将上面双引号中的内容手动写入文件中。

    第九步:. 停止备存储上的资源池化单集群(建立容灾关系之后就是备集群),配置容灾参数

    cm_ctl stop
    
    主节点
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_0'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_stream_cluster = on"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.10 remoteport=25400'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.20 remoteport=25400'"
    
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host    all             all             10.0.0.10/32        trust"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host    all             all             10.0.0.20/32        trust"
    
    备节点
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_1'"
    gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_stream_cluster = on"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.10 remoteport=25400'"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.20 remoteport=25400'"
    
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host    all             all             10.0.0.10/32        trust"
    gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host    all             all             10.0.0.20/32        trust"
    

    第十步:. 拉起首备dssserver,执行build

    export DSS_MAINTAIN=TRUE                                                        // 打开dss手动模式
    dssserver -D /opt/huawei/install/dss_home &                                     // 拉起dssserver,-D 指定$DSS_HOME
    gs_ctl build -D /opt/huawei/install/data/dn -b cross_cluster_full -q
    dsscmd stopdss                                                                  // 停止手动模式的dssserver
    
    `Tips`: build必须需要加-q,指build成功后不拉起数据库。
    

    第十一步: 配置备集群cm参数,重新拉起备集群

    cm_ctl set --param --agent -k ss_double_cluster_mode=2
    cm_ctl set --param --server -k ss_double_cluster_mode=2
    cm_ctl start
    

    第十二步: 查询集群状态

    主集群使用cm_ctl query -Cvidp查询出来同第七步一样
    备集群查询结果如下,备集群节点0从没有建立容灾关系时的primary变成建立容灾关系之后的Main Standby
    
    [mpp@node2 dn_6002]$ cm_ctl query -Cvidp
    [  CMServer State   ]
    
    node           node_ip         instance                           state
    -------------------------------------------------------------------------
    1  node1 20.0.0.10   1    /opt/huawei/install/cm/cm_server Primary
    2  node2 20.0.0.20   2    /opt/huawei/install/cm/cm_server Standby
    
    
    [ Defined Resource State ]
    
    node           node_ip         res_name instance  state
    ---------------------------------------------------------
    1  node1 20.0.0.10   dms_res  6001      OnLine
    2  node2 20.0.0.20   dms_res  6002      OnLine
    1  node1 20.0.0.10   dss      20001     OnLine
    2  node2 20.0.0.20   dss      20002     OnLine
    
    [   Cluster State   ]
    
    cluster_state   : Normal
    redistributing  : No
    balanced        : Yes
    current_az      : AZ_ALL
    
    [  Datanode State   ]
    
    node           node_ip         instance                             state            | node           node_ip         instance                             state
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1  node1 20.0.0.10   6001 25400  /opt/huawei/install/data/dn P Main Standby Normal | 2  node2 20.0.0.20   6002 25400  /opt/huawei/install/data/dn S Standby Normal
    

    第十三步: . 在主集群主机和备集群首备执行查询,可观察到流复制信息

    主集群主节点0
    [omm@node1 dn]$ gs_ctl query -D /opt/huawei/install/data/dn
    [2023-04-18 09:38:34.397][1498175][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn
    HA state:
            local_role                     : Primary
            static_connections             : 2
            db_state                       : Normal
            detail_information             : Normal
    
    Senders info:
            sender_pid                     : 1456376
            local_role                     : Primary
            peer_role                      : StandbyCluster_Standby
            peer_state                     : Normal
            state                          : Streaming
            sender_sent_location           : 2/5C8
            sender_write_location          : 2/5C8
            sender_flush_location          : 2/5C8
            sender_replay_location         : 2/5C8
            receiver_received_location     : 2/5C8
            receiver_write_location        : 2/5C8
            receiver_flush_location        : 2/5C8
            receiver_replay_location       : 2/5C8
            sync_percent                   : 100%
            sync_state                     : Async
            sync_priority                  : 0
            sync_most_available            : Off
            channel                        : 10.0.0.10:25400-->20.0.0.10:43350
    
    Receiver info:
    No information
    
    备集群首备节点0
    [omm@nodename pg_log]$ gs_ctl query -D /opt/huawei/install/data/dn
    [2023-04-18 11:33:09.288][2760315][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn
    HA state:
            local_role                     : Main Standby
            static_connections             : 2
            db_state                       : Normal
            detail_information             : Normal
    
    Senders info:
    No information
    Receiver info:
            receiver_pid                   : 1901181
            local_role                     : Standby
            peer_role                      : Primary
            peer_state                     : Normal
            state                          : Normal 
            sender_sent_location           : 2/5C8
            sender_write_location          : 2/5C8
            sender_flush_location          : 2/5C8
            sender_replay_location         : 2/5C8
            receiver_received_location     : 2/5C8
            receiver_write_location        : 2/5C8
            receiver_flush_location        : 2/5C8
            receiver_replay_location       : 2/5C8
            sync_percent                   : 100%
            channel                        : 20.0.0.10:43350<--10.0.0.10:25400
意见反馈
编组 3备份
    openGauss 2024-10-13 00:54:13
    取消