点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!
master host(master管理节点) segment host(segment数据节点) interconnect(网络)

Master host (master管理节点)主要负责接收并分配查询等任务,是Greenplum环境与外界通信的入口。并且,master管理节点不存储任何业务数据,只负责对各Segment数据节点抽取出的业务数据进行汇总,反馈给用户。 Standby master(Standby master管理节点)主要作为master管理节点的热备份节点,当master管理节点宕机时Standby master则扮演master管理节点角色。 Node/segment host(Segment数据节点)主要负责运行Segment instances(Segment实例)的服务进程,支撑多少个Segment实例取决于Segment数据节点CPU核数。 Primary Segment(主实例)存放数据库一部分独立数据(即每个主实例存放的数据完全不一样),主要负责处理查询等任务,每个Segment数据节点能配置多少个主实例取决于CPU等物理配置情况。当加载数据至数据库时,数据库按既定的分配算法决定实例分别存放哪些数据,当master将执行计划发给各实例,各实例主要处理其负责的那部分数据。 Mirror segment(镜像实例)主要作为Primary Segment(主实例)的热备份节点,当Primary Segment(主实例)不可用时Mirror segment(镜像实例)则扮演master管理节点角色。 Interconnect switches(互连交换机)是Greenplum数据库环境的通信核心,主要负责各节点的通信交互。
网络IP规划:

1. 系统优化
1.1 关闭防火墙以及安全策略
vi /etc/selinux/config
SELINUX=disabled
setenforce 0

systemctl stop firewalld
systemctl disable firewalld


grub2-mkconfig -o boot/grub2/grub.cfg
reboot

echo deadline > /sys/block/sda/queue/scheduler
cat /etc/ntp.conf
vi /etc/sysctl.conf
# 整个系统的内存segment的总个数
kernel.shmmni = 4096
# 用于控制内核信号量,信号量是System VIPC用于进程间通讯的方法。
kernel.sem = 500 2048000 200 4096
# 关闭sysrq键的功能,打开后有终端访问权限的用户将会拥有一些特殊的功能,建议关闭。
kernel.sysrq = 1
# 默认coredump filename是“核心”。通过设置core_uses_pid为1(默认值为0),文件名的coredump成为核心PID。
kernel.core_uses_pid = 1
# 该文件指定消息队列标识的最大数目。
kernel.msgmni = 2048
# 应该设置为1,防止SYN Flood。
net.ipv4.tcp_syncookies = 1
# 关闭路由
net.ipv4.ip_forward = 0
# 禁用所有IP源路由
net.ipv4.conf.default.accept_source_route = 0
# 默认值0,打开快速TIME_WAIT socket回收。
net.ipv4.tcp_tw_recycle = 0
# 表示SYN队列的长度,默认为1024,加大队列长度,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
# 用于向外连接的端口范围
net.ipv4.ip_local_port_range = 1025 65535
# 内核 socket 发送缓存区的最大大小
net.core.wmem_max = 2097152
# 表示内核允许分配超过所有物理内存和交换空间总和的内存。
vm.overcommit_memory = 2
# 是用来指定一个核心DumpFlie可格局名称
kernel.core_pattern=core.%e.%p.%t.%u.%g
# 禁用包过滤功能
net.ipv4.ip_forward = 0
# 防止TCP SYN 攻击
net.ipv4.tcp_syncookies = 1
# 该文件指定了从一个进程发送到另一个进程的消息最大长度。
kernel.msgmax = 65536
# 该文件指定在一个消息队列中最大的字节数
kernel.msgmnb = 65536
# 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目
net.core.netdev_max_backlog=10000
# 如果overcommit_memory=2,可以过载内存的百分比,通过以下公式来计算系统整体可用内存。
vm.overcommit_ratio=95
net.ipv4.conf.all.arp_filter = 1
# 减少系统对于swap频繁的写入,将加快应用程序之间的切换,有助于提升系统性能。默认值为60。
vm.swappiness=10
# 缺省数值是500,也就是5秒,如果系统要求稳定持续的写,可以适当降低该值,把峰值的写操作平均多次,也避免宕机丢失更多的数据
vm.dirty_background_ratio = 3
# 默认值是40,为了保持稳定,持续的写入,把这个值调整的小一些,经验值是20
vm.dirty_ratio = 20
# 操作系统允许 TIME_WAIT socket 的最大数量
net.ipv4.tcp_max_tw_buckets=100
# 默认值60,TCP保持在FIN_WAIT2状态的时间,超时后直接处于CLOSED,所以降低tcp_fin_timeout有助于减少TIME_WAIT数量。
net.ipv4.tcp_fin_timeout=10
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.all.disable_ipv6 = 1
# 内核 socket 接收缓存区默认的大小
net.core.rmem_default=33554432
# 内核 socket 接收缓存区的最大大小
net.core.rmem_max =67108864
# 该文件表示强制linux vm最低保留多少空闲内存(Kbytes)。
vm.min_free_kbytes = 15833622

1.3 配置资源限制参数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
1.4 五台节点配置hosts解析
vi /etc/hosts
192.11.128.1 node-10-jt-com
192.11.128.9 node-11-jt-com
192.11.128.10 node-12-jt-com
192.11.128.11 node-13-jt-com
192.11.128.7 node-14-jt-com
2. 五台机器磁盘挂载
pvcreate /dev/sdf
pvcreate /dev/sdg
pvcreate /dev/sdh
pvcreate /dev/sdi
pvcreate /dev/sdj
pvcreate /dev/sdk
pvcreate /dev/sdl
pvcreate /dev/sdm
pvcreate /dev/sdn
vgcreate gp /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk /dev/sdl /dev/sdm /dev/sdn
lvcreate -L 5148508M -n gp2 gp
mkfs.xfs /dev/gp/gp2
vi /etc/fstab
/dev/gp/gp2 /data xfs noatime 0 0
mount -a
3. Greenplum的安装
3.1 五台节点分别进行如下操作
tar xf Greenplum.tar.gz
cd Greenplum
rpm -Uvh e2fsprogs-1.42.9-19.el7.x86_64.rpm \
e2fsprogs-libs-1.42.9-19.el7.x86_64.rpm \
greenplum-db-6.17.1-rhel7-x86_64.rpm \
keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm \
krb5-devel-1.15.1-50.el7.x86_64.rpm \
krb5-libs-1.15.1-50.el7.x86_64.rpm \
libcom_err-1.42.9-19.el7.x86_64.rpm \
libcom_err-devel-1.42.9-19.el7.x86_64.rpm \
libevent-2.0.21-4.el7.x86_64.rpm \
libkadm5-1.15.1-50.el7.x86_64.rpm \
libselinux-2.5-15.el7.x86_64.rpm \
libselinux-devel-2.5-15.el7.x86_64.rpm \
libselinux-python-2.5-15.el7.x86_64.rpm \
libselinux-utils-2.5-15.el7.x86_64.rpm \
libsepol-devel-2.5-10.el7.x86_64.rpm \
libss-1.42.9-19.el7.x86_64.rpm \
libverto-devel-0.2.5-4.el7.x86_64.rpm \
libyaml-0.1.4-11.el7_0.x86_64.rpm \
pcre-devel-8.32-17.el7.x86_64.rpm
groupadd -g 1001 gpadmin
useradd -u 1001 -g 1001 gpadmin
passwd gpadmin
QeR3@#P3&0
chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.17.1
chown -R gpadmin:gpadmin /usr/local/greenplum-db
su - gpadmin
vi /home/gpadmin/.bash_profile
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
export PGPORT=5432
source /home/gpadmin/.bash_profile
3.2 node-10-jt-com配置互信
su - gpadmin
rm -rf /home/gpadmin/.ssh
ssh-keygen
cd /home/gpadmin/.ssh
mv id_rsa.pub authorized_keys
scp -r /home/gpadmin/.ssh 192.11.128.9:/home/gpadmin/.ssh
scp -r /home/gpadmin/.ssh 192.11.128.10:/home/gpadmin/.ssh
scp -r /home/gpadmin/.ssh 192.11.128.11:/home/gpadmin/.ssh
scp -r /home/gpadmin/.ssh 192.11.128.7:/home/gpadmin/.ssh
4. 创建数据目录
4.1 五台节点分别进行如下操作
mkdir -p /data/master
mkdir -p /data/primary
mkdir -p /data/mirror
chown -R gpadmin. /data
5. 进行初始化
5.1 node-10-jt-com配置如下
mkdir /home/gpadmin/gpconfigs/
vi /home/gpadmin/gpconfigs/gpinitsystem_config
ARRAY_NAME="Greenplum"
SEG_PREFIX=gpseg
PORT_BASE=40000
declare -a DATA_DIRECTORY=(/data/primary)
MASTER_HOSTNAME=node-10-jt-com
MASTER_DIRECTORY=/data/master
MASTER_PORT=5432
TRUSTED_SHELL=/usr/bin/ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=50000
declare -a MIRROR_DATA_DIRECTORY=(/data/mirror)
REPLICATION_PORT_BASE=41000
MIRROR_REPLICATION_PORT_BASE=51000
vi /home/gpadmin/gpconfigs/hostfile_gpinitsystem
node-10-jt-com
node-11-jt-com
node-12-jt-com
node-13-jt-com
node-14-jt-com
cd
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config
--locale=C -h /home/gpadmin/gpconfigs/hostfile_gpinitsystem –mirror-mode=spread


psql -d postgres
select * from gp_segment_configuration;

5.2 修改node-10-jt-com规则
vi /data/master/gpseg-1/pg_hba.conf
host all gpadmin 0.0.0.0/0 md5
psql -U gpadmin -d postgres
\password
@#1%%gDPW
5.3 使用gpconfig修改数据库参数
gpconfig -c gp_contentid -v -1
gpconfig -c gp_vmem_protect_limit -v 54272
gpconfig -c work_mem -v 128MB
gpconfig -c statement_mem -v 256MB
gpconfig -c gp_resqueue_priority_cpucores_per_segment -v 96 -m 48
gpconfig -c maintenance_work_mem -v 256MB
gpconfig -c effective_cache_size -v 24576MB
gpconfig -c gp_enable_gpperfmon -v off
gpconfig -c enable_seqscan -v on
gpconfig -c log_statement -v ddl
gpconfig -c log_min_duration_statement -v 500
gpconfig -c gp_enable_global_deadlock_detector -v on
gpconfig -c checkpoint_completion_target -v 0.9
gpconfig -c log_checkpoints -v on
gpconfig -c wal_keep_segments -v 1024
gpconfig -c max_prepared_transactions -v 2000
gpconfig -c shared_buffers -v 16000MB
gpconfig -c gp_interconnect_type -v udpifc
gpconfig -c optimizer -v off
gpconfig -c max_connections -v 2500 -m 500
gpconfig -c gp_interconnect_queue_depth -v 10
gpconfig -c logging_collector -v 'on'
gpconfig -c log_autovacuum_min_duration -v '0'
gpconfig -c log_checkpoints -v 'on'
gpconfig -c log_connections -v 'off'
gpconfig -c log_disconnections -v 'off'
gpconfig -c log_duration -v 'off'
gpconfig -c log_lock_waits -v 'on'
gpconfig -c log_min_error_statement -v 'error'
gpconfig -c log_min_messages -v 'warning'
gpconfig -c log_temp_files -v '0'
6. 增加冗余Master节点
1)node-11-jt-com创建数据目录
su - gpadmin
mkdir -p /data/master
2)node-10-jt-com增添standby节点
gpinitstandby -s node-11-jt-com







本文作者:张学衡(上海新炬中北团队)
本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




