【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 安裝手記(下)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章