GP集群部署(6.11.2)

一、资源规划

1.1 环境配置信息

名称环境配置
OS系统版本 Linux 3.10.0-1127.el7.x86_64
OS配置信息 4C8G + 40G数据盘
GP版本 greenplum-db-6.11.2

1.2 资源规划

主机          IP                             角色          规划
mdw       172.16.104.11          master       master节点
sdw1      172.16.104.12         segment     seg1、seg2、mirror1、mirror2
sdw2      172.16.104.13         segment     seg3、seg4、mirror3、mirror4
sdw3      172.16.104.14         segment     seg5、seg6、mirror5、mirror6、master_standby

二、操作系统配置

2.1 修改主机名

在GP中,一般习惯将master节点的机器称为 mdw ,将segment节点的机器称为 sdw ,在该步骤中我们配置好每个主机的hostname后,并修改其/etc/hosts文件。

1
2
3
4
5
6
7
8
# hostnamectl  set-hostname sdw1        //修改主机名
# hostname                              //查看主机名
# reboot                                //重启服务器对hostname生效
# vi /etc/hosts                         //修改hosts文件
172.16.104.11 mdw
172.16.104.12 sdw1
172.16.104.13 sdw2
172.16.104.14 sdw3

2.2 关闭防火墙与selinux

1、 关闭防火墙

1
2
3
# systemctl status firewalld                //查看防火墙状态
# systemctl stop firewalld                  //关闭防火墙
# systemctl disable firewalld               //禁用防火墙

2、关闭selinux

1
2
3
# setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config           //禁用selinux
# getenforce      
# sestatus                  //查看selinux状态

2.3 挂载磁盘

1
cat /etc/fstab <br>/dev/mapper/vgdata-data               /gpdata            xfs     rw,noatime,nodev,nobarrier,inode64,allocsize=16m        1 2<br><br><br>

XFS相比较ext4具有如下优点:

XFS的扩展性明显优于ext4,ext4的单个文件目录超过200W个性能下降明显
ext4作为传统文件系统确实非常稳定,但是随着存储需求的越来越大,ext4渐渐不在适应
由于历史磁盘原因,ext4的inode个数限制(32位),最多只能支持40多亿个文件,单个文件最大支持到16T
XFS使用的是64位管理空间,文件系统规模可以达到EB级别,XFS是基于B+Tree管理元数据

2.4 配置sysctl.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
-- 修改sysctl.conf文件
# cat /etc/sysctl.conf
 
# kernel.shmall = _PHYS_PAGES / 2 =echo $(expr $(getconf _PHYS_PAGES) / 2)
kernel.shmall = 483888
# kernel.shmmax = kernel.shmall * PAGE_SIZE =echo $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
kernel.shmmax = 1982005248
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 = 0
#vm.dirty_ratio = 0
#vm.dirty_background_bytes = 1610612736
#vm.dirty_bytes = 4294967296
vm.dirty_background_ratio = 3
vm.dirty_ratio = 10
 
# 如果系统内存大于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
 
 
-- 根据计算写入 min_free_kbytes 值
# awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf
 
-- 使参数生效
# sysctl -p

2.5 修改系统资源限制

增加操作系统文件数和进程数

1
2
3
4
5
6
7
8
9
10
11
-- RHEL/CentOS6修改/etc/security/limits.d/90-nproc.conf文件,RHEL/CentOS 7修改/etc/security/limits.d/20-nproc.conf文件
# cat /etc/security/limits.d/20-nproc.conf
*          soft    nproc     131072
root       soft    nproc     unlimited
 
-- linux模块pam_limits 通过读取 limits.conf文件来设置用户限制,重启后生效
# cat /etc/security/limits.conf
* soft nofile 1048576                    //*表示所有用户,nofile表示最大文件数
* hard nofile 1048576
* soft nproc 1048576                    //noproc表示最大进程数
* hard nproc 10048576

2.6 磁盘I/O预读设置

数据仓库的最大特点是用于保存历史数据,存在大量的数据操作,包括增删改查,

当设置的块越大时读取性能越高;16384是greenplum数据库要求的最低要求。

注意要将每一个存数据的磁盘都修改预读参数:或者使用检查配置信息查看那些需要修改

1)检查磁盘预读取设置,应都是 16384:

blockdev --getra /dev/sd* blockdev --getra /dev/dm-*

2)设置

修改/etc/rc.d/rc.local 增加两行

vi /etc/rc.d/rc.local

blockdev --setra 16384 /dev/sd*

blockdev --setra 16384 /dev/dm-*

(3)检查办法:

系统重启后,运行

blockdev --getra /dev/sd* blockdev --getra /dev/dm-*  应都是 16384

发布到其他节点:

/etc/rc.d/rc.local

sh bulkcp.sh /tmp/gpconfig/2rclocal.conf /tmp/gpconfig/2rclocal.conf

gpssh -f /data1/gpinstall/config/allnodes.txt -e ''

cat /tmp/gpconfig/2rclocal.conf >> /etc/rc.d/rc.local

2.7 磁盘I/O调度算法

- ssd磁盘:建议使用noop或者deadline策略;

- 机械盘:建议使用deadline策略;

注意:内核版本为4版本开始的默认调出策略为NONE(也就是noop),无需修改

1
2
3
4
5
6
-- 临时生效
# more  /sys/block/sda/queue/scheduler
noop [deadline] cfq
# echo deadline > /sys/block/sda/queue/scheduler
 
-- 永久生效

deadline的调度策略可以平衡IO调度和进程调度,不会造成等待进程频繁的等待
注意:每个节点都需要执行:

(1)查看调度策略:
[root@master ~] # cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]

[root@master ~] # cat /sys/block/fd0/queue/scheduler
noop anticipatory deadline [cfq]
[root@master ~]# dmesg | grep -i scheduler


(2)修改调度策略:
(临时修改,重启会失效)
[root@master ~]# echo deadline > /sys/block/sda/queue/scheduler
[root@master ~]# echo deadline > /sys/block/fd0/queue/scheduler

(永久修改,重启不失效)
修改/boot/grub/menu.lst 找到 kernel /vmlinuz-xxx 这一行,在最后添加 elevator=deadline
vi /boot/grub/menu.lst
elevator=deadline


(3)检查/验证方法:
系统启动正常后,执行 cat /sys/block/*/queue/scheduler 应能看到: noop anticipatory [deadline] cfq 

2.8 禁用透明大页面

linux版本从 SLES11, RHEL6,  OL6 and UEK2 Kernels开始默认启动Transparent HugePages功能。该功能可能导致节点重启和gp性能问题。

# grep AnonHugePages /proc/meminfo

如果输出AnonHugepages: xxxx kB值大于0KB,则说明系统在使用Transparent HugePages

# cat /sys/kernel/mm/transparent_hugepage/enabled

[always] never

以上验证方法显示always也表示在使用Transparent HugePages

 

 

禁用方法:

方法一:

编辑 /etc/grub.conf 

title Oracle Linux Server (2.6.32-300.25.1.el6uek.x86_64)

root (hd0,0)

kernel /vmlinuz-2.6.32-300.25.1.el6uek.x86_64 ro root=LABEL=/ transparent_hugepage=never

        initrd /initramfs-2.6.32-300.25.1.el6uek.x86_64.img

方法2vi /etc/rc.d/boot.local

SUSE系统】

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then

   echo never > /sys/kernel/mm/transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/transparent_hugepage/defrag; then

   echo never > /sys/kernel/mm/transparent_hugepage/defrag

fi

RHEL系统】

if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then

   echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then

   echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

Fi

 

Centos7

12.禁用空白大页:

echo never>/sys/kernel/mm/transparent_hugepage/enabled

echo never>/sys/kernel/mm/transparent_hugepage/defrag

 

然后将以上命令添加到 /etc/rc.local

 

或者修改grub.conf,加入transparent_hugepage=never

 

centos 7以下:

/etc/grub.confkernel行最后添加numa=off

kernel /vmlinuz-2.6.32-220.el6.x86_64 ro ...... KEYTABLE=us rd_NO_DM numa=off

 

centos 7及以上:

#/etc/default/grubGRUB_CMDLINE_LINUX行最后添加 transparent_hugepage=never

GRUB_CMDLINE_LINUX=crashkernel=auto …… rhgb quiet transparent_hugepage=never

#执行grub2-mkconfig命令

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

cat /boot/grub2/grub.cfg

2.9 配置NTF时钟

1
2
3
4
5
#vi /etc/ntp.conf
#在server 最前面加上
server mdw prefer               // 优先主节点
server smdw                     // 其次standby 节点,若没有standby ,可以配置成数据中心的时钟服务器
service ntpd restart            // 修改完重启ntp服务

2.10使用numa可能导致性能问题,建议关闭:

CentOS7以下:

/etc/grub.conf的kernel行最后添加elevator=deadline

kernel /vmlinuz-2.6.32-220.el6.x86_64 ro ...... KEYTABLE=us rd_NO_DM numa=off elevator=deadline

CentOS7:

#查看:dmesg | grep scheduler

CentOS7 io调度规则默认为“deadline”,所以不需要更改

cat /sys/block/sd*/queue/scheduler 

三、GP集群搭建

3.1 下载安装依赖包

1
# 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<br>查看安装情况:

检查包安装情况:

rpm -q --qf '%{NAME}- %{VERSION}-%{RELEASE}  (%{ARCH}) \n' \

apr \

apr-util \

bash \

bzip2 \

curl \

krb5 \

libcurl \

libevent \

libxml2 \

libyaml \

zlib \

openldap \

openssh \

openssl \

openssl-libs \

perl \

readline \

rsync \

R \

sed \

tar \

zip \

gcc

3.2 创建数据库用户

 


 

posted @   数据库小白(专注)  阅读(108)  评论(0编辑  收藏  举报
编辑推荐:
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示