背景:
linux7系统
greenplum-db-6.16.2-rhel7-x86_64.rpm
安装流程:
注意:建议联网,如果不联网的话,一定使用代理服务器
安装流程:
1)关闭防火墙(所有机器)
- 关闭防火墙(所有机器)
iptables (centos6.x)
关闭:service iptables stop
永久关闭:chkconfig iptables off
- 检查firewalld (centos 7.x)
关闭:systemctl stop firewalld
永久关闭 :systemctl disable firewalld
2)关闭SELINUX(所有机器)
[root@mdw ~]# vi /etc/selinux/config
确保SELINUX=disabled
3)配置/etc/hosts (所有机器)
为之后GP在各个节点之间相互通信做准备。
修改各台主机的主机名称。 一般建议的命名规则如下: 项目名_gp_节点
Master : dis_gp_mdw
Standby Master : dis_gp_smdw
Segment Host : dis_gp_sdw1 dis_gp_sdw2 dis_gp_sdw3 以此类推
如果Standby也搭建在某Segment host下,则命名为:dis_gp_sdw3_smdw
[root@mdw ~]# vi /etc/hosts
添加每台机器的ip 和hostname,确保所有机器的/etc/hosts中包含以下信息:
10.16.162.166 dis-gp-mdw
10.16.162.151 dis-gp-sdw1
10.16.162.152 dis-gp-sdw2
10.16.162.153 dis-gp-sdw3-smdw
4)修改主机名
Centos7.x vi /etc/hostname
Centos6.x vi /etc/sysconfig/network
修改完之后 reboot机器
5)配置sysctl.conf(所有机器)
kernel.shmall = 197951838 # echo $(expr $(getconf _PHYS_PAGES) / 2)
kernel.shmmax = 810810728448 # echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 75 #vm.overcommit_ratio = (RAM - 0.026 * gp_vmem_rq) / RAM #gp_vmem_rq = ((SWAP + RAM) – (7.5GB + 0.05 * RAM)) / 1.7
net.ipv4.ip_local_port_range = 10000 65535
kernel.sem = 500 2048000 200 4096
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.min_free_kbytes = 487119#awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo
#对于大于64GB的主机,加上下面4行
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB
#对于小于64GB的主机删除dirty_background_bytes dirty_bytes,加上下面2行
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
#vm.min_free_kbytes在内存 > 64GB系统的时候可以设置,一般比较少设置此参数。
#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%,这样做可能会导致内存不足。
6)配置资源限制参数(所有机器)
在/etc/security/limits.conf文件下增加以下参数
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
“*” 星号表示所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
RHEL / CentOS 6.X
修改:/etc/security/limits.d/90-nproc.conf 文件的nproc
[root@mdw ~]# vi /etc/security/limits.d/90-nproc.conf
确保 * soft nproc 131072
RHEL / CentOS 7.X 修改:
修改:/etc/security/limits.d/20-nproc.conf 文件的nproc
[root@mdw ~]# vi /etc/security/limits.d/20-nproc.conf
确保 * soft nproc 131072
ulimit -u 命令显示每个用户可用的最大进程数 max user processes,验证返回值为131072.
7)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做了长期支持。
centos6.x需要先安装xfs包
centos7.x不需要先安装
例如挂载新xfs步骤:
1.[root@mdw ~]# fdisk /dev/sdd
然后跟着n,p,1提示做下去,最后wq保存退出
[root@mdw ~]# mkfs.xfs /dev/sdd1
2.挂载目录
[root@mdw ~]# mount /dev/sdd1 /data/master
3.设置自动挂载
[root@mdw ~]# vi /etc/fstab
/dev/sdd1 /data xfs rw,noatime,inode64,allocsize=16m 0 0
8)磁盘I/O 预读大小设置
- 临时生效
[root@mdw ~]# /sbin/blockdev --setra 16384 /dev/sda
- 永久生效
[root@mdw ~]# vi /etc/rc.d/rc.local
blockdev --setra 16384 /dev/sdd*
9)修改rc.local 权限
必须在启动时可以运行 rc.local文件。
例如,在RHEL / CentOS 7系统上,设置文件的执行权限。
[root@mdw ~]# chmod + x /etc/rc.d/rc.local
10)磁盘I/O调度算法(确保是deadline)
centos7默认就是deadline
[root@mdw ~]# more /sys/block/sdd/queue/scheduler
noop anticipatory [deadline] cfq
如上所示,就不需要修改,否则按下面操作
RHEL 6.x or CentOS 6.x 可以修改 /boot/grub/grub.conf,增加 elevator=deadline 例如:
RHEL 7.x or CentOS 7.x, 使用 grub2 ,可以使用系统工具grubby来修改;
[root@mdw ~]# grubby --update-kernel=ALL --args="elevator=deadline"
重启后使用一下命令检查
[root@mdw ~]# grubby --info=ALL
11)关闭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:
RHEL 7.x or CentOS 7.x, 使用 grub2 ,可以使用系统工具grubby来修改;
[root@mdw ~]# grubby --update-kernel=ALL --args="transparent_hugepage=never"
添加参数后,重启系统reboot。
参数检查:
[root@mdw ~]# cat /sys/kernel/mm/*transparent_hugepage/enabled
always [never]
12)SSH连接阈值
Greenplum数据库管理程序中的gpexpand‘ gpinitsystem、gpaddmirrors,使用 SSH连接来执行任务。在规模较大的Greenplum集群中,程序的ssh连接数可能会超出主机的未认证连接的最大阈值。发生这种情况时,会收到以下错误:ssh_exchange_identification:连接被远程主机关闭。
为避免这种情况,可以更新 /etc/ssh/sshd_config 或者 /etc/sshd_config 文件的 MaxStartups 和 MaxSessions 参数
MaxStartups 10:30:200
重启sshd,使参数生效
service sshd restart
13)同步集群时钟(NTP) (此项为操作,环境已经设置好ntp)
为了保证集群各个服务的时间一致,首先在master 服务器上,编辑 /etc/ntp.conf,配置时钟服务器为数据中心的ntp服务器。若没有,先修改master 服务器的时间到正确的时间,再修改其他节点的 /etc/ntp.conf,让他们跟随master服务器的时间。
[root@mdw ~]# vi /etc/ntp.conf
在server 最前面加上
master:
把server1,2,3,4全删
改成 server xxx,可以问公司IT人员公司的时钟IP,如果没有就设置成
server 1.cn.pool.ntp.org
segment:
server mdw prefer # 优先主节点
server smdw # 其次standby 节点,若没有standby ,可以配置成数据中心的时钟服务器
[root@mdw ~]# service ntpd restart # 修改完重启ntp服务
如果不存在ntp 运行yum install ntp
14)检查字符集
[root@mdw greenplum-db]# echo $LANG
en_US.UTF-8
如果为zh_CN.UTF-8
则要修改 CentOS 6.X /etc/syscconfig/i18n
CentOS 7.X /etc/locale.conf
15)创建gpadmin用户(所有机器)
在每个节点上创建gpadmin用户,用于管理和运行gp集群
[root@mdw ~]# groupadd gpadmin
[root@mdw ~]# useradd gpadmin -g gpadmin -s /bin/bash
[root@mdw ~]# passwd gpadmin