admin管理员组

文章数量:1658819

腾讯TCHouse系列-01安装腾讯TCHouse三节点集群

背景
近期测试腾讯大数据产品,涉及到TCHouse-P和WEDATA产品,现在前期做POC测试。经了解TCHouse-P就是TBASE V2的升级版,可以理解TBASE V3,只是在原有V2基础上做了升级。产品名称变更而已。同时,它属于MPP数据库范畴。WEDATA是腾讯实现数据集成,数据分析的大数据场景的产品,我们本次做的POC是从ORACLE(贴源层数据库)抽取数据到TCHouse-P,然后再由WEDATA进行数据集成,主题建设,最终分析,呈现到应用层。该项目硬件基于ARM架构,操作系统基于中科Kylin V10。
因为之前没有做此类项目,所以对里面的概念目前只能是一知半解,有问题的可以互相探讨哦!

机器配置及TCHouse组件部署分布:
项目 值(检验环境)
机器数 3台
CPU 8核
内存 16G
系统盘 50G
数据盘 200G
网卡设备名称 enp4s0
网卡IP 机器1:192.168.1.250 OssCenterMaster/Confdb/Etcd
机器2:192.168.1.11 OssCenterSlave/Confdb/Alarm/Etcd
机器3:192.168.1.130 OssCenterSlave/Etcd

部署包目录介绍
目录名 说明
/tbase_mgr 安装程序及配置
/tbase_mirror 安装程序需要的rpm包

服务器环境准备
更改主机名

#hostnamectl set-hostname tchouse1
#hostnamectl set-hostname tchouse2
#hostnamectl set-hostname tchouse3

#vi /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.250   tchouse1
192.168.1.11   tchouse2
192.168.1.130   tchouse3

--确认localhost解释没被禁用
# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost

确保上面这一行没有给注释掉


2.1、测试数据盘的随机同步写入性能
time dd if=/dev/zero of=test bs=8k count=51200 oflag=dsync

参考,普通sata ssd单盘写入能力大约是30-50mb/s,12个sas 1.2T 盘+带电带缓存的raid卡,写入能力大约30-50mb/s,ts85机型可以到达100mb/s
禁止:多块数据盘禁止使用软 raid5
磁盘同步写入要求不要小于 3 MB/s ,否则部署可能会因为磁盘的 IO 问题导致部署失败

较准机器的时间
#设置时区
# timedatectl set-timezone Asia/Shanghai

# crontab -e
*/20 * * * * /usr/sbin/ntpdate ntpupdate.tencentyun >/dev/null &

ntp服务器可自行选择

关闭selinux
#vim /etc/sysconfig/selinux
SELINUX=disabled

使用getenforce命令检查selinux的状态

# getenforce
Disabled

--firewalld配置(centos7默认firewall)
systemctl stop firewalld.service
systemctl disable firewalld.service 

--修改limits.conf参数(生产环境)
Agent机器可以在后面添加机器时一起配置。

#  vim /etc/security/limits.conf
#准许单个用户打开文件数
* soft    nofile  655350  
* hard    nofile  655350  
#准放单个用户运行的进程数
* soft    nproc   655350  
* hard    nproc   655350  
#限制内核文件的大小
* soft    core    unlimited  
* hard    core    unlimited  

# rm /etc/security/limits.d/* -f
--修改内核参数sysctl.conf(生产环境)
Agent机器可以在后面添加机器时一起配置。

#  vim /etc/sysctl.conf
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmall = 4294967296 
kernel.shmmax=137438953472  
kernel.shmmni = 4096 
kernel.sem = 50100 64128000 50100 1280
fs.file-max = 6553600
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 32768 65535
net.ipv4.tcp_keepalive_time = 60   
net.ipv4.tcp_keepalive_probes = 6  
net.ipv4.tcp_keepalive_intvl = 10
net.ipv6.conf.all.forwarding=1
net.ipv4.ip_forward=1
vm.dirty_background_bytes = 102400000
vm.dirty_background_ratio = 5
vm.dirty_ratio = 10
vm.min_free_kbytes = 262144
kernel.core_pattern = core.%p
#暂不要开启 
#vm.overcommit_memory = 2 
#vm.overcommit_ratio = 95 
#这个用于local port快速回收和复用
#net.ipv4.tcp_tw_recycle = 1 
#net.ipv4.tcp_tw_reuse = 1


--修改机器的system.conf
Confdb和etcd的limit资源限制受这里的参数影响。

# vim /etc/systemd/system.conf

DefaultLimitCORE=infinity
DefaultLimitNOFILE=655350
DefaultLimitNPROC=655350

生效
# systemctl daemon-reexec

--修改/etc/ssh/sshd_config配置
# vi /etc/ssh/sshd_config
UseDNS no

修改完成后重启sshd服务
# systemctl restart sshd.service

--确认/dev/shm内存盘已经挂载
# df
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       51474044 14512356  34340324  30% /
devtmpfs         3995696        0   3995696   0% /dev
tmpfs            4005200     2748   4002452   1% /dev/shm
tmpfs            4005200      660   4004540   1% /run
tmpfs            4005200        0   4005200   0% /sys/fs/cgroup
tmpfs             801040        0    801040   0% /run/user/0
/dev/vdb1      209611780 43602420 166009360  21% /data
tmpfs             801040        0    801040   0% /run/user/1000

TCHouse节点启动时需要需要创建内存段,所以必需确认有挂载tmpfs 到/dev/shm,如果没有挂载可以参考这个挂载

# mount -t tmpfs tmp /dev/shm

--确认普通用户可以使用ping命令
Ping命令用于机器探活,如果操作系统用户tbase无法使用该命令,则会导致集群节点自动停止,主从倒换后备机异常。

ping命令在运行中采用了ICMP协议,需要发送ICMP报文。但是:只有root用户才能建立ICMP报文。而正常情况下,ping命令的权限应为 -rwsr-xr-x,即带有suid的文件,一旦该权限被修改,则普通用户无法正常使用该命令, 

#ping x.x.x.x 

如果不能执行ping命令,则可以使用下面命令修正
# chmod u+s /usr/bin/ping

--禁止大页内存预申请
#检查大页内存的预申请量
[root@localhost song]# cat /proc/meminfo | grep Hugepagesize
Hugepagesize:     524288 kB

[root@localhost song]# cat /proc/meminfo |grep -i huge
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:     524288 kB
Hugetlb:               0 kB

[root@localhost song]# cat /sys/kernel/mm/transparent_hugepage/enabled
always [madvise] never

#修改/etc/default/grub文件
编辑/etc/default/grub文件,GRUB_CMDLINE_LINUX配置参数"transparent_hugepage=never",下面是编辑完之后的文件内容:
vi /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=1024M,high rd.lvm.lv=klas/root rd.lvm.lv=klas/swap video=VGA-1:640x480-32@60me rhgb quiet  smmu.bypassdev=0x1000:0x17 smmu.bypassdev=0x1000:0x15 video=efifb:off video=VGA-1:640x480-32@60me transparent_hugepage=never"

-----------------------------
UEFI传统的Legacy BIOS启动 grub引导文件路径不一致,先需要查看系统是UEFI启动还是传统的Legacy BIOS启动
#如果输出是UEFI则表示是UEFI启动
#如果输出是BIOS则表示是传统的Legacy BIOS启动

传统的Legacy BIOS启动文件路径:
/boot/grub2/grub.cfg

UEFI启动文件路径:
/boot/efi/EFI/kylin/grub.cfg
-----------------------------

[root@localhost song]# [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
UEFI

#根据查到的实际情况更新grub引导文件
grub2-mkconfig -o /boot/efi/EFI/kylin/grub.cfg

#重启服务器使其生效
reboot

cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]

#cat /proc/meminfo | grep HugePages_Total
确认HugePages_Total值为0

--修改操作系统字符编码
确认操作系统的字符编码

# echo $LANG
en_US.utf8

如果不是,可以这样修改
# vim /etc/profile
#最后一行增加
export LANG='en_US.utf8'

确认生效
# source /etc/profile
echo $LANG
	en_US.utf8
	
--修改umask
确认操作系统的umask值
# umask 
0022
# umask                                                                                                                                                 
0002
如果不是0022或者0002,则要做如下调整

# vi /etc/bashrc 
最后一行添加
umask 0022

确认生效
# source /etc/bashrc
# umask
0022

--CPU工作模式确认
$ cpupower frequency-info
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us
  hardware limits: 1000 MHz - 2.50 GHz
  available frequency steps:  2.50 GHz, 2.50 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz
  available cpufreq governors: conservative ondemand userspace powersave performance
  current policy: frequency should be within 1000 MHz and 2.50 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 2.50 GHz (asserted by call to kernel)
  boost state support:
    Supported: yes
Active: yes

如果有看到  performance 就说明机器开启了性能模式 ,如果是conservative就是不对

--网卡网速确认
$   ethtool  enp4s0
Settings for enp4s0:
        Supported ports: [ ]
        Supported link modes:   Not reported
        Supported pause frame use: No
        Supports auto-negotiation: No
        Supported FEC modes: Not reported
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Advertised FEC modes: Not reported
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: Other
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: off
        Link detected: yes

--关闭swap
# swapoff -a
free -h


--配置kdump的存储路径到大容量目录下
# systemctl status kdump 
# systemctl enable kdump 
配置 kdump 
vi /etc/kdump.conf

#指定 coredump 文件存储位置,请放置到一个较大磁盘空间的位置 
path /data/kdumplog
#增加-c 参数,代表压缩 coredump 文件
core_collector makedumpfile -c -l --message-level 1 -d 31 

--打开 huang panic 
#设置 hung task 后是否触发 panic
# vi /etc/sysctl.conf 
--------------------------------------------------- 
kernel.hung_task_panic=1 
--------------------------------------------------- 
#使配置生效 
# sysctl -p

--手动触发 kdump 方法(用于测试 kdump)

echo c > /proc/sysrq-trigger --这里服务器会生成 kdump 文件并重启 
重启后可以看到这些信息 

[tbase@VM-0-69-centos 127.0.0.1-2023-07-03-11:43:40]$cd /data/kdumplog/127.0.0.1-2023-07-03-11\:43\:40/ 

[tbase@VM-0-69-centos 127.0.0.1-2023-07-03-11:43:40]$ ls -l
total 147644
-rw------- 1 root root 151138677 Jul 3 11:43 vmcore 
-rw-r--r-- 1 root root 44056 Jul 3 11:43 vmcore-dmesg.txt  
--------------------------------------------------

--检查是否安装了中文字符集
因为初始化节点需要使用选项--locale=zh_CN.UTF-8,所以需要操作系统支持中文字符集

[root@VM-0-30-centos ~]# locale -a | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

如果检查不存在,则使用下面方法可以安装中文字符集
yum install *zh_CN*

-------------------平台程序部署
–上传安装包并解压
上传到/data目录下,注意一定不要放到/tmp目录下面安装

# pwd
# rz
/data
解压
tar -zxf  tbase-install-package-*.tar.gz  
这个包包括了全部的操作系统基础环境, 需要根据当前的操作系统和架构进入合适的目录。我的环境由于是arm64中科麒麟环境,
所以与标准安装文档有出入(例如 Centos7+x86架构, 进入data/build/CentosX86/Centos7目录安装)

目录解压后到tbase_mirror/pgxzm目录下确认是否有oss或者tbase内核rpm包,如果没有请放上相应的rpm包,如:
# cd INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mirror/pgxzm/
cp /data/OSS/tbase_oss-2.15.23-20240829-155008-e8c160f.rhel.arm64.rpm  .
cp /data/neihe/tbase_pgxz-3.16.4.7-i.aarch64.rpm .
# ll tbase_oss* tbase_pgxz*

-rw-r--r-- 1 root root 65429620 Mar  2 21:10 tbase_oss-2.15.18.6.2-i.x86_64.rpm
-rw-r--r-- 1 root root 31598392 Mar  4 23:35 tbase_pgxz-3.15-i.x86_64.rpm
说明:内核包版本是3.x版本的rpm包。尽可能的使用最新版本的RPM包。

--配置安装选项

# vi  /data/INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mgr/conf/role.info 
#eth ip ssh_port idc_name root password role( OssCenterMaster OssCenterSlave OssAgent Confdb Alarm Etcd)
#Notice: The machine that will be installed OssCenterMaster or OssCenterSlave can't be installed OssAgent

enp4s0 192.168.1.250 22 idc_1 root Hopesen@2024 OssCenterMaster|Confdb|Etcd
enp4s0 192.168.1.11	 22 idc_1 root Hopesen@2024 OssCenterSlave|Confdb|Alarm|Etcd
enp4s0 192.168.1.130 22 idc_1 root Hopesen@2024 OssCenterSlave|Confdb|Etcd

Etcd组件是confdb倒换和center倒换的容灾组件,Etcd部署个数必须是奇数个,Etcd建议跟center或者confdb部署在一起,
OssCenter支持一主多备。如果机器数量有足够多,除部署以上所示组件的两台机器,
其他机器可以只部署OssAgent即可,(推荐最少部署3个Etcd组件,提高可靠性)。
注意:一台机器不能同时安装 center 和 agent ,否则会导致安装失败,如下面就是错误的配置。
-------------------------------------------
注意:ssh的端口号需要与服务器配置一致
eth0 172.16.0.69 22 idc_1 root xxxxxxxxxx OssCenterMaster|Confdb|Etcd|OssAgent 
单中心生产环境 role.info 配置参考
eth0 172.16.16.7 22 idc_1 root !1Tencent123@# OssCenterMaster|Confdb|Etcd 
eth0 172.16.16.9 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Alarm|Etcd 
eth0 172.16.16.10 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd 
两地三中心生产环境 role.info 三节点配置参考
eth0 172.16.16.7 22 idc_1 root !1Tencent123@# OssCenterMaster|Confdb|Etcd 
eth0 192.16.16.10 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd
eth0 192.168.1.12 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd 
两地三中心生产环境 role.info 五节点配置参考
eth0 172.16.16.7 22 idc_1 root !1Tencent123@# OssCenterMaster|Confdb|Etcd 
eth0 172.16.16.9 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Alarm|Etcd 
eth0 192.16.16.10 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd
eth0 192.16.16.11 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd
eth0 192.168.1.12 22 idc_1 root !1Tencent123@# OssCenterSlave|Confdb|Etcd 
--------------------------------------------

--修改操作系统用户 tbase初始化密码
如果你要修改tbase操作系统用户的初始化密码,则可以配置这个文件,有一些操作系统对用户的密码是有要求的,如kylinv10,uos,redhat等,配置文件名称
/data/INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mgr/conf/oss/oss_init.conf

vi /data/INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mgr/conf/oss/oss_init.conf
PGXZ_OS_USER=tbase
PGXZ_OS_HOME=/data/tbase
PGXZ_OS_PSWD=WWW.root123  --默认是Tbase@2017一定要更改, 可能中科麒麟安全策略的设置,密码Tbase@2017中包含tbase,换个密码就可以了

PGXZ_OS_BIN_DIR=${PGXZ_OS_HOME}/install
PGXZ_OS_DATA_DIR=${PGXZ_OS_HOME}/data

CONFDB_OS_DATA_DIR=${PGXZ_OS_HOME}/confdb

PGXZ_OS_ETH=eth_${PGXZ_OS_USER}

PGXZ_YUM_DIR=$(cd ../tbase_mirror; pwd)
PGXZ_YUM_PORT=8018

--运行安装程序
使用root用户执行

# cd /data/INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mgr
chmod u+x tbase_mgr.sh
./tbase_mgr.sh install

#如果安装的是ipv6环境, 执行  ./tbase_mgr.sh install inet6

Hey, Welcome and now we will install TBase OSS by the flowing steps: 
        0.  Check role configuration read from conf/role.info ... 
        1.  Install some base rpm packages such as dos2unix/createrepo/expect and so on ... 
        2.  Check root password and do some initalization on all machines read from conf/role.info ... 
        3.  Check package requires ... 
        4.  Create OS user tbase specifided in conf/oss/oss_init.conf  ... 
        5.  Create yum repository which store all the rpm packages needed by TBase OSS ... 
        6.  Install and Start Etcds ... 
        7.  Install and Start all Confdb ... 
        8.  Install and Start Alarm Server ... 
        9.  Install and Start OssCenterMaster and all OssCenterSlaves ... 
        10. Install and Start all Agents ... 
        11. Install default tbase_pgxz package... 
        

Ready to continue (Yy|Nn) ? Y

继续安装按Y或y键,退出安装程序按N或n键,这里按Y继续进行即可,然后可以喝咖啡等待安装工作完成(安装的进度视机器的性能而定),一定要进入 tbase_mgr目录下执行
sh tbase_mgr.sh install
如果你是centos 7.x的系统,则使用sh tbase_mgr_root.sh install


最后安装成功后提示
Successed to install TBase OSS, visit http://192.168.1.150:8080 to continue ...

访问集群管理平台的的地址为
http://192.168.1.150:8080
登录用户名:admin 登录密码:Admin@TbaseV2

-------------第一次报错

        0.  Now start to check role configuration ...

        1.  Now start to install dos2unix/createrepo/expect and so on                                                     ...

        2.  Now start to check root password and do some initalization                                                     on all machines ...
[ 2024-09-17 12:53:34 ] -->start to run force clean

        3.  Now start to check package requires ...

        4.  Now start to create OS user tbase ...

        [ERROR]: from [create_user] Abort progress due to an error occurs during step above, check logs/tbase_mgr.sh.info.log.2024-09-17 for more details ...

--可能中科麒麟安全策略的设置,密码Tbase@2017中包含tbase,换个密码就可以了

vi /data/INSTALL/KylinV10SP1_ARM/KylinV10/tbase_mgr/conf/oss/oss_init.conf
PGXZ_OS_USER=tbase
PGXZ_OS_HOME=/data/tbase
PGXZ_OS_PSWD=WWW.root123  --默认是Tbase@2017一定要更改, 可能中科麒麟安全策略的设置,密码Tbase@2017中包含tbase,换个密码就可以了

----------------------

--yum安装源恢复方法
使用root用户

# rm -rf /etc/yum.repos.d/PGXZ.repo
# mv /etc/yum.repos.d/backup/* /etc/yum.repos.d/
# yum makecache
# yum clean all

所有机器都要恢复,如不再需要安装其它软件即可以不需要恢复

--资源limit限制检查
--stolon组件
# ps -ewf |grep stolon-|grep -v color
stolon   15973     1  0 Feb10 ?        00:44:34 /usr/bin/stolon-keeper
stolon   16060     1  0 Feb10 ?        00:11:46 /usr/bin/stolon-proxy
stolon   16148     1  0 Feb10 ?        00:19:41 /usr/bin/stolon-sentinel
# cat /proc/78134/limits 
主要看
Max processes             655350               655350               processes 
Max open files            655350               655350               files     
 
#cat /proc/16060/limits
#cat /proc/16148/limits


--confdb组件
所有安装了confdb的机器都要检查

# ps -ewf |grep confdb|grep -v color
stolon   16550 15973  0 Feb11 ?        02:10:04 /usr/pgsql-10/bin/postgres -D /data/tbase/confdb/postgres -c unix_socket_directories=/tmp
# cat /proc/16550/limits 
主要看    
Max processes             655350               655350               processes 
Max open files            655350               655350               files     


--etcd组件
所有安装了confdb的机器都要检查
# ps -ef |grep etcd|grep -v color
etcd     14818     1  0 Feb10 ?        02:14:40 /usr/bin/etcd --name=etcd1 --data-dir=/data/etcd_data --listen-client-urls=http://0.0.0.0:2379,http://0.0.0.0:4001

# cat /proc/14818/limits 
主要看
Max processes             655350               655350               processes 
Max open files            65536                65536                files

本文标签: 腾讯节点集群系列TCHouse