【GP6安装配置】 Greenplum6.2.1 安装手记(上)

作者:lianghc

文档说明
      20191212 号,pivotal 发布gp6.2.1,适逢公司gp集群扩建升级,需要确定版本,所以安装gp6的版本与gp5做比对测试。
本文档参考官方文档,按照官方标准步骤一步一步安装完成。文档中列举了gp6 与旧版本安装的差异点。

目录

作者:lianghc

1. 软硬件说明及必要依赖安装

1.1 软硬件说明

1.2 必要依赖安装

 1.2.1 批量安装依赖包(需联网)

1.2.2 内网机需要人工下载后再上传至服务器

1.2.3 linux中离线下载

2 配置系统参数

2.1 关闭防火墙

2.1.1 检查SElinux(Security-Enhanced Linux)

2.1.2 检查 iptables 状态

2.1.3  检查firewalld(centos6 一般没有)

2.2 配置host

2.2.1 配置每台机器host 

2.2.2 配置/etc/hosts

2.3 配置sysctl.conf 

2.4 系统资源限制

2.5 XFS挂载选项

2.6 磁盘I/O 设置

2.7 修改rc.local 权限

2.8 磁盘I/O调度算法

2.9 Transparent Huge Pages (THP) 

2.10 IPC Object Removal

2.11 SSH连接阈值

2.12 同步集群时钟(NTP)

2.13 检查字符集

2.14 创建gpadmin用户


本文分为两部分

参数配置:【GP6安装配置】 Greenplum6.2.1 安装手记(上) 

执行安装:【GP6安装配置】 Greenplum6.2.1 安装手记(下)

时间

20191217

安装版本

greenplum 6.2.1

下载地址

https://network.pivotal.io/products/pivotal-gpdb/#/releases/526878

官方安装文档

https://gpdb.docs.pivotal.io/6-2/install_guide/platform-requirements.html

中文社区安装文档

https://greenplum.cn/2019/11/30/how-to-set-up-greenplum-6-1-cluster/

 

1. 软硬件说明及必要依赖安装


1.1 软硬件说明

1. 系统版本:redhat6.8 
2. 硬件:3台虚拟机,2核,16G内存,50G硬盘
3. 实验节点规划一个master, 4个segment,4个mirror,无standby

主机ip

host

节点规划

172.28.25.201

mdw

master

172.28.25.202

sdw1

seg1,seg2,mirror3,mirror4

172.28.25.203

sdw2

seg3,seg4,mirror1,mirror2

 

1.2 必要依赖安装

## 与旧版本差异点
gp4.x 无安装依赖检查步骤
gp5.x 使用rpm安装需要检查安装依赖
gp6.2 使用rpm需要检查安装依赖,使用yum install安装 会自动安装依赖,前提条件是需要联网

      GP6.X RPM版本安装前需要检查软件依赖,安装过程需要联网,若为内网机,需要先下载好相应的包。

 1.2.1 批量安装依赖包(需联网)

greenplum 5 是用rpm命令的,而greenplum 6 则用 yum install 直接安装依赖。

sudo yum install -y apr apr-util bash bzip2 curl krb5 libcurl libevent libxml2 libyaml zlib 
openldap openssh openssl openssl-libs perl readline rsync R sed tar zip krb5-devel


1.2.2 内网机需要人工下载后再上传至服务器

注意:操作系统版本位数 ,例如本次虚拟机是: el6.x86_64

[root@mdw ~]# uname -a
Linux mdw 2.6.32-642.el6.x86_64 #1 SMP Wed Apr 13 00:51:26 EDT 2016 x86_64 x86_64 x86_64 GNU/Linux

下载地址: http://rpmfind.net/linux/rpm2html/search.php

1.2.3 linux中离线下载

        条件:
             1. 与安装gp 集群相同版本的操作系统
             2. 可联外网

yumdownloader --destdir ./ --resolve libyaml


2 配置系统参数

## 与旧版本差异点
gp6 无gpcheck 检查工具,但再gpinitsystem 环节会检查系统参数。
若不按照官方推荐参数修改,不影响集群安装,会影响集群性能

系统参数需要使用root用户修改,修改完需要重启系统,也可以修改完成后一并重启系统。
建议先修改master主机的参数,待安装好master的gp后,打通ssh,使用gpscp ,gpssh 批量修改其他节点的系统参数
参考文档:https://gpdb.docs.pivotal.io/6-2/install_guide/prep_os.html


2.1 关闭防火墙

2.1.1 检查SElinux(Security-Enhanced Linux)

使用root用户查看

[root@mdw ~]# sestatus
SELinux status:                 disabled

如果 SELinux status != disabled  ,修改 /etc/selinux/config 设置 ,随后重启系统(可以调节完参数后一并重启)
SELINUX=disabled

2.1.2 检查 iptables 状态

[root@mdw ~]# /sbin/chkconfig --list iptables
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

 如果状态没关闭,则修改,随后重启系统(可以调节完参数后一并重启)

/sbin/chkconfig iptables off


2.1.3  检查firewalld(centos6 一般没有)

[root@mdw ~]# systemctl status firewalld

如果firewalld 关闭,则输出

* firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)

如果状态没关闭,则修改,随后重启系统(可以调节完参数后一并重启)

[root@mdw ~]# systemctl stop firewalld.service
[root@mdw ~]# systemctl disable firewalld.service


2.2 配置host

2.2.1 配置每台机器host 

配置master hostname 为mdw, 其他segment 主机的hostname 不是必须配置项。
修改各台主机的主机名称。 一般建议的命名规则如下:
Master :mdw
Standby Master :smdw
Segment Host :sdw1、 sdw2  ...   sdwn
修改操作:
 

#零时修改
hostname mdw

 

#永久修改
vi /etc/sysconfig/network

2.2.2 配置/etc/hosts

添加每台机器的ip 和别名

[root@mdw ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
172.28.25.201 mdw
172.28.25.202 sdw1
172.28.25.203 sdw2

需要修改集群中所有主机的hosts 文件,登陆到各个主机,执行一下语句:

cat >> /etc/hosts << EOF
172.28.25.201 mdw
172.28.25.202 sdw1
172.28.25.203 sdw2
EOF

2.3 配置sysctl.conf 

根据系统实际情况来修改系统参数(gp 5.0 之前都是官方给出的默认值,5.0 之后给出了部分计算公式。)
官方推荐配置,设置完成后 重载参数( sysctl -p):

# kernel.shmall = _PHYS_PAGES / 2 # See Shared Memory Pages  # 共享内存
kernel.shmall = 4000000000
# kernel.shmmax = kernel.shmall * PAGE_SIZE                  # 共享内存
kernel.shmmax = 500000000
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 = 500 2048000 200 40960
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.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

# 共享内存
# kernel.shmall = _PHYS_PAGES / 2
# kernel.shmmax = kernel.shmall * PAGE_SIZE 

[root@mdw ~]# echo $(expr $(getconf _PHYS_PAGES) / 2)                   
2041774 
[root@mdw ~]# echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
8363106304


#主机内存
vm.overcommit_memory  系统使用该参数来确定可以为进程分配多少内存。对于GP数据库,此参数应设置为2。
vm.overcommit_ratio  以为进程分配内的百分比,其余部分留给操作系统。在Red Hat上,默认值为50。建议设置95
计算 vm.overcommit_ratio

vm.overcommit_ratio = (RAM-0.026*gp_vmem) / RAM

#端口设定
为避免在Greenplum初始化期间与其他应用程序之间的端口冲突,指定的端口范围 net.ipv4.ip_local_port_range。使用gpinitsystem初始化Greenplum时,请不要在该范围内指定Greenplum数据库端口。
例如,如果net.ipv4.ip_local_port_range = 10000 65535,将Greenplum数据库基本端口号设置为这些值。

PORT_BASE = 6000 
MIRROR_PORT_BASE = 7000


# 系统内存
系统内存大于64G ,建议以下配置

vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB

系统内存小于等于 64GB,移除vm.dirty_background_bytes 设置,并设置以下参数

vm.dirty_background_ratio = 3
vm.dirty_ratio = 10

增加 vm.min_free_kbytes ,确保网络和存储驱动程序PF_MEMALLOC得到分配。这对内存大的系统尤其重要。一般系统上,默认值通常太低。可以使用awk命令计算vm.min_free_kbytes的值,通常是建议的系统物理内存的3%:

awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}'
               /proc/meminfo >> /etc/sysctl.conf 

不要设置 vm.min_free_kbytes 超过系统内存的5%,这样做可能会导致内存不足。

本次实验使用redhat6.8 ,16G内存,配置如下:


[root@mdw ~]# vi /etc/sysctl.conf
[root@mdw ~]# sysctl -p
kernel.shmall = 2041774
kernel.shmmax = 8363106304
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 40960
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.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 = 3
vm.dirty_ratio = 10

2.4 系统资源限制

* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072

修改/etc/security/limits.conf ,增加以下参数:

“*” 星号表示所有用户
noproc     是代表最大进程数 
nofile     是代表最大文件打开数
RHEL / CentOS 6 修改:/etc/security/limits.d/90-nproc.conf 文件的nproc 为131072
RHEL / CentOS 7 修改:/etc/security/limits.d/20-nproc.conf 文件的nproc 为131072

[root@mdw ~]# cat  /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     131072
root       soft    nproc     unlimited

linux模块pam_limits 通过读取 limits.conf文件来设置用户限制.
重启后生效,ulimit -u 命令显示每个用户可用的最大进程数max user processes。验证返回值为131072。

2.5 XFS挂载选项

XFS相比较ext4具有如下优点:
XFS的扩展性明显优于ext4,ext4的单个文件目录超过200W个性能下降明显
ext4作为传统文件系统确实非常稳定,但是随着存储需求的越来越大,ext4渐渐不在适应
由于历史磁盘原因,ext4的inode个数限制(32位),最多只能支持40多亿个文件,单个文件最大支持到16T
XFS使用的是64位管理空间,文件系统规模可以达到EB级别,XFS是基于B+Tree管理元数据
GP 需要使用XFS的文件系统,RHEL/CentOS 7 和Oracle Linux将XFS作为默认文件系统,SUSE/openSUSE已经为XFS做了长期支持。
由于本次虚拟机只有一块盘,并且是系统盘,无法再改文件系统。此处略过挂在xfs。

## 与旧版本差异点
gp6 无gpcheck 检查工具,所以不改文件系统,不影响集群安装
gp6 之前版本 gpcheck检查文件系统不通过时,可注释掉gpcheck脚本检查文件系统的部分代码。

文件系统一般在安装操作系统的时候指定,或者挂载新的盘的时候格式化。也可以将非系统盘的其他磁盘格式化成指定的文件系统。
例如挂载新xfs步骤:
1 、 分区及格式化:
mkfs.xfs /dev/sda3 
mkdir -p /data/master

2、 在/etc/fstab 文件中增加

/dev/sda3 /data xfs rw,noatime,inode64,allocsize=16m 1 1

xfs的更多资料参考:
https://blog.csdn.net/marxyong/article/details/88703416
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/storage_administration_guide/ch-xfs

2.6 磁盘I/O 设置

磁盘文件预读设置:16384,不同系统的磁盘目录不一样,可以使用 lsblk 查看磁盘挂在情况

[root@mdw ~]# lsblk
NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                           8:0    0   50G  0 disk
├─sda1                        8:1    0  200M  0 part /boot
└─sda2                        8:2    0 49.8G  0 part
  ├─VolGroup-lv_swap (dm-0) 253:0    0    4G  0 lvm  [SWAP]
  └─VolGroup-lv_root (dm-1) 253:1    0 45.8G  0 lvm  /
sr0                          11:0    1 1024M  0 rom

本次生效:

[root@mdw ~]# /sbin/blockdev --setra 16384 /dev/sda
[root@mdw ~]# /sbin/blockdev --getra /dev/sda
16384

永久生效,需要将上面的脚本追加到 /etc/rc.d/rc.local 中

2.7 修改rc.local 权限

必须在启动时可以运行 rc.local文件。
例如,在RHEL / CentOS 7系统上,设置文件的执行权限。

chmod + x /etc/rc.d/rc.local


2.8 磁盘I/O调度算法

[root@mdw ~]# more  /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
[root@mdw ~]# echo deadline > /sys/block/sda/queue/scheduler

这样做并不能永久生效,每次重启都需要重新设置。
RHEL 6.x or CentOS 6.x  可以修改  /boot/grub/grub.conf,增加 elevator=deadline 例如:

RHEL 7.x or CentOS 7.x, 使用 grub2  ,可以使用系统工具grubby来修改;

# grubby --update-kernel=ALL --args="elevator=deadline"

重启后使用一下命令检查

# grubby --info=ALL


2.9 Transparent Huge Pages (THP) 

禁用THP,因为它会降低Greenplum数据库的性能。
RHEL 6.x or CentOS 6.x 或更高版本默认情况下启用THP。在RHEL 6.x上禁用THP的一种方法是添加参数 transparent_hugepage=never 到/boot/grub/grub.conf:

kernel /vmlinuz-2.6.18-274.3.1.el5 ro root=LABEL=/
           elevator=deadline crashkernel=128M@16M  quiet console=tty1
           console=ttyS1,115200 panic=30 transparent_hugepage=never 
           initrd /initrd-2.6.18-274.3.1.el5.img

RHEL 7.x or CentOS 7.x, 使用 grub2  ,可以使用系统工具grubby来修改;
#grubby --update-kernel = ALL --args =“ transparent_hugepage =never”添加参数后,重启系统。
参数检查:

$ cat /sys/kernel/mm/*transparent_hugepage/enabled
always [never]


2.10 IPC Object Removal

Disable IPC object removal for RHEL 7.2 or CentOS 7.2, or Ubuntu. The default systemd setting RemoveIPC=yes removes IPC connections when non-system user accounts log out. This causes the Greenplum Database utility gpinitsystem to fail with semaphore errors. Perform one of the following to avoid this issue.
When you add the gpadmin operating system user account to the master node in Creating the Greenplum Administrative User, create the user as a system account.
Disable RemoveIPC. Set this parameter in /etc/systemd/logind.conf on the Greenplum Database host systems.

RemoveIPC=no

The setting takes effect after restarting the systemd-login service or rebooting the system. To restart the service, run this command as the root user.

service systemd-logind restart


2.11 SSH连接阈值

Greenplum数据库管理程序中的gpexpand‘ gpinitsystem、gpaddmirrors,使用 SSH连接来执行任务。在规模较大的Greenplum集群中,程序的ssh连接数可能会超出主机的未认证连接的最大阈值。发生这种情况时,会收到以下错误:ssh_exchange_identification:连接被远程主机关闭。
为避免这种情况,可以更新 /etc/ssh/sshd_config 或者 /etc/sshd_config 文件的 MaxStartups 和 MaxSessions 参数

MaxStartups 200
MaxSessions 200

重启sshd,使参数生效

# service sshd restart


2.12 同步集群时钟(NTP)

为了保证集群各个服务的时间一致,首先在master 服务器上,编辑 /etc/ntp.conf,配置时钟服务器为数据中心的ntp服务器。若没有,先修改master 服务器的时间到正确的时间,再修改其他节点的 /etc/ntp.conf,让他们跟随master服务器的时间。
vi /etc/ntp.conf
#在server 最前面加上

server mdw prefer  # 优先主节点
server smdw        # 其次standby 节点,若没有standby ,可以配置成数据中心的时钟服务器
service ntpd restart  # 修改完重启ntp服务

2.13 检查字符集

[root@mdw greenplum-db]# echo $LANG
en_US.UTF-8

否则,修改配置 /etc/sysconfig/language 增加 RC_LANG=en_US.UTF-8

2.14 创建gpadmin用户

# 与旧版本差异点
gp4.x/gp5.x 可以在gpseginstall 时,通过-U 参数创建gpamdin 用户
gp6.2 无gpseginstall 工具,必须在安装前创建gpadmin 用户


在每个节点上创建gpadmin用户,用于管理和运行gp集群,最好给与sudo权限。
也可以先在主节点上创建,等到主节点gp安装完成后,使用gpssh  批量在其他节点上创建。
示例:

[root@mdw ~]# groupadd gpadmin
[root@mdw ~]# useradd gpadmin -r -m -g gpadmin
[root@mdw ~]# passwd gpadmin
Changing password for user gpadmin.
New password:gpadmin
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:gpadmin
passwd: all authentication tokens updated successfully.

安装步骤请参考:【GP6安装配置】 Greenplum6.2.1 安装手记(下)

你可能感兴趣的:(Greenplum)