目录
1.在ansible主机的/etc/ansible/hosts上配置对应的机器域名:
4.使用ssh-copy-id命令将master的public key添加到其他主机上
6.执行gpssh-exkeys命令完成n-n的ssh免密登陆
1⃣️跳转到master机器上gpadmin的用户目录,执行初始化命令
3.将GreenPlum命令行和MASTER_DATA_DIRECTORY加入初始化命令中
一、基础架构介绍
1.网络结构
GP数据通过多台主机进行大量的数据处理;master节点是整个GP集群的入口,用户通过master节点连接并提交sql语句;segment节点功能是处理数据和存储数据,master负责协调各个节点直接的工作负载,如下图所示:
2.部署架构
本编文章部署架构为单master节点,单segment节点;如需部署高可用集群:master主备,segment冗余,可参考官网https://gpdb.docs.pivotal.io/6-0/main/index.html,或评论区留言
二、集群主机基础配置
1.机器准备
本例子用的是5台16C32G的腾讯云机器,每台机器挂在一个100G的数据磁盘
2.机器配置
机器配置主要包含一下三个方面:
- 共享内存:如果segment节点没有配置共享内存,GP集群将无法启动。大部分Linux的默认共享内存配置低于GP集群所需要的共享内存;同时,你还需要关闭主机上的OOM killer。
- 网络:GP必须要一个大流量、最优化的网络
- 用户限制:GP必须要对相关文件设置高度的访问权限;默认的文件访问权限限制可能会造成GP访问失败
1⃣️域名解析配置
用root用户登陆各台主机,编辑/etc/hosts,并将IP和域名映射配置加到末尾,为了让5台机器之间通过域名能相互访问,如:
# master
10.0.0.1 mdw
# segments
10.0.0.2 sdw1
10.0.0.3 sdw2
10.0.0.4 sdw3
10.0.0.5 sdw4
可在任意一台机器ping对方的域名测试,如:在master上执行 ping sdw1
2⃣️设置系统参数
5个地方需要根据系统的值配置
# kernel.shmall = _PHYS_PAGES / 2 # 备注<1>
kernel.shmall = 4000000000
# kernel.shmmax = kernel.shmall * PAGE_SIZE # 备注<2>
kernel.shmmax = 500000000
kernel.shmmni = 4096
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
net.ipv4.ip_local_port_range = 10000 65535 # 备注<3>
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 # 备注<5>
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
Notes:
备注<1><2>
kernel.shmall(共享内存页总数)
kernel.shmmax (共享内存段的最大值)
一般来讲,这两个参数的值应该是物理内存的一半,可以通过操作系统的值_PHYS_PAGES和PAGE_SIZE计算得出。
kernel.shmall = ( _PHYS_PAGES / 2)
kernel.shmmax = ( _PHYS_PAGES / 2) * PAGE_SIZE
也可以通过以下两个命令得出这两个参数的值:
$ echo $(expr $(getconf _PHYS_PAGES) / 2)
$ echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
如果得出的kernel.shmmax值小于系统的默认值,则引用系统默认值即可
备注<3>
segment使用的端口是6000开始
segment mirror使用的端口是7000开始
所以配置默认值即可
net.ipv4.ip_local_port_range = 10000 65535
备注<5>
对于64G内存的操作系统,建议配置如下值:
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736 # 1.5GB
vm.dirty_bytes = 4294967296 # 4GB
对于小于64G内存的操作系统,建议配置如下值:
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
3⃣️配置Linux文件描述符
配置如下参数到/etc/security/limits.conf文件中:
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
4⃣️挂在磁盘
官方建议使用XFS磁盘类型,当然其他磁盘类型也是可以
示例配置如下:
将/dev/data磁盘挂载到/data目录下,配置/etc/fstab文件以使Linux系统启动默认挂载磁盘,如下配置添加到文件/etc/fstab:
/dev/data /data xfs nodev,noatime,nobarrier,inode64 0 0
5⃣️关闭防火墙
自行检查
# systemctl status firewalld
# systemctl stop firewalld.service
# systemctl disable firewalld.service
# /sbin/chkconfig iptables off
6⃣️配置系统时钟
配置segment主机与master时钟同步
将如下配置加入到/etc/ntp.conf文件中:
server mdw prefer
mdw为前面master配置的域名
7⃣️重启系统,让所有配置生效
三、安装GreenPlum数据库,并配置gpadmin用户
该步骤主要是安装GreenPlum软件包,创建gpadmin用户并配置目录权限
以下示例通过ansible-playbook安装,也可以通过yum、apt等包管理工具安装: