CentOS7 部署Greenplum6

环境准备

3个节点,每个节点8核、32G内存、1TB硬盘

对应ip和角色划分为:

#主master
192.168.31.101 gp1
#从master,4个主segment 4个从segment 192.168.31.102 gp2
#4个主segment 4个从segment 192.168.31.103 gp3

下载GP6

地址:https://github.com/greenplum-db/gpdb/releases/download/6.19.3/open-source-greenplum-db-6.19.3-rhel7-x86_64.rpm

设置host和防火墙

在每个节点上,设置host,并修改hosts文件,执行:

hostnamectl set-hostname gp1

cat
>> /etc/hosts <<EOF 192.168.31.101 gp1 192.168.31.102 gp2 192.168.31.103 gp3 EOF

在每个节点上,设置防火墙,执行:

systemctl start firewalld && systemctl enable firewalld
#5432是gp访问端口
firewall-cmd --permanent --zone=public --add-port=5432/tcp
#10000-10010是primary端口,当前配置最多支持10个seg(?待测试),跟随PORT_BASE变化
firewall-cmd --permanent --zone=public --add-port=10000-10010/tcp
#11000-11010是mirror端口,当前配置最多支持10个seg(?待测试),跟随MIRROR_PORT_BASE变化
firewall-cmd --permanent --zone=public --add-port=11000-11010/tcp
#开启3个节点的内网互通
firewall-cmd --permanent --zone=trusted --add-source=192.168.36.57
firewall-cmd --permanent --zone=trusted --add-source=192.168.36.78
firewall-cmd --permanent --zone=trusted --add-source=192.168.36.94
#reload使配置生效
firewall-cmd --reload

新建gpadmin用户并配置免登录

在每个节点上,执行:

groupadd gpadmin && useradd -g gpadmin gpadmin && echo "gpadmin" | passwd --stdin gpadmin

在gp1节点上,执行:

su - gpadmin

ssh-keygen
-t rsa -P "" -f ~/.ssh/id_rsa ssh-copy-id gp1 ssh-copy-id gp2 ssh-copy-id gp3

修改内核配置

在每个节点上,执行:

cat >> /etc/sysctl.conf << EOF
# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages
kernel.shmall = 197951838
# kernel.shmmax = kernel.shmall * PAGE_SIZE 
kernel.shmmax = 810810728448
kernel.shmmni = 4096
vm.overcommit_memory = 2 # See Segment Host Memory
vm.overcommit_ratio = 95 # See Segment Host Memory

net.ipv4.ip_local_port_range = 10000 65535 # See Port Settings
kernel.sem = 250 2048000 200 8192
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ipfrag_high_thresh = 41943040
net.ipv4.ipfrag_low_thresh = 31457280
net.ipv4.ipfrag_time = 60
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.swappiness = 10
vm.zone_reclaim_mode = 0
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.dirty_background_ratio = 0 # See System Memory
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
EOF

修改kernel.sem

echo "kernel.sem = 50100 128256000 50100 2560" >> /etc/sysctl.conf

修改资源限制

cat >> /etc/security/limits.conf <<EOF
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
EOF

修改完成后,需重启系统,使配置生效

安装GP6

在所有节点,执行:

yum update -y
yum install vim tree nload wget curl net-tools -y
yum install open-source-greenplum-db*.rpm -y

GP6初始化

新建 gpinit_config,执行:

cat > /usr/local/greenplum-db/gpinit_config << EOF
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=10000    # primary端口起始
### 四个相同的目录表示在一个Segment机器上创建四个Segment实例 ###
declare -a DATA_DIRECTORY=(/data/primary /data/primary /data/primary /data/primary)
MASTER_HOSTNAME=gp1
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432    ### 监听端口
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=11000   ### mirror端口起始
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror /data/mirror /data/mirror)
EOF

 新建 hostfile_segments,执行:

cat > /usr/local/greenplum-db/hostfile_segments << EOF
gp2
gp3
EOF

修改权限(所有节点),执行:

chown -R gpadmin:gpadmin /usr/local/greenplum-db*

初始化数据目录,在master(即gp1)节点,执行:

mkdir -p /data/master && chown -R gpadmin:gpadmin /data

初始化数据目录,在gp2、gp3节点,执行:

mkdir -p /data/primary && mkdir -p /data/mirror && chown -R gpadmin:gpadmin /data

初始化数据库,在master(即gp1)节点,执行:

su - gpadmin

echo 'source /usr/local/greenplum-db/greenplum_path.sh' >> ~/.bashrc
echo 'export MASTER_DATA_DIRECTORY=/data/master/gpseg-1' >> ~/.bashrc

source /usr/local/greenplum-db/greenplum_path.sh
gpinitsystem -c /usr/local/greenplum-db/gpinit_config -h /usr/local/greenplum-db/hostfile_segments

设置数据库密码,在master(即gp1)节点,执行:

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && psql -d postgres

然后执行SQL:

alter role gpadmin with password '1234@qweR';

开启远程访问,在master(即gp1)节点,执行:

cat >> /data/master/gpseg-1/pg_hba.conf << EOF
host     all         gpadmin        0.0.0.0/0        md5
local    all         gpadmin         md5
EOF

GP6其他操作

启动

在master(即gp1)节点,执行:

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && export MASTER_DATA_DIRECTORY=/data/master/gpseg-1 && gpstart

关闭

在master(即gp1)节点,执行:

su - gpadmin
source /usr/local/greenplum-db/greenplum_path.sh && export MASTER_DATA_DIRECTORY=/data/master/gpseg-1 && gpstop

远程访问

连接信息如下:

主机:192.168.31.101
端口:5432
初始数据库:postgres
用户名:gpadmin
密码:1234@qweR

问题解决

使用gpstate等命令,提示 “Error: unable to import module: No module named psutil”

解决方案:安装psutil

#下载get-pip.py,python2
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
#下载get-pip.py,python3
wget https://bootstrap.pypa.io/get-pip.py

#安装pip
python get-pip.py

#安装pstuil
pip install psutil

 

posted @ 2022-11-28 18:10  david123102  阅读(222)  评论(0编辑  收藏  举报