基于虚拟子集群模式的扩容缩容实现
虚拟子集群
OushuDB 虚拟集群是若干节点与资源队列的组合,其对象和功能大部分运行在资源管理器进程中。在使用过程中会涉及到动态扩容和缩容,从而实现资源的动态调整。今天主要介绍一下虚拟子集群的动态扩容和缩容。
扩容和缩容的服务器基础配置准备
服务器硬件要求
服务器硬件要求与其他同虚拟子集群的服务器配置一致,包括CPU/内存/磁盘IO/网络等一致,避免产生短板效应,导致其余机器发挥不出应有的性能。
服务器配置修改要求
sysctl.conf中追加如下配置
kernel.shmmax = 1000000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 200000
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 10000 65535
net.core.netdev_max_backlog = 200000
fs.nr_open = 3000000
kernel.threads-max = 798720
kernel.pid_max = 798720
net.core.rmem_max=2097152
net.core.wmem_max=2097152
net.core.somaxconn=4096
/etc/security/limits.d/gpadmin.conf 新增如下内容
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 131072
* hard nproc 131072
gpadmin soft core unlimited
gpadmin hard core unlimited
开启core dump
mkdir -p /data/cores
chmod 777 /data/cores
echo "/data/cores/core-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern
免密配置
#配置与其他服务器gpadmin用户一致的密码
#在master节点配置hhostfile,写入所有服务器主机名
#执行以下命令,配置免密
sudo echo 'password' | sudo passwd --stdin gpadmin
su - gpadmin
source /usr/local/hawq/greenplum_path.sh
vim hhostfile
#将hawq集群所有节点录入hhostfile文件
hawq ssh-exkeys -f hhostfile
#并且按照提示输入相应节点的gpadmin用户密码
数据目录创建
mkdir -p /data/hawq/tmp
mkdir -p /data/hawq/segmentdd
chown -R gpadmin:gpadmin /data/hawq
扩容
安装rpm包
rpm -ivh hawq-4.6.0.0-31547.x86_64.rpm
同步OushuDB配置
#主节点gpadmin用户执行以下命令
source /usr/local/hawq/greenplum_path.sh
hawq scp -r -f hostfile /usr/local/hawq/etc =:/usr/local/hawq
初始化服务
source /usr/local/hawq/greenplum_path.sh
hawq init segment -a
在master节点查看初始化后是否检测到
psql -d postgres
select * from gp_segment_configuration ;
--可以检测到扩容后的机器为isolated segment
扩容至需要的虚拟子集群
alter vcluster vc_default with (segments='$hostname');
#hostname 为具体扩容节点IP
缩容
动态修改虚拟子集群的配置
alter vcluster vc_default without (segments='$hostname');
#hostname 为具体缩容节点IP
停止缩容服务器上面的服务
source /usr/local/hawq/greenplum_path.sh
hawq stop segment -a