Greenplum測試環境部署


1.准備3台主機

本實例是部署實驗環境,采用的是Citrix的虛擬化環境,分配了3台RHEL6.4的主機。

額外需求
Master 創建模板后,額外添加20G一塊磁盤/dev/xvdb,額外添加2塊網卡eth1,eth2
Standby 創建模板后,額外添加20G一塊磁盤/dev/xvdb,額外添加2塊網卡eth1,eth2
Segment01 創建模板后,額外添加50G一塊磁盤/dev/xvdb,額外添加2塊網卡eth1,eth2

網絡規划

eth0(外部IP) eth1 eth2
Master 192.168.9.123 172.16.10.101 172.16.11.101
Standby 192.168.9.124 172.16.10.102 172.16.11.102
Segment01 192.168.9.125(可選) 172.16.10.1 172.16.11.1

實驗環境資源有限暫時配置3個節點,后續可能會根據需求添加Segment02,Segment03...

修改主機名

將Master,Standby,Segment01的三台主機名分別設置為mdw, smdw, sdw1

主機名修改方法:

hostname 主機名
vi /etc/sysconfig/network 修改hostname

Options:配置腳本,前期為了方便同步節點間的配置,可選。

export NODE_LIST='MDW SMDW SDW1'

vi /etc/hosts 臨時配置

192.168.9.123 mdw
192.168.9.124 smdw
192.168.9.125 sdw1

配置第一個節點到自身和其他機器的無密碼登錄

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.123
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.124
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.9.125

cluster_run_all_nodes "hostname ; date"

磁盤規划

gp建議使用xfs文件系統,所有節點需要安裝依賴包
# rpm -ivh xfsprogs-3.1.1-10.el6.x86_64.rpm

所有節點建立/data文件夾,用來掛載xfs的文件系統

mkdir /data

mkfs.xfs /dev/xvdb

[root@smdb Packages]# mkfs.xfs /dev/xvdb
meta-data=/dev/xvdb  isize=256agcount=4, agsize=1310720 blks
   =   sectsz=512   attr=2, projid32bit=0
data =   bsize=4096   blocks=5242880, imaxpct=25
   =   sunit=0  swidth=0 blks
naming   =version 2  bsize=4096   ascii-ci=0
log  =internal log   bsize=4096   blocks=2560, version=2
   =   sectsz=512   sunit=0 blks, lazy-count=1
realtime =none   extsz=4096   blocks=0, rtextents=0

vi /etc/fstab 添加下面一行

/dev/xvdb   /data   xfs rw,noatime,inode64,allocsize=16m1 1

2.關閉iptables和selinux

cluster_run_all_nodes "hostname; service iptables stop"
cluster_run_all_nodes "hostname; chkconfig iptables off"
cluster_run_all_nodes "hostname; chkconfig ip6tables off"
cluster_run_all_nodes "hostname; chkconfig libvirtd off"

cluster_run_all_nodes "hostname; setenforce 0"
cluster_run_all_nodes "hostname; sestatus"
vi /etc/selinux/config
cluster_copy_all_nodes /etc/selinux/config /etc/selinux/

注:所有節點都要統一設定,我這里先配置了信任,用腳本實現的同步,如果沒有配置,是需要每台依次設定的。

3.設定建議的系統參數

vi /etc/sysctl.conf

kernel.shmmax = 500000000
kernel.shmmni = 4096
kernel.shmall = 4000000000
kernel.sem = 250 512000 100 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2
kernel.msgmni = 2048
net.ipv4.ip_local_port_range = 1025 65535

vi /etc/security/limits.conf

* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072

同步到各個節點:

cluster_copy_all_nodes /etc/sysctl.conf /etc/sysctl.conf
cluster_copy_all_nodes /etc/security/limits.conf /etc/security/limits.conf

磁盤預讀參數及 deadline算法

在/etc/rc.d/rc.local 添加

blockdev --setra 16385 /dev/xvdb
echo deadline > /sys/block/xvdb/queue/scheduler
cluster_copy_all_nodes /etc/rc.d/rc.local /etc/rc.d/rc.local

注:重啟后 blockdev --getra /dev/xvdb 驗證是否生效

驗證所有節點的字符集

cluster_run_all_nodes "hostname; echo $LANG"

重啟所有節點,驗證修改是否生效:

blockdev --getra /dev/xvdb 
more /sys/block/xvdb/queue/scheduler
cluster_run_all_nodes "hostname; service iptables status"

4.在Master上安裝

mkdir -p /data/soft
上傳greenplum-db-4.3.4.2-build-1-RHEL5-x86_64.zip到Master
**解壓**
unzip  greenplum-db-4.3.4.2-build-1-RHEL5-x86_64.zip 
**安裝**
/bin/bash greenplum-db-4.3.4.2-build-1-RHEL5-x86_64.bin

5.在所有的節點上安裝配置Greenplum

配置/etc/hosts

192.168.9.123 mdw
172.16.10.101 mdw-1
172.16.11.101 mdw-2

192.168.9.124 smdw
172.16.10.102 smdw-1
172.16.11.102 smdw-2

192.168.9.125 sdw1
172.16.10.1   sdw1-1
172.16.11.1   sdw1-2

同步/etc/hosts配置

cluster_copy_all_nodes /etc/hosts /etc/hosts

配置gp需要的互信

vi hostfile_exkeys 創建文件內容示例如下:

mdw
mdw-1
mdw-2
smdw
smdw-1
smdw-2
sdw1
sdw1-1
sdw1-2

Option: 此時如果之前做了部分互信,可以清除之前為安裝方便配置的ssh信任

rm -rf /root/.ssh/

# gpseginstall -f hostfile_exkeys -u gpadmin -p 123456
# su - gpadmin
$ source /usr/local/greenplum-db/greenplum_path.sh
$ cd /usr/local/greenplum-db
$ gpssh -f hostfile_exkeys -e ls -l $GPHOME

互信此時應該是可用的,如果不可用,再次執行

gpssh -f hostfile_exkeys

創建Data Storage Areas,root用戶操作

# mkdir /data/master
# chown gpadmin /data/master/

利用gpssh,在standby master上也創建數據目錄

# source /usr/local/greenplum-db/greenplum_path.sh
# gpssh -h smdw -e 'mkdir /data/master'
# gpssh -h smdw -e 'chown gpadmin /data/master'

在所有的segment節點上創建數據目錄

先創建一個文件 hostfile_gpssh_segonly,包含所有segment節點的主機名

sdw1
創建目錄

# source /usr/local/greenplum-db/greenplum_path.sh
# gpssh -f hostfile_gpssh_segonly -e 'mkdir /data/primary'
# gpssh -f hostfile_gpssh_segonly -e 'mkdir /data/mirror'
# gpssh -f hostfile_gpssh_segonly -e 'chown gpadmin /data/primary'
# gpssh -f hostfile_gpssh_segonly -e 'chown gpadmin /data/mirror'

配置NTP

我這里沒有配置NTP,生產環境建議配置。

驗證OS設置

先建立一個hostfile_gpcheck文件

mdw
smdw
sdw1

驗證

$ source /usr/local/greenplum-db/greenplum_path.sh
$ gpcheck -f hostfile_gpcheck -m mdw -s smdw
20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-dedupe hostnames
20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-Detected platform: Generic Linux Cluster
20150402:17:56:10:009650 gpcheck:mdw:gpadmin-[INFO]:-generate data on servers
20150402:17:56:11:009650 gpcheck:mdw:gpadmin-[INFO]:-copy data files from servers
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-delete remote tmp files
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-Using gpcheck config file: /usr/local/greenplum-db/./etc/gpcheck.cnf
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(None): utility will not check all settings when run as non-root user
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): on device (xvdd) IO scheduler 'cfq' does not match expected value 'deadline'
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): on device (xvda) IO scheduler 'cfq' does not match expected value 'deadline'
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(smdw): ntpd not detected on machine
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(sdw1): on device (xvda) IO scheduler 'cfq' does not match expected value 'deadline'
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(sdw1): ntpd not detected on machine
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(mdw): on device (xvda) IO scheduler 'cfq' does not match expected value 'deadline'
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[ERROR]:-GPCHECK_ERROR host(mdw): ntpd not detected on machine
20150402:17:56:12:009650 gpcheck:mdw:gpadmin-[INFO]:-gpcheck completing...

驗證網絡性能

hostfile_gpchecknet_sc1
sdw1-1
hostfile_gpchecknet_sc2
sdw1-2

驗證磁盤I/O和內存

hostfile_gpcheckperf
sdw1

配置本地化設置

字符集的設定

創建初始化文件

$ mkdir -p /home/gpadmin/gpconfigs
$ cd /home/gpadmin/gpconfigs
$ vi hostfile_gpinitsystem 
sdw1-1
sdw1-2

拷貝gpinitsystem_config

$ cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
$ cd /home/gpadmin/gpconfigs
修改
 declare -a DATA_DIRECTORY=(/data/primary /data/primary)
 #declare -a MIRROR_DATA_DIRECTORY=(/data/mirror /data/mirror)  以后配置默認就是注釋的

運行初始化工具

$ gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem -s smdw

初始化過程中報錯:

20150403:10:58:51:032589 gpcreateseg.sh:mdw:gpadmin-[INFO]:-Start Function ED_PG_CONF
20150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[WARN]:-Failed to insert port=40001 in /data/primary/gpseg1/postgresql.conf on sdw1-2
20150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[INFO]:-End Function ED_PG_CONF
20150403:10:58:52:032672 gpcreateseg.sh:mdw:gpadmin-[FATAL][1]:-Failed Update port number to 40001
20150403:10:58:52:032589 gpcreateseg.sh:mdw:gpadmin-[WARN]:-Failed to insert port=40000 in /data/primary/gpseg0/postgresql.conf on sdw1-1
20150403:10:58:53:032589 gpcreateseg.sh:mdw:gpadmin-[INFO]:-End Function ED_PG_CONF
20150403:10:58:53:032589 gpcreateseg.sh:mdw:gpadmin-[FATAL][0]:-Failed Update port number to 40000

找到資料:https://support.pivotal.io/hc/communities/public/questions/200372738-HAWQ-Initialization

解決方法:

1.所有節點安裝ed
# rpm -ivh /tmp/ed-1.1-3.3.el6.x86_64.rpm 
warning: /tmp/ed-1.1-3.3.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing...########################################### [100%]
   1:ed ########################################### [100%]
2.清除初始化系統的信息
/bin/bash /home/gpadmin/gpAdminLogs/backout_gpinitsystem_gpadmin_20150403_105721
3.重新初始化系統
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem -s smdw

吐槽下:明明依賴ed,官方安裝文檔中卻沒有提及..

安裝成功最后會輸出類似下面的提示:

20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Greenplum Database instance successfully created
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To complete the environment configuration, please 
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-update gpadmin .bashrc file with the following
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-1. Ensure that the greenplum_path.sh file is sourced
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-2. Add "export MASTER_DATA_DIRECTORY=/data/master/gpseg-1"
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-   to access the Greenplum scripts for this instance:
20150403:11:13:00:002886 gpinitsystem:mdw:gpadmin-[INFO]:-   or, use -d /data/master/gpseg-1 option for the Greenplum scripts
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-   Example gpstate -d /data/master/gpseg-1
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Script log file = /home/gpadmin/gpAdminLogs/gpinitsystem_20150403.log
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To remove instance, run gpdeletesystem utility
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Standby Master smdw has been configured
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-To activate the Standby Master Segment in the event of Master
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-failure review options for gpactivatestandby
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-The Master /data/master/gpseg-1/pg_hba.conf post gpinitsystem
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-has been configured to allow all hosts within this new
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-array to intercommunicate. Any hosts external to this
20150403:11:13:01:002886 gpinitsystem:mdw:gpadmin-[INFO]:-new array must be explicitly added to this file
20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-Refer to the Greenplum Admin support guide which is
20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-located in the /usr/local/greenplum-db/./docs directory
20150403:11:13:02:002886 gpinitsystem:mdw:gpadmin-[INFO]:-------------------------------------------------------

配置gpadmin環境變量

source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/master/gpseg-1

可選:客戶端會話環境變量

export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gptest

生效並拷貝到standby master

$ source ~/.bashrc
$ scp ~/.bashrc smdw:~/.bashrc

6.創建數據庫gptest

CREATE DATABASE gptest;

$ psql template1
psql (8.2.15)
Type "help" for help.

template1=# help
You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
   \h for help with SQL commands
   \? for help with psql commands
   \g or terminate with semicolon to execute query
   \q to quit
template1=# \h
Available help:
  ABORT   BEGIN   CREATE SEQUENCE DROP OPERATOR CLASS PREPARE
  ALTER AGGREGATE CHECKPOINT  CREATE SERVER   DROP OWNED  PREPARE TRANSACTION
  ALTER CONVERSIONCLOSE   CREATE TABLEDROP RESOURCE QUEUE REASSIGN OWNED
  ALTER DATABASE  CLUSTER CREATE TABLE AS DROP ROLE   REINDEX
  ALTER DOMAINCOMMENT CREATE TABLESPACE   DROP RULE   RELEASE SAVEPOINT
  ALTER EXTERNAL TABLECOMMIT  CREATE TRIGGER  DROP SCHEMA RESET
  ALTER FILESPACE COMMIT PREPARED CREATE TYPE DROP SEQUENCE   REVOKE
  ALTER FOREIGN DATA WRAPPER  COPYCREATE USER DROP SERVER ROLLBACK
  ALTER FUNCTION  CREATE AGGREGATECREATE USER MAPPING DROP TABLE  ROLLBACK PREPARED
  ALTER GROUP CREATE CAST CREATE VIEW DROP TABLESPACE ROLLBACK TO SAVEPOINT
  ALTER INDEX CREATE CONSTRAINT TRIGGER   DEALLOCATE  DROP TRIGGERSAVEPOINT
  ALTER LANGUAGE  CREATE CONVERSION   DECLARE DROP TYPE   SELECT
  ALTER OPERATOR  CREATE DATABASE DELETE  DROP USER   SELECT INTO
  ALTER OPERATOR CLASSCREATE DOMAIN   DROP AGGREGATE  DROP USER MAPPING   SET
  ALTER RESOURCE QUEUECREATE EXTERNAL TABLE   DROP CAST   DROP VIEW   SET CONSTRAINTS
  ALTER ROLE  CREATE FOREIGN DATA WRAPPER DROP CONVERSION END SET ROLE
  ALTER SCHEMACREATE FUNCTION DROP DATABASE   EXECUTE SET SESSION AUTHORIZATION
  ALTER SEQUENCE  CREATE GROUPDROP DOMAIN EXPLAIN SET TRANSACTION
  ALTER SERVERCREATE INDEXDROP EXTERNAL TABLE FETCH   SHOW
  ALTER TABLE CREATE LANGUAGE DROP FILESPACE  GRANT   START TRANSACTION
  ALTER TABLESPACECREATE OPERATOR DROP FOREIGN DATA WRAPPER   INSERT  TRUNCATE
  ALTER TRIGGER   CREATE OPERATOR CLASS   DROP FUNCTION   LISTEN  UNLISTEN
  ALTER TYPE  CREATE RESOURCE QUEUE   DROP GROUP  LOADUPDATE
  ALTER USER  CREATE ROLE DROP INDEX  LOCKVACUUM
  ALTER USER MAPPING  CREATE RULE DROP LANGUAGE   MOVEVALUES
  ANALYZE CREATE SCHEMA   DROP OPERATOR   NOTIFY  
template1=# 

template1=# CREATE DATABASE gptest;
CREATE DATABASE

登錄到gptest

$ psql
psql (8.2.15)
Type "help" for help.

gptest=#


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM