Greenplum 6.11.2 クラスタ構築ガイド

1. 環境とリソースの計画

1.1 環境仕様

項目内容
OSバージョンLinux 3.10.0-1127.el7.x86_64
ハードウェア構成4コアCPU / 8GBメモリ / 40GBデータディスク
Greenplumバージョンgreenplum-db-6.11.2

1.2 ノード構成

ホスト名IPアドレスロール
mdw172.16.104.11Master
sdw1172.16.104.12Segment (seg1, seg2), Mirror (mirror1, mirror2)
sdw2172.16.104.13Segment (seg3, seg4), Mirror (mirror3, mirror4)
sdw3172.16.104.14Segment (seg5, seg6), Mirror (mirror5, mirror6), Standby Master

2. OS設定

2.1 ホスト名とhostsファイルの設定

各ノードでホスト名を設定し、/etc/hostsに全ノードのエントリを追加する。
# hostnamectl set-hostname mdw
# vi /etc/hosts
172.16.104.11 mdw
172.16.104.12 sdw1
172.16.104.13 sdw2
172.16.104.14 sdw3

2.2 ファイアウォールとSELinuxの無効化

# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.3 データディスクのマウント

XFSファイルシステムを使用し、以下のオプションで/gpdataをマウント:
/dev/mapper/vgdata-data /gpdata xfs rw,noatime,nodev,nobarrier,inode64,allocsize=16m 1 2
XFSはext4よりも大規模ファイルシステムに適しており、EBクラスの容量と64ビットinode管理をサポートする。

2.4 カーネルパラメータ(sysctl)の調整

/etc/sysctl.confに以下を設定:
kernel.shmall = 483888
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
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
さらに、物理メモリの3%をmin_free_kbytesとして追加:
awk 'BEGIN {OFMT="%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf
# sysctl -p

2.5 ユーザーリソース制限の緩和

/etc/security/limits.d/20-nproc.conf:
*          soft    nproc     131072
root       soft    nproc     unlimited
/etc/security/limits.conf:
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 1048576
* hard nproc 1048576

2.6 ディスクI/Oプリフェッチ設定

すべてのデータディスクでリードアヘッドを16384に設定:
# blockdev --setra 16384 /dev/sd*
# blockdev --setra 16384 /dev/dm-*
永続化のため、/etc/rc.d/rc.localに上記コマンドを追加し、実行権限を付与:
chmod +x /etc/rc.d/rc.local

2.7 I/Oスケジューラの設定

SSDおよびHDD共にdeadlineスケジューラを推奨。 一時適用:
echo deadline > /sys/block/sda/queue/scheduler
永続化(CentOS 7): /etc/default/grubGRUB_CMDLINE_LINUXelevator=deadlineを追加し、再生成:
grub2-mkconfig -o /boot/grub2/grub.cfg

2.8 Transparent HugePagesの無効化

THPが有効だとパフォーマンス劣化の原因となるため、無効化する。 確認:
cat /sys/kernel/mm/transparent_hugepage/enabled
無効化(CentOS 7): /etc/default/grubGRUB_CMDLINE_LINUXtransparent_hugepage=neverを追加し、grub.cfgを再生成。 または、/etc/rc.localに以下を追加:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

2.9 NTP同期設定

全ノードで/etc/ntp.confを編集し、mdwを優先サーバーとする:
server mdw prefer
server sdw3
サービスを再起動:
systemctl restart ntpd

2.10 NUMAの無効化

NUMAによる性能ばらつきを防ぐため、カーネル起動オプションにnuma=offを追加(CentOS 6系)。 CentOS 7では通常不要だが、必要に応じて/etc/default/grubに追加し、grub.cfgを更新。

3. Greenplumクラスタ構築準備

3.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 gcc krb5-devel
インストール状況を確認:
rpm -q 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 gpadminユーザーの作成

すべてのノードでgpadminユーザーとグループを作成:
groupadd gpadmin
useradd -g gpadmin -m -s /bin/bash gpadmin
echo "gpadmin:password" | chpasswd

タグ: Greenplum PostgreSQL MPP cluster-deployment Linux-system-tuning

7月7日 18:57 投稿