本文由 dbaplus 社群授权转载。
GaussDB T 1.0.2 版本已经发布了,此版本为 GA 版本,相比 1.0.1 版本稳定性和功能方面做了加强,华为后续也将要推出 RAC 版本。本文主要介绍当前 GA 版本下的主备集群方式安装。
主备(一主一备)部署方案无 CN,其中 DN 主机所在的节点为主节点,对外提供业务。
集群中各组件功能:
CM:集群管理模块(ClusterManager)。管理和监控分布式系统中各个功能单元和物理资源的运行状况,确保整个系统的稳定运行。
DN:数据节点(Datanode)。负责存储业务数据,执行数据查询任务以及返回执行结果。
ETCD:高可用分布式键值(key-value)数据库。负责存储集群各个节点和实例集群状态,便于集群CM管理各个实例。
Storage:服务器的本地存储资源,持久化存储数据。
一、环境准备
操作系统:CentOS Linux release 7.5.1804 (Core)
数据库软件:GaussDB_T_1.0.2-CLUSTER-CentOS-64bit.tar.gz
二、安装步骤
1、root 远程登录权限修改(两个节点均需操作)
sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
sed -i 's/#PasswordAuthentication yes/ PasswordAuthentication yes/g' /etc/ssh/sshd_config
修改完重启 sshd 服务:
/bin/systemctl restart sshd.service
2、关闭防火墙和 SELinux(两个节点均需操作)
systemctl stop firewalld.service
systemctl disable firewalld.service
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3、配置 corefile(两个节点均需操作)
echo 'ulimit -c unlimited'>>/etc/profile
echo 'kernel.core_pattern =/opt/gdb/corefile/core-%e-%p-%t'>>/etc/sysctl.conf
使配置生效:
source /etc/profile
sysctl -p
4、检查 ntp 和 lsof(两个节点均需操作)
rpm -qa|grep ntp
若没有,使用 yum 安装 ntp:
yum install ntp
which lsof
若没有,使用 yum 安装 lsof:
yum install lsof
5、创建数据库安装用户组和用户(两个节点均需操作)
groupadd dbgrp
useradd -g dbgrp -d /home/omm -m -s /bin/bash omm
设置密码:
passwd omm
6、创建存放软件包的目录/opt/software/gaussdb 并上传安装包
mkdir -p /opt/software/gaussdb
[root@gauss1 gaussdb]# tar -zxvf GaussDB_T_1.0.2-CENTOS7.5-X86.tar.gz
[root@gauss1 gaussdb]# tar -zxvf GaussDB_T_1.0.2-CLUSTER-CentOS-64bit.tar.gz
[root@gauss1 gaussdb]# chmod 755 /opt/software/
[root@gauss1 gaussdb]# chmod -R 755 /opt/software/gaussdb/
7、从/opt/software/gaussdb/template 获取预置的配置文件,根据实际部署需求修改配置
[root@gauss1 ~]# vi /opt/software/gaussdb/clusterconfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<!-- -->
<CLUSTER>
<PARAM name="clusterName" value="GaussDB_100"/>
<PARAM name="nodeNames" value="gauss1,gauss2"/>
<PARAM name="gaussdbAppPath" value="/opt/gaussdb/app"/>
<PARAM name="gaussdbLogPath" value="/opt/gaussdb/log/"/>
<PARAM name="tmpMppdbPath" value="/opt/gaussdb/tmp/gaussdb_mppdb"/>
<PARAM name="gaussdbToolPath" value="/opt/gaussdb/huawei/wisequery"/>
<PARAM name="datanodeType" value="DN_ZENITH_HA"/>
<PARAM name="coordinatorType" value="CN_ZENITH_ZSHARDING"/>
<PARAM name="replicationCount" value="2"/>
<PARAM name="clusterType" value="mutil-AZ"/>
<!-- HA2 -->
<PARAM name="Ha2Node" value="true"/>
<PARAM name="GatewayIP" value="192.168.238.2"/>
<PARAM name="CMAgentPingTryTime" value="3"/>
<PARAM name="CMAgentPingInterval" value="5"/>
<!--floatip-->
<PARAM name="ServiceType" value="SingleService"/>
</CLUSTER>
<!-- -->
<DEVICELIST>
<!-- plat1 -->
<DEVICE sn="1000001">
<PARAM name="name" value="gauss1"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!-- IP -->
<PARAM name="backIp1" value="192.168.238.130"/>
<PARAM name="sshIp1" value="192.168.238.130"/>
<PARAM name="agentlsnPort" value="7020"/>
<!-- GTS -->
<!-- ETCD -->
<PARAM name="etcdNum" value="2"/>
<PARAM name="etcdListenPort" value="22100"/>
<PARAM name="etcdHaPort" value="22200"/>
<PARAM name="etcdListenIp1" value="192.168.238.130"/>
<PARAM name="etcdHaIp1" value="192.168.238.130"/>
<PARAM name="etcdDir1" value="/opt/gaussdb/data/data_etcd"/>
<PARAM name="etcdDir2" value="/opt/gaussdb/data/data_etcd1"/>
<!--cn-->
<!-- dn -->
<PARAM name="dataNum" value="1"/>
<PARAM name="dataPortBase" value="15402"/>
<PARAM name="dataNode1" value="/opt/gaussdb/data/data_dn1,gauss2,/opt/gaussdb/data/data_dn1"/>
</DEVICE>
<!-- plat2 -->
<DEVICE sn="1000002">
<PARAM name="name" value="gauss2"/>
<PARAM name="azName" value="AZ1"/>
<PARAM name="azPriority" value="1"/>
<!--IP -->
<PARAM name="backIp1" value="192.168.238.131"/>
<PARAM name="sshIp1" value="192.168.238.131"/>
<PARAM name="agentlsnPort" value="7020"/>
<!-- ETCD -->
<PARAM name="etcdNum" value="1"/>
<PARAM name="etcdListenPort" value="22100"/>
<PARAM name="etcdHaPort" value="22200"/>
<PARAM name="etcdListenIp1" value="192.168.238.131"/>
<PARAM name="etcdHaIp1" value="192.168.238.131"/>
<PARAM name="etcdDir1" value="/opt/gaussdb/data/data_etcd"/>
<!--cn-->
<!-- dn -->
<!-- cm -->
<PARAM name="cmsNum" value="1"/>
<PARAM name="cmServerPortBase" value="21900"/>
<PARAM name="cmServerListenIp1" value="192.168.238.131,192.168.238.130"/>
<PARAM name="cmServerHaIp1" value="192.168.238.131,192.168.238.130"/>
<PARAM name="cmServerlevel" value="1"/>
<PARAM name="cmServerRelation" value="gauss2,gauss1"/>
</DEVICE>
</DEVICELIST>
</ROOT>
8、安装 python3.7(如果环境已安装请忽略)
安装依赖包:
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y
yum install -y gcc
下载 python3 安装包:
cd /root
wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
tar -xvJf Python-3.7.0.tar.xz
编译安装:
mkdir /usr/local/python3 #创建编译安装目录
cd Python-3.7.0
./configure --prefix=/usr/local/python3
make && make install
创建软连接:
ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
验证下安装:
python3 -V
pip3 –V
9、执行 gs_preinstall 准备环境
[root@gauss1 gaussdb]# cd /opt/software/gaussdb/script/
[root@gauss1 script]# ./gs_preinstall -U omm -G dbgrp –X /opt/software/gaussdb/clusterconfig.xml
10、检测集群时间一致性
[root@gauss1 script]# ./gs_checkos -i B -h gauss1,gauss2 -X /opt/software/gaussdb/clusterconfig.xml
11、执行安装脚本
[root@gauss1 script]# su - omm
[omm@gauss1 ~]$ gs_install -X /opt/software/gaussdb/clusterconfig.xml
12、检查集群状态
安装完成!
三、安装过程中报错处理
1、执行./gs_preinstall 报 GAUSS-50204
[root@gauss1 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/gaussdb/clusterconfig.xml
[GAUSS-50204] : Failed to read cmServerRelation. The first item of cmServerRelation must be nodename.
解决:修改 clusterconfig.xml 文件中 cmServerRelation 值为 gauss2,gauss1 与 nodeNames 值对应。
2、执行./gs_preinstall 报 GAUSS-53011
[root@gauss1 script]# ./gs_preinstall -U omm -G dbgrp -X /opt/software/gaussdb/clusterconfig.xml
Parsing the configuration file.
Successfully parsed the configuration file.
Installing the tools on the local node.
Successfully installed the tools on the local node.
Are you sure you want to create trust for root (yes/no)? yes
Please enter password for root.
Password:
Creating SSH trust for the root permission user.
Successfully created SSH trust for the root permission user.
All host RAM is consistent
Distributing package.
Successfully distributed package.
Are you sure you want to create the user[omm] and create trust for it (yes/no)? yes
Installing the tools in the cluster.
Successfully installed the tools in the cluster.
Checking system resource.
[FAILURE] gauss1:
[GAUSS-53011] : Failed to check gatewayIP [192.168.238.10]. Please check gatewayIP config is vaild in your environment.
[FAILURE] gauss2:
[GAUSS-53011] : Failed to check gatewayIP [192.168.238.10]. Please check gatewayIP config is vaild in your environment.
解决:修改 clusterconfig.xml 文件中 GatewayIP 为虚拟机网关地址 192.168.238.2。
3、检测集群时间一致性有警告
[root@gauss1 script]# ./gs_checkos -i A12 -h gauss1,gauss2 -X /opt/software/gaussdb/clusterconfig.xml --detail
Root permission user has not SSH trust, create it when do checkos in remote node.
Creating SSH trust for the root permission user.
Please enter password for root.
Password:
Successfully creating SSH trust for the root permission user.
Checking items
A12.[ Time consistency status ] : Warning
[gauss1]
The current system time = (2020-03-06 16:37:43")
[gauss2]
The current system time = (2020-03-06 16:37:45")
Total numbers:1. Abnormal numbers:0. Warning numbers:1.
Clean SSH trust for the root permission user.
Successfully clean SSH trust for the root permission user.
解决:重新同步系统时间。
[root@gauss1 ~]# cd /opt/software/gaussdb/script
[root@gauss1 script]# ./gs_checkos -i C1 -h gauss1,gauss2 -X /opt/software/gaussdb/clusterconfig.xml
Root permission user has not SSH trust, create it when do checkos in remote node.
Creating SSH trust for the root permission user.
Please enter password for root.
Password:
Successfully creating SSH trust for the root permission user.
C1. [ Set NTP Service ] : Normal
NOTICE: MTU value and some warning items can NOT be set. Please do it manually.
Total numbers:1. Abnormal numbers:0. Warning numbers:0.
Clean SSH trust for the root permission user.
Successfully clean SSH trust for the root permission user.
四、集群卸载
1、omm 用户执行 gs_uninstall --delete-data -X
/opt/software/gaussdb/clusterconfig.xml
[omm@gauss1 ~]$ gs_uninstall --delete-data -X /opt/software/gaussdb/clusterconfig.xml
The data will be deleted and cannot be recovered. Are you sure you want to uninstall the cluster(yes/no)?yes
Check preinstall on every node.
Successfully checked preinstall on every node.
Stop cluster.
Check logfile path.
Clean crontab.
Clean crontab successfully.
Kill process for components.
Kill process for components successfully.
Uninstall components
Uninstall components successfully.
Modifying user's environmental variable.
Successfully modified user's environmental variable.
Clean tmp files and logs.
Successfully clean cluster's tmp and logs.
Successful uninstallation
2、清理主机的环境
[root@gauss1 script]# ./gs_postuninstall -U omm -X /opt/software/gaussdb/clusterconfig.xml
The environment will be cleaned up and cannot be recovered.Are you sure you want to clean up the environment(yes/no)?yes
Parsing the configuration file.
Successfully parsed the configuration file.
Checking unpreinstallation.
Success checking unpreinstallation.
Deleting the instance paths.
Deleting the instance paths successfully.
Clean log and dependency.
Clean up the user environment variables
Clean up the user environment variable successfully
Clean up the remote system tool environment variables
Clean up the remote system tool environment variable successfully
Clean up the local system tool environment variables
Clean up the local system tool environment variable successfully
Clean log and dependency successfully.
Postuninstall successfully.
Please close the terminal and login again, ensure that the environment variable takes effect.
作者介绍:
刘滨,中移信息数据库运维专家。拥有 Oracle OCP、OCM 认证,曾多年在银行金融保险行业一线运维,目前正在积极参与国产数据库的研究以及在移动场景下的推广等工作。
原文链接:
更多内容推荐
Qunar 数据库迁移程序
本文主要介绍了Qunar DBA部门自动化迁移平台的实现以及在公司内部使用情况,流程拆分和自由组合,能够覆盖到更多的运维场景,为DBA的操作保驾护航,解放了DBA的双手。
OpenSource ,新品发布 - AWS ParallelCluster
几十年来,编排软件在集群启动和管理中发挥了重要作用。
基于 Ceph 分布式存储的 Harbor 部署方案
本文来自RancherLabs微信公众号
dba+ 开源工具:MySQL 8.0 MGR 自动安装配置脚本
本文介绍M ySQL 8.0 MGR自动安装配置脚本。
Kubernetes 健康检查
2020 年 9 月 17 日
Eureka 进阶:健康检查和蓝绿部署
无
2018 年 10 月 12 日
搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行
我以搭建Kubernetes集群为例,与你说明搭建一个分布式环境的关键步骤,以及其中可能涉及的分布式核心知识。
2019 年 12 月 16 日
将 AWS IAM Authenticator 部署到 kops
管理身份验证协议通常是一项繁重的任务,需要管理员去维护可接受用户的列表、持续验证每个用户的权限、删除不需要访问权限的用户,甚至定期对令牌和基于证书的访问权限进行回收再利用。
怎么一劳永逸地解决数据安全问题?
安全问题可大可小,不出事情,你可能根本不会重视,但是一旦出现事故,就是灾难性的。
2020 年 4 月 27 日
Mobaxterm (安装 、汉化、使用)入门教程
简介: Mobaxterm
2020 年 6 月 3 日
一万字详解 Redis Cluster Gossip 协议
大家好,我是历小冰,今天来讲一下 Reids Cluster 的 Gossip 协议和集群操作。
TiDB Operator 实践
部署K8s及install TiDB Operator的详细实施过程
手把手教你使用 RKE 快速部署 K8S 集群并部署 Rancher HA
本文来自RancherLabs微信公众号
Ansible+Vagrant 本地部署 Kubernetes 1.4
Kubernetes 作为领先的容器集群管理工具,很多初学者都希望能第一时间学习使用它,但由于国内访问国外镜像站点很慢
Zuul 网关生产部署实践
无
2018 年 7 月 8 日
性能诊断工具
2020 年 1 月 15 日
推荐阅读
Just 5 分钟!使用 k3s 部署轻量 Kubernetes 集群快速教程
深入理解 StatefulSet(三):有状态应用实践
2018 年 10 月 8 日
GKE 创建 Pod 采用 Regional Disk 的实现
Test Kitchen 0.7.0 支持在 OpenStack 上对 Opscode Chef 进行集成测试
Kafka 认证机制用哪家?
2019 年 8 月 17 日
StackStorm 框架的浅析 (一)
大规模业务 Kubernetes 集群托管实践
2019 年 11 月 21 日
电子书
大厂实战PPT下载
换一换 陈龙 | 腾讯 专家工程师、EMR技术负责人
谭崇康 | 联想研究院 高级研究员
陈辉 | 蘑菇街 技术部架构师
评论