生产系统安装Greenplum实例--多节点多网段模式

先说一点题外话,为什么要在这里写博客,为了得到大家的关注、认可,或是交流,其实这些目前都还没有达到,博客换了很多地方,从之前的杂言乱语,情绪抒发,到现在的记录点滴,其实这一切如果说当初有哗众取宠之意,那现在过往许久,只是记录自己生命中这个时段的点滴而已,其实汇总成文字的过程就是自己提炼总结的过程,在写的过程中你会发现你之前的很多碎片的东西可以串起来,就当是对自己的犒赏,写给自己,至于过客或喜或恶,只不过是过往云烟。

在实际的生产系统中,Greenplum的节点数目不会少,也就是说我们的物理机器也不会太少,否则发挥不出GP的优势,在之前的测试中,5个节点的GP(每台56G)与一台256G的Oracle的性能并没有差距太多,甚至在个别测试中,还不如oracle的性能好。因此机器多是必然,但是这就引出一个问题,这么多机器在安装和后续管理的时候,是不可能每台机器都登陆上去逐个检查配置等信息的,因此如何管理集群机器是分布式系统的一个非常关键的小知识点,好在PIVOTAL提供了类似gpscp、gpssh、gpseginstall等类似的辅助工具,极大方便了我们的工作。

环境说明:
1.我们是用了3台物理机虚拟除了6台配置一样的虚拟机(在生产系统中还没有看到类似的虚拟机方案,我们也是在机房机位紧张的情况下无奈做的尝试,建议还是物理机),每台机器65G内存 2T空间,系统安装的CentOS6.5
2.网络设置:如果环境允许,最好是万兆网络,我们的是千兆网络(没得选)
3.机器的网卡设置:
这点非常关键,我们尝试安装的第一次,就是默认每台机器只安装了一块网卡,因此每个虚拟机只能安装一个节点(其实单网卡也可以设置多个节点,但是数据也就只走这个网口),本次安装安装了双网卡,并在物理上配置在不同的网段并物理与不同的交换机连接(在支持VLAN的交换机上用VLAN分割),具体来说就是设置如下:
每台机器上设置eth0和eth1,分别在10和20网段,比如有6台机器分别设置如下:

10.0.10.66 dw66-if0
10.0.10.67 dw67-if0
10.0.10.68 dw68-if0
10.0.10.69 dw69-if0
10.0.10.70 dw70-if0
10.0.10.71 dw71-if0
10.0.20.40 dw66-if1
10.0.20.41 dw67-if1
10.0.20.42 dw68-if1
10.0.20.43 dw69-if1
10.0.20.44 dw70-if1
10.0.20.45 dw71-if1

这里66机器上有2个IP:10.0.10.66 和10.0.20.40分别对应eth0和eth1设置不同的hostname名,是为了保证数据按照不同的网口进行数据传输。

一、安装前准备

1.关闭selinux iptables
2.vi /etc/hosts 只修改master,稍后用gpscp操作

10.0.10.66 dw66-if0
10.0.10.67 dw67-if0
10.0.10.68 dw68-if0
10.0.10.69 dw69-if0
10.0.10.70 dw70-if0
10.0.10.71 dw71-if0
10.0.20.40 dw66-if1
10.0.20.41 dw67-if1
10.0.20.42 dw68-if1
10.0.20.43 dw69-if1
10.0.20.44 dw70-if1
10.0.20.45 dw71-if1

注意这里的hostname需要和if0名称一致,否则后面gpscp或者gpssh-exkey会出错
vi /etc/sysconfig/network修改机器名如66机器:dw66-if0
3.crontab -e

8 */2 * * * /usr/sbin/ntpdate asia.pool.ntp.org && /sbin/hwclock --systohc

4.vi /etc/security/limits.conf

*       soft    nofile  1048576
*       hard    nofile  1048576
*       soft    nproc   1048576
*       hard    nproc   1048576

在RHEL6.x版本还需要修改文件/etc/security/limits.d/90-nproc.conf

*       soft    nofile  1048576
*       hard    nofile  1048576
*       soft    nproc   1048576
*       hard    nproc   1048576

5.vi /etc/rc.d/rc.local

/sbin/blockdev --setra 16384 /dev/sda
/sbin/blockdev --setra 16384 /dev/sda1
/sbin/blockdev --setra 16384 /dev/sda2

6.vi /boot/grub/grub.conf
在kernel那行的最后增加elevator=deadline
重启后检查cat /sys/block/*/queue/scheduler

transparent_hugepage=never
该参数可选,在RHEL6.x、SLES11上考虑配置该参数

7.vi /etc/sysctl.conf

kernel.shmmax = 68719476736  #modify 64G
kernel.shmall = 40000000000 #modify

kernel.shmmni=4096
kernel.sem = 250 5120000 100 20480
kernel.msgmni = 2048

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.ipv4.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
vm.overcommit_memory = 2

8.vi /etc/ssh/sshd_config

 MaxStartups 10000:30:20000
 注意service sshd restart

9.关闭非必要的服务

chkconfig cpuspeed off
完整版:
  chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig conman off
chkconfig bluetooth off
chkconfig cpuspeed off
chkconfig setroubleshoot off
chkconfig hidd off
chkconfig hplip off
chkconfig isdn off
chkconfig kudzu off
chkconfig yum-updatesd off

10.确保重启机器

二、安装GPDB
1.下载安装文件
unzip greenplum-db-4.3.7.3-build-2-RHEL5-x86_64.zip
./greenplum-db-4.3.7.3-build-2-RHEL5-x86_64.bin
按照提示输入yes和安装路径,比如/home/greenplum-4.3

 vi ~/.bashrc 
  source /home/greenplum-4.3/greenplum_path.sh

  source ~/.bashrc 

2.创建配置的hosts文件

mkdir -p /home/greenplum-db/gpconfigs
  cd /home/greenplum-db/gpconfigs

  vi all_host
dw66-if0
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
dw66-if1
dw67-if1
dw68-if1
dw69-if1
dw70-if1
dw71-if1

  vi scp_hosts
dw66-if0
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0

  vi seg_hosts:66机器是master把列表中的两个ip记录删除掉
dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0
dw67-if1
dw68-if1
dw69-if1
dw70-if1
dw71-if1

3.建立多机信任

root@dw66-if0#gpssh-exkeys -f /home/greenplum-db/gpconfigs/all_hosts第一次输入密码

4.关闭Disable Transparent Huge Pages,会引起性能问题

gpssh -f -f /home/greenplum-db/gpconfigs/all_hosts
    =>cd /sys/kernel/mm/redhat_transparent_hugepage
    =>cat enabled
    [dw70-if0] [always] madvise never
    [dw67-if0] [always] madvise never
    [dw66-if0] [always] madvise never
    [dw69-if0] [always] madvise never
    [dw68-if0] [always] madvise never
    [dw71-if0] [always] madvise never
    =>exit

5.通过gpscp复制/etc/hosts文件
gpscp -f /home/greenplum-db/gpconfigs/scp_hosts /etc/hosts =:/etc/hosts
可通过登录其他机器验证,或者使用gpssh -f /home/greenplum-db/gpconfigs/all_hosts
=>cat /etc/hosts来验证
6.用户和组设置

   passwd --stdin 用任意文件做标准输入
     echo gpadmin_2015 | passwd gpadmin --stdin 用管道作为输入,gpadmin密码gpadmin_2015

     gpssh -f  /home/greenplum-db/gpconfigs/all_hosts
     =>groupadd -g 3030 gpadmin
     =>groupadd -g 3040 gpmon
     =>useradd -u 3030 -g gpadmin -m -s /bin/bash gpadmin  
     =>useradd -u 3040 -g gpmon -m -s /bin/bash gpmon
     =>echo gpadmin | passwd  gpadmin --stdin 
     =>echo gpmon | passwd  gpmon --stdin
     =>chown -R gpadmin:gpadmin /home/greenplum-4.3/
     =>chown -R gpadmin:gpadmin /home/greenplum-db 

7.segment安装
root@dw66-if0# gpseginstall -f /home/greenplum-db/gpconfigs/seg_hosts -c sv
会压缩后scp解压安装并设置属主权限等可用gpssh查看segment节点的情况
这步有的资料介绍会先压缩然后使用gpscp复制到segment,但是我认为不如上面的办法简便,给出代码供参考

    root@dw66-if0# tar -jcvf gp4.3.tar.bz2 greenplum-4.3/
    root@dw66-if0# gpscp -f  /home/greenplum-db/gpconfigs/seg_hosts gp4.3.tar.bz2 =:/home  
    root@dw66-if0# gpssh -f  /home/greenplum-db/gpconfigs/seg_hosts
    =>cd /home
    =>tar -jxvf gp4.3.tar.bz2 /home
    =>chown -R gpadmin:gpadmin /home/greenplum-4.3/
    =>ln -s /home/greenplum-4.3/ /home/greenplum-db 

8.gpadmin用户设置

master节点:
     su - gpadmin
     vi ~/.bashrc
     source /home/greenplum-db/greenplum_path.sh
     MASTER_DATA_DIRECTORY=/home/greenplum-db/data/master/gpseg-1
     export MASTER_DATA_DIRECTORY

     segment节点:
     gpssh -f  /home/greenplum-db/gpconfigs/seg_hosts
     =》echo "source /home/greenplum-db/greenplum_path.sh" >> /home/gpadmin/.bashrc
     =>cat /home/gpadmin/.bashrc
     => source /home/greenplum-db/greenplum_path.sh
     =>exit

9.gpadmin用户的多机信任

su - gpadmin
     gpadmin@dw66-if0#gpssh-exkeys -f /home/greenplum-db/gpconfigs/all_hosts
     输入gpadmin密码gpadmin

10.数据节点目录创建

master节点:
     root@dw66-if0# mkdir -p /home/greenplum-db/data/master  #注意这里必须和.bashrc设置一致
     root@dw66-if0# chown -R gpadmin:gpadmin /home/greenplum-db/data/master
     segment节点:
     gpssh -f /home/greenplum-db/gpconfigs/scp_hosts
     =>mkdir -p /home/gpadmin/data/gpdatap1
     =>mkdir -p /home/gpadmin/data/gpdatap2
     =>chown -R gpadmin:gpadmin /home/gpadmin/data/gpdatap1
     =>chown -R gpadmin:gpadmin /home/gpadmin/data/gpdatap2
     #如果配置了mirror目录页需要在这里设置
     这里采用root用户配置再强制设置属主和属组gpadmin,其实也可以用gpadmin用户操作用root只是为了保险确保目录属主正确

11.系统检查
11.1 参数检查

root@dw66-if0# gpcheck -f /home/greenplum-db/gpconfigs/all_hosts -m dw66-if0
     root@dw66-if0# gpcheck -f /home/greenplum-db/gpconfigs/all_hosts -m dw66-if0 -s hostname #如果有standby master

11.2网络检查

root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/all_hosts -r N -d /tmp > checknetwork.out  

说明:这里可以吧不同网段拆分成两个文件分别测试,
网络性能测试参数主要有N和M两个,N是会两台机器之间两两互联双向测试,因此如果采用N则chknet1文件中的列举的主机数量需要为双数。M是网络矩阵测试,每台服务器同时向所有其他服务器发送数据包,以及接收所有其他服务器发来的数据包。矩阵测试更加贴近GP使用的实际情况。
网络性能测试,建议N和M都建议进行测试。特别是集群机器比较多的时候,需要多留意矩阵测试的结果。
11.3磁盘性能

内存及磁盘:
     root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/seg_hosts -r ds -D -d /tmp/gpdata1 -d /tmp/gpdata2  > checkio.out
     磁盘:
     root@dw66-if0# gpcheckperf -f /home/greenplum-db/gpconfigs/seg_hosts -r d -D -d /tmp/gpdata1 -d /tmp/gpdata2 
     某台机磁盘检查:
     root@dw66-if0# gpcheckperf -h sdw6 -h sdw7 -h sdw8 -h sdw9 -h sdw10 -r d -D -d /data1/primary -d /data2/primary 

12.初始化数据库

 su - gpadmin
     gpadmin@dw66-if0# cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config  $GPHOME/gpconfigs/
     vi gpinitsystem_config
     MASTER_HOSTNAME=dw66-if0
     declare -a DATA_DIRECTORY=(/home/gpadmin/data/gpdatap1 /home/gpadmin/data/gpdatap2)  
     MASTER_DIRECTORY=/home/greenplum-4.3/data/master   

     chmod -R 755 gpinitsystem_config
     gpinitsystem -c /home/greenplum-db/gpconfigs/gpinitsystem_config -h /home/greenplum-db/gpconfigs/seg_hosts

13.系统参数优化:

gpconfig -c checkpoint_segments -v 64
     gpconfig -c effective_cache_size -v 61200MB
     gpconfig -c shared_buffers -v 1024MB
     gpconfig -c effective_cache_size -v 2000MB
     gpconfig -c maintenance_work_mem -v 512MB
     gpconfig -c gp_vmem_protect_limit  -v 51200
     gpconfig -c max_statement_mem -v 51200MB
     gpconfig -c statement_mem -v 5120MB

三、数据管理

gpadmin@dw66-if0# nohup gpfdist -d /home/greenplum-db/ext_files -p 8081 >/tmp/gpfdist.log &

注意这里的fdist进程必须用nohup后台进程启动,否则在通过外部表导入heap表的时候,屏幕会出现一堆信息干扰正常信息

createdb bigdata -E utf-8 
   psql -d bigdata
   create external table ext_tb_idm_itg_his_cl
(
id1_type varchar(100),
id1_value varchar(200),
id2_type varchar(100),
id2_value varchar(200),
seqno bigint
) Location('gpfdist://10.0.10.66:8081/tb_idm_itg_his_cl.txt')
Format 'TEXT'(delimiter '^' null as '' escape 'OFF');  

create table tb_idm_itg_his_cl
(
id1_type varchar(100),
id1_value varchar(200),
id2_type varchar(100),
id2_value varchar(200),
seqno bigint
)DISTRIBUTED BY (seqno);

insert into tb_idm_itg_his_cl select distinct upper(id1_type),upper(id1_value),upper(id2_type),upper(id2_value),seqno from ext_tb_idm_itg_his_cl;

四、安装Greenplum Command Center Console
1.安装:注意用root用户

[root@dw66-if0 ~]# ./greenplum-cc-web-1.3.0.0-build-91-RHEL5-x86_64.bin
  输入performance monitor的安装目录 /home/greenplum-4.3-cc

chown -R gpadmin:gpadmin greenplum-4.3-cc/
  chown -R gpadmin:gpadmin greenplum-cc-web


设置环境变量
  [root@dw66-if0 ~]#source /home/greenplum-4.3-cc/gpcc_path.sh
  或者vi ~/.bashrc
     source /home/greenplum-4.3/greenplum_path.sh
     source /home/greenplum-4.3-cc/gpcc_path.sh
  source ~/.bashrc

2.在所有主机安装CC

vi seg_cchost
   dw67-if0
dw68-if0
dw69-if0
dw70-if0
dw71-if0



   tar czvf gpcc.tar.gz /home/greenplum-4.3-cc/
   gpscp -f seg_cchosts gpcc.tar.gz =:/home/  
   gpssh -f seg_cchost 
   =>cd /home
   =>tar xzvf gpcc.tar.gz 
   =>ln -s /home/greenplum-4.3-cc/ greenplum-cc-web
   =>chown -R gpadmin:gpadmin /home/greenplum-4.3-cc/
   =>chown -R gpadmin:gpadmin greenplum-cc-web
   =>exit

3.su - gpadmin

  vi .bashrc
  source /home/greenplum-4.3-cc/gpcc_path.sh

  vi /home/greenplum-db/data/master/gpseg-1/pg_hba.conf增加
  host    gpperfmon   gpmon           ::1/128    md5

  gpstop -r

4.gpcmdr –setup

Please enter a new instance name:输入gpcc
   Is the master host for the Greenplum Database remote? Yy|Nn (default=N):n
   What would you like to use for the display name for this instance:gpcc
   What port does the Greenplum Database use? (default=5432):回车
   will you install workload manaager (default=N):Y
   What port would you like the web server to use for this instance?回车
   Do you want to enable SSL for the Web API Yy|Nn (default=N):y
   Do you want to copy the instance to a standby master host Yy|Nn (default=Y): 没有standby n
   What is the hostname of the standby master host? [mdw]:回车 

  gpcmdr --start gpcc

  查看端口状态: lsof -i :28080 
     发现是lighttpd

   浏览:
   http://dw66-if0:28080/

5.优化

cd /home/greenplum-db/data/master/gpseg-1/gpperfmon/conf
    vi gpperfmon.conf 
    quantum=60    #默认15s 从节点收集信息的频率
    min_query_time=300 #默认20 最小查询运行时间
    max_disk_space_messages_per_interval=50  #错误/警告消息的最大数量,默认10
    partition_age=6  #分区统计数据保留月份数,默认不开启

修改上述参数可以降低GPCC Agent的数据采集频率。也可以有效降低gpperfmon数据库的大小,尽量避免GPCC对数据库运行效率的影响。

后记:以上安装记录我们安装了GPDB和GPCC,数据库和监控都安装了,同时我们导入了一部分数据进行了测试,通过实际检测,10节点比5节点的查询效率进本快乐40~60%之间,性能提升比较明显,所有这些是我们没有增加物理机器的前提下,只是增加了一个网口而已,在PIVOTAL的文档中,一个物理机器原则上不超过4个节点,目前我们一个物理机2个虚拟机4个节点,基本达到了要求,没有尝试在一台虚拟机上运行4个节点,虽然有四个网口(一个是管理网口),如果谁有这方面的经验可以探讨下。


版权声明:本文为jameswangcnbj原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。