OpenGauss集群搭建
节点信息:一主两备
172.17.103.11 | 主 |
172.17.103.12 | 备 |
172.17.103.13 | 备 |
- 部署前准备
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错误
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升级完成。 |
- 一主两备安装
- 用户及组创建(主备均操作)
##创建用户组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 #集群查看
- 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 #查看 |