OpenGauss6.0+CM集群搭建

OpenGauss集群搭建

节点信息:一主两备

172.17.103.11

172.17.103.12

172.17.103.13

  1. 部署前准备

1.1 环境准备

##主机host设置 

主库:hostnamectl set-hostname apptrace11 

备库1:hostnamectl set-hostname apptrace12

备库2:hostnamectl set-hostname apptrace13

##添加hosts配置

sudo vim /etc/hosts

172.18.202.100 apptrace100

172.18.202.101 apptrace101

172.18.202.102 apptrace102

1.2 关闭SeLinux(所有节点都需要执行)

sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

1.3 关闭防火墙

注:主备库均做如下操作

1.检查防火墙是否关闭

systemctl status firewalld

若防火墙状态显示为active (running),则表示防火墙未关闭

若防火墙状态显示为inactive (dead),则无需再关闭防火墙

2.关闭防火墙并禁止开机重启

systemctl disable firewalld.service

systemctl stop firewalld.service

1.4 设置时区和时间

注:主备库均做如下操作,需要保证主备节点时间同步

timedatectl #查看节点时间

date -s "2024-8-26 15:30:30" #修改时间

1.5 内核修改

##系统资源及内核参数 # vi /etc/security/limits.conf 

echo "* soft nofile 1000000">>/etc/security/limits.conf

echo "* hard nofile 1000000">>/etc/security/limits.conf

echo "* soft nproc unlimited">>/etc/security/limits.conf

echo "* hard nproc unlimited">>/etc/security/limits.conf

内核参数配置

cat>> /etc/sysctl.conf <<EOF 

net.ipv4.tcp_max_tw_buckets = 10000

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_keepalive_time = 30

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_retries2 = 12

net.core.wmem_max = 21299200

net.core.rmem_max = 21299200

net.core.wmem_default = 21299200

net.core.rmem_default = 21299200

kernel.sem = 250 6400000 1000 25600

vm.min_free_kbytes = 813306

kernel.shmall = 1152921504606846720

kernel.shmmax = 18446744073709551615

EOF

sysctl -p  # 使内核参数生效

1.5 关闭透明大页

# 使用root用户各服务器节点均执行 

echo never > /sys/kernel/mm/transparent_hugepage/defrag

echo never > /sys/kernel/mm/transparent_hugepage/enabled

chmod +x /etc/rc.d/rc.local

grep Huge /proc/meminfo  #HugePages_Total:显示0 表示设置成功

1.6 python安装(非必须)

cd /opt

 tar -zxvf Python-3.6.15.tgz

 cd Python-3.6.15/

 ./configure --prefix=/usr/local/python3 --enable-shared

编译安装

 make -j4

 make install

注意:make编译时间比较长,耐心等待

OS上设置python的软连接

ln -s /usr/local/python3/bin/python3.6 /usr/bin/python3

ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

环境校验 python3: error while loading shared libraries: libpython3.6m.so.1.0: cannot open shared object file: No such file or directory

 cp /opt/apptrace/Python-3.6.15/libpython3.6m.so.1.0 /usr/lib64/

python3 -V  #查看版本

1.7 openssl安装(所有节点都需要执行)

openssl version -a  #查看openssl版本

如果查看的openssl版本低于1.1.1版本需要更新openssl,否则安装执行后会报./gs_ctl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory错误

1.7.1 解压openssl

tar -zxvf openssl-1.1.1i.tar.gz

1.7.2 切换到解压好的openssl目录

cd /opt/openssl-1.1.1i

1.7.3 配置openssl安装目录

./config --prefix=/usr/local/openssl

1.7.4 编译&&安装

make && make install

等待安装完成即可。

1.7.5 创建软链接

说明:创建的软链接和之前没升级通过whereis openssl保持一致即可。

mv /usr/bin/openssl /usr/bin/openssl_bak

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl /usr/include/openssl

1.7.6 添加动态链接库数据

echo "/usr/local/openssl/lib/" >> /etc/ld.so.conf

检查一下,已经在/etc/ld.so.conf中存在。

1.7.7 更新动态链接库:ldconfig -v

1.7.8验证openssl

查看openssl版本 openssl version -a会显示全面详细信息。

到此openssl升级完成。

  1. 一主两备安装
    1. 用户及组创建(主备均操作)

##创建用户组apptrace

 groupadd apptrace

##创建用户组dbgrp下的普通用户omm,并设置密码为Gauss_123

useradd -g apptrace apptrace

passwd apptrace  #用户密码可自定义

##赋予sudo权限

visudo

在root ALL=(ALL)ALL 后添加如下

Apptrace ALL=(ALL) NOPASSWD: ALL

2.2 安装包解压

注意:上传安装包到服务器/opt/openGauss,主节点apptrace用户操作即可

mkdir /opt/apptrace/openGauss

##解压安装包

chmod 755 -R /opt/apptrace/openGauss

cd /opt/apptrace/openGauss

tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-all.tar.gz

tar -zxvf openGauss-6.0.0-RC1-CentOS-64bit-om.tar.gz

2.3 XML配置文件

安装openGauss前需要创建cluster_config.xml文件。 cluster_config.xml文件包含部署openGauss的服务器信息、安装路径、IP地址以及端口号等。

编辑配置XML文件: vi /opt/openGauss/cluster_config.xml

vi /opt/apptrace/openGauss/cluster_config.xml

注:标红内容均需要修改为搭建集群地址、目录信息;

<?xml version="1.0" encoding="UTF-8"?>

<ROOT>

    <!-- openGauss整体信息 -->

    <CLUSTER>

        <PARAM name="clusterName" value="Cluster_opengauss" />

        <PARAM name="nodeNames" value="apptrace11,apptrace12,apptrace13" />

        <!-- 数据库安装目录,与数据库所需其它路径相互独立,没有包含关系-->

        <PARAM name="gaussdbAppPath" value="/opt/apptrace/gauss/app" />

        <!-- 日志目录-->

        <PARAM name="gaussdbLogPath" value="/opt/apptrace/gauss/log" />

        <!-- 临时文件目录-->

        <PARAM name="tmpMppdbPath" value="/opt/apptrace/gauss/tmp"/>

        <!-- 数据库工具目录-->

        <PARAM name="gaussdbToolPath" value="/opt/apptrace/gauss/om" />

        <!-- 数据库core文件目录-->

        <PARAM name="corePath" value="/opt/apptrace/gauss/corefile"/>

        <!-- 节点IP,与数据库节点名称列表一一对应 -->

        <PARAM name="backIp1s" value="172.17.103.11,172.17.103.12,172.17.103.13"/>

    </CLUSTER>

    <!-- 每台服务器上的节点部署信息 -->

    <DEVICELIST>

        <!-- node1上的节点部署信息 -->

        <DEVICE sn="apptrace11">

            <PARAM name="name" value="apptrace11"/>

            <PARAM name="azName" value="AZ1"/>

            <PARAM name="azPriority" value="1"/>

            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->

            <PARAM name="backIp1" value="172.17.103.11"/>

            <PARAM name="sshIp1" value="172.17.103.11"/>

            <!--CM节点部署信息-->

            <PARAM name="cmsNum" value="1"/>

            <PARAM name="cmServerPortBase" value="15000"/>

            <PARAM name="cmServerListenIp1" value="172.17.103.11,172.17.103.12,172.17.103.13"/>

            <PARAM name="cmServerHaIp1" value="172.17.103.11,172.17.103.12,172.17.103.13"/>

            <PARAM name="cmServerlevel" value="1"/>

            <PARAM name="cmServerRelation" value="apptrace11,apptrace12,apptrace13"/>

            <PARAM name="cmDir" value="/opt/apptrace/gauss/cm"/>

              <!--dn-->

 <PARAM name="dataNum" value="1"/>

                  <PARAM name="dataPortBase" value="15400"/>

                  <PARAM name="dataNode1" value="/opt/apptrace/gauss/data/dn,apptrace12,/opt/apptrace/gauss/data/dn,apptrace13,/opt/apptrace/gauss/data/dn"/>

            <PARAM name="dataNode1_syncNum" value="0"/>

        </DEVICE>

        <!-- node2上的节点部署信息,其中"name"的值配置为主机名称 -->

        <DEVICE sn="apptrace12">

            <PARAM name="name" value="apptrace12"/>

            <PARAM name="azName" value="AZ1"/>

            <PARAM name="azPriority" value="1"/>

            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->

            <PARAM name="backIp1" value="172.17.103.12"/>

            <PARAM name="sshIp1" value="172.17.103.12"/>

            <!-- cm -->

            <PARAM name="cmServerPortStandby" value="15000"/>

            <PARAM name="cmDir" value="/opt/apptrace/gauss/cm"/>

               </DEVICE>

        <!-- node3上的节点部署信息,其中"name"的值配置为主机名称 -->

        <DEVICE sn="apptrace13">

            <PARAM name="name" value="apptrace13"/>

            <PARAM name="azName" value="AZ1"/>

            <PARAM name="azPriority" value="1"/>

            <!-- 如果服务器只有一个网卡可用,将backIP1和sshIP1配置成同一个IP -->

            <PARAM name="backIp1" value="172.17.103.13"/>

            <PARAM name="sshIp1" value="172.17.103.13"/>

            <!-- cm -->

            <PARAM name="cmServerPortStandby" value="15000"/>

            <PARAM name="cmDir" value="/opt/apptrace/gauss/cm"/>

        </DEVICE>

    </DEVICELIST>

</ROOT>

2.4 初始化安装(主备均需要操作)

chmod  -R 755 /opt/apptrace/gauss

cd /opt/apptrace/openGauss

echo '/usr/share/abrt/apport-hook-ccpp %p %s %c %d %P %E' | sudo tee /proc/sys/kernel/core_pattern

#添加环境变量至~/.bash_profile里

export LD_LIBRARY_PATH=/opt/apptrace/openGauss/script/gspylib/clib:$LD_LIBRARY_PATH

export PGHOST=172.17.103.11

export PATH=$PATH:/opt/apptrace/gauss/app/bin

#保存后执行

source ~/.bash_profile

PGHOST=172.17.103.11 此参数需修改为当前机器IP,比如apptrace11机器ip是172.17.103.11,那apptrace12机器ip是172.17.103.12,此参数则需要修改为12。

注:只在主库上做操作即可,确保主库和备库root密码相同,用户和组以及目录授权同时在主备库操作

cd  /opt/apptrace/openGauss/script 

./gs_preinstall -U apptrace -G apptrace -X /opt/apptrace/openGauss/cluster_config.xml --sep-env-file=/home/apptrace/envfile

注:初始化安装会检查安装环境,如监测A1-A14有集群报错,需要先处理报错再往后安装;

2.5 正式安装(主节点执行)

在执行过程中,用户需根据提示输入数据库的密码,密码具有一定的复杂度,为保证正常使用该数据库,请记住输入的数据库密码;

设置的密码要符合复杂度要求:

最少包含8个字符,最多包含16个字符。

不能和用户名、当前密码(ALTER)、或当前密码反序相同。

至少包含大写字母(A-Z)、小写字母(a-z)、数字、非字母数字字符(限定为~!@#$%^&*()-_=+\|[{}];:,<.>/?)四类字符中的三类字符。 

示例:Apptrace123!

ll /opt/apptrace/openGauss/cluster_config.xml

source /home/omm/envfile

echo "source /home/apptrace/envfile" >> ~/.bash_profile

#安装

./gs_install  -X /opt/apptrace/openGauss/cluster_config.xml

示例:

2.6 安装验证

以apptrace用户身份登录服务器。 执行如下命令检查数据库状态是否正常,"cluster_state"显示"Normal"表示数据库可正常使用。

gs_om -t status

gs_om -t status --detail

2.7 数据库登录

gsql -d postgres -p 15400

2.8 集群启动及关闭

gs_om -t stop  #集群启动

gs_om -t start #集群关闭

gs_om -t status --detail #集群查看

  1. CM-VIP设置(主节点执行)

3.1 集群添加VIP

#sudo ip addr add 172.17.103.201/16 dev ens192

sudo /usr/sbin/ifconfig ens192:15400 172.17.103.201 netmask 255.255.0.0 up

cm_ctl res --add --res_name="VIP_az1" --res_attr="resources_type=VIP,float_ip=172.17.103.201"

cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6001" --inst_attr="base_ip=172.17.103.11"

cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6002" --inst_attr="base_ip=172.17.103.12"

cm_ctl res --edit --res_name="VIP_az1" --add_inst="node_id=1,res_instance_id=6003" --inst_attr="base_ip=172.17.103.13"

把/opt/apptrace/gauss/cm/cm_agent/cm_resource.json cat文件传到备节点的/opt/apptrace/gauss/cm/cm_agent目录

在/opt/apptrace/gauss/data/dn/pg_hba.conf文件中加入(主备均需要执行

host    all    all    172.17.103.201/32    sha256

cm集群重启

cm_ctl stop

cm_ctl start

cm_ctl show  #查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬零六

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值