部署结构

image.png

主机名称 IP 节点说明 节点介绍
mdw 10.30.16.140 主节点 master节点
sdw1 10.30.16.141 从节点 每台部署两个主seg节点 两台镜像seg节点,提高可用性
sdw2 10.30.16.142 从节点

环境准备

1. 关闭selinux 和防火墙

  1. 一、selinux关闭
  2. 1)永久关闭sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 重启服务器
  3. 状态检查 sestatus
  4. 2)临时关闭sudo setenforce 0
  5. 状态检查getenforce状态变为 Permissive
  6. 二、关闭防火墙
  7. 1)设置开机启用防火墙:systemctl enable firewalld.service
  8. 2)设置开机禁用防火墙:systemctl disable firewalld.service
  9. 3)启动防火墙:systemctl start firewalld
  10. 4)关闭防火墙:systemctl stop firewalld
  11. 5)检查防火墙状态:systemctl status firewalld

2. 给ip配置域名,方便解析

MASTER节点需要配置自己及所有segment节点的host解析

  1. #vim /etc/hosts
  2. 粘贴
  3. 10.30.16.140 mdw
  4. 10.30.16.141 sdw1
  5. 10.30.16.142 sdw2

3. 创建gpadmin用户和用户组 在master主机操作(master服务器)

  1. 一、删除原有用户信息
  2. 1)删除用户组 groupdel gpadmin
  3. 2)删除用户 userdel gpadmin
  4. 二、添加用户信息
  5. 1)创建组gpadmin groupadd gpadmin
  6. 2)创建gpadmin用户 useradd gpadmin -r -m -g gpadmin
  7. 3)对文件夹进行赋权 chown -R gpadmin:gpadmin /home/gpadmin/
  8. 4)为gpadmin创建密码 passwd gpadmin

4. 设置系统推荐参数 (参数配置参考待补充)

  1. vi /etc/sysctl.conf
  2. 添加
  3. kernel.shmall =2033274
  4. #kernel.shmmax = kernel.shmall * PAGE_SIZE
  5. kernel.shmmax = 8328290304
  6. kernel.shmmni = 4096vm.overcommit_memory = 2
  7. vm.overcommit_ratio = 95
  8. net.ipv4.ip_local_port_range = 10000 65535
  9. kernel.sem = 500 2048000 200 40960
  10. kernel.sysrq = 1
  11. kernel.core_uses_pid = 1
  12. kernel.msgmnb = 65536
  13. kernel.msgmax = 65536
  14. kernel.msgmni = 2048
  15. net.ipv4.tcp_syncookies = 1
  16. net.ipv4.conf.default.accept_source_route = 0
  17. net.ipv4.tcp_tw_recycle=1
  18. net.ipv4.tcp_max_syn_backlog = 4096
  19. net.ipv4.conf.all.arp_filter = 1
  20. net.core.netdev_max_backlog = 10000
  21. net.core.rmem_max = 2097152
  22. net.core.wmem_max = 2097152
  23. vm.swappiness = 10
  24. vm.zone_reclaim_mode = 0
  25. vm.dirty_expire_centisecs = 500
  26. vm.dirty_writeback_centisecs = 100
  27. vm.dirty_background_ratio = 3
  28. 保存 wq
  29. 执行 命令
  30. awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf
  31. 生成vm.min_free_kbytes参数
  32. 执行sysctl -p 生效

5. 修改limits.conf 系统资源限制

  1. vi /etc/security/limits.conf
  2. 追加一下内容
  3. * soft nofile 65536
  4. * hard nofile 65536
  5. * soft nproc 131072
  6. * hard nproc 131072
  7. 注释:*表示所有用户

主节点gp安装配置

1. 在master节点gp安装

  1. 1)新建存放gp安装包目录 mkdir /usr/greenplum
  2. 2)将gp安装包导入目录
  3. 3gp安装 yum install -y ./greenplum-db-6.5.0-rhel7-x86_64.rpm
  4. 注释: 执行 此操作可以 顺带安装依赖 不需要手动安装
  5. 4)应用gp命令 source /usr/local/greenplum-db/greenplum_path.sh

2. 配置连接各个服务器文件hosts

  1. 1)在master主机创建包含所有节点的all_hosts,将所有服务器名记录再里面
  2. 创建 all_hosts文件
  3. vi /usr/local/greenplum-db/all_hosts
  4. 加入
  5. mdw
  6. sdw1
  7. sdw2
  8. 2)在master主机 创建seg_hosts只保存segment节点的hostname
  9. vi /usr/local/greenplum-db/seg_hosts
  10. 加入
  11. sdw1
  12. sdw2
  13. 3)修改文件权限
  14. chown -R gpadmin:gpadmin /usr/local/greenplum*

打通所有服务器

1. 使用root 用户打通所有服务器

  1. 进入数据库目录
  2. cd /usr/local/greenplum-db
  3. 1)生成密钥 ssh-keygen
  4. 2)将本机的公钥复制到各个机器的authorized_keys文件中
  5. ssh-copy-id sdw1
  6. ssh-copy-id sdw2
  7. 3)指定计算机名称 hostnamectl set-hostname mdw
  8. 4)打通服务器 gpssh-exkeys -f /usr/local/greenplum-db/all_hosts
  9. 5)验证是否打通
  10. gpssh -f /usr/local/greenplum-db/all_hosts -e 'ls /usr/local/'
  11. 出现每个服务器信息即为打通成功

2. 使用gpadmin用户打通所有服务器

  1. 批量添加gpadmin用户
  2. 1)批量添加gpadmin用户
  3. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'groupadd gpadmin;useradd gpadmin -r -m -g gpadmin;echo "rh2020gpadmin" | passwd --stdin gpadmin;'
  4. 2)校验gpadmin用户
  5. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'ls /home/'
  6. 使用gpadmin用户打通所有服务器
  7. 1)切换gpadmin用户 su - gpadmin
  8. 2)应用greenplum命令 source /usr/local/greenplum-db/greenplum_path.sh
  9. 3)生成密钥 ssh-keygen
  10. 3)将本机的公钥复制到各个机器的authorized_keys文件中
  11. ssh-copy-id sdw1
  12. ssh-copy-id sdw2
  13. 4)打通服务器 gpssh-exkeys -f /usr/local/greenplum-db/all_hosts
  14. 5)验证是否打通
  15. gpssh -f /usr/local/greenplum-db/all_hosts -e 'ls /usr/local/'
  16. 出现每个服务器信息即为打通成功

配置服务器环境

1. 配置服务器中gpadmin环境变量

  1. 批量设置greenplumgpadmin用户下的环境变量
  2. 1 编辑./bash_profile(直接复制3行粘贴执行)
  3. cat >> /home/gpadmin/.bash_profile << EOF
  4. source /usr/local/greenplum-db/greenplum_path.sh
  5. EOF
  6. 2 编辑.bashrc(直接复制3行粘贴执行)
  7. cat >> /home/gpadmin/.bashrc << EOF
  8. source /usr/local/greenplum-db/greenplum_path.sh
  9. EOF
  10. 将环境变量分发到各个节点
  11. 1 分发./bash_profile
  12. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
  13. 2 分发.bashrc
  14. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc

2. 分发系统参数到segment主机

  1. 1)切换到root用户 su - root
  2. 2)应用环境变量 source /usr/local/greenplum-db/greenplum_path.sh
  3. 3)分发hosts文件
  4. gpscp -f /usr/local/greenplum-db/seg_hosts /etc/hosts root@=:/etc/hosts
  5. 4)分发limits.conf
  6. gpscp -f /usr/local/greenplum-db/seg_hosts /etc/security/limits.conf root@=:/etc/security/limits.conf
  7. 5)分发sysctl.conf 文件
  8. gpscp -f /usr/local/greenplum-db/seg_hosts /etc/sysctl.conf root@=:/etc/sysctl.conf
  9. 6)应用sysctl参数
  10. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'sysctl -p'
  11. 7)重启全部服务器
  12. gpssh -f /usr/local/greenplum-db/all_hosts -e 'reboot'

在segment主机安装greenplum

1 在master主机打包greenplum

  1. 1)赋予gp目录 的权限给gpadmin用户
  2. chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.5.0
  3. 2)删除已有压缩包
  4. rm -f /usr/local/greenplum-db-6.5.0.tar;
  5. rm -f /usr/local/greenplum-db-6.5.0.tar.gz;
  6. 3)打包gpadmin
  7. cd /usr/local; tar cf greenplum-db-6.5.0.tar greenplum-db-6.5.0
  8. gzip /usr/local/greenplum-db-6.5.0.tar
  9. 4)应用环境变量 source /usr/local/greenplum-db/greenplum_path.sh

2 分发安装包到segment服务器,并安装

  1. 1)删除服务器中tar gz
  2. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "mkdir -p /usr/local;rm -rf /usr/local/greenplum-db-6.5.0;rm -rf /usr/local/greenplum-db-6.5.0.tar;rm -rf /usr/local/greenplum-db-6.5.0.tar.gz"
  3. 2)将压缩包上传到segment服务器
  4. gpscp -f /usr/local/greenplum-db-6.5.0/seg_hosts /usr/local/greenplum-db-6.5.0.tar.gz root@=:/usr/local/greenplum-db-6.5.0.tar.gz
  5. 3)在segment服务器上解压
  6. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "cd /usr/local;gzip -f -d /usr/local/greenplum-db-6.5.0.tar.gz;tar xf /usr/local/greenplum-db-6.5.0.tar"
  7. 4)删除 segment服务器上压缩包
  8. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "rm -rf /usr/local/greenplum-db-6.5.0.tar;rm -rf /usr/local/greenplum-db-6.5.0.tar.gz;rm -f /usr/local/greenplum-db"
  9. 5)建立软连接greenplum-db-6.5.0 greenplum-db
  10. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e ln -fs /usr/local/greenplum-db-6.5.0 /usr/local/greenplum-db
  11. 6)给segment服务器上安装目录赋权限
  12. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "chown -R gpadmin:gpadmin /usr/local/greenplum-db;chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.5.0"
  13. 7)给segment服务器应用 gp环境
  14. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "source /usr/local/greenplum-db-6.5.0/greenplum_path.sh"
  15. 8 查看segment local底下目录
  16. gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "cd /usr/local;ll"

配置集群,为初始化gp做准备

1. 创建数据库目录

  1. 1)创建master数据库目录 ,并给目录赋权
  2. mkdir -p /opt/greenplum/data/master
  3. chown gpadmin:gpadmin /opt/greenplum/data/master
  4. 2)创建standby 数据目录,并给目录赋权
  5. source /usr/local/greenplum-db/greenplum_path.sh
  6. gpssh -h sdw2 -e 'mkdir -p /data/master'
  7. gpssh -h sdw2 -e 'chown gpadmin:gpadmin /data/master'
  8. 3)创建segment主机数据目录,并给目录赋权
  9. segment建两个实例,两个镜像
  10. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data1/primary'
  11. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data1/mirror'
  12. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data2/primary'
  13. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data2/mirror'
  14. gpssh -f /usr/local/greenplum-db/seg_hosts -e 'chown -R gpadmin /opt/greenplum/data*'

2. 网络测试

  1. gpcheckperf -f /usr/local/greenplum-db/seg_hosts -r N -d /tmp
  2. /usr/local/greenplum-db/./bin/gpcheckperf -f /usr/local/greenplum-db/seg_hosts -r N -d /tmp

3. 时间校验

  1. gpssh -f /usr/local/greenplum-db/all_hosts -e 'date'

4. 部署chronyd同步服务器时间(最好部署,同步时间对集群来说很重要)

结构介绍

IP 主机名 操作系统 描述 同步方式
10.30.16.140 mdw centos7.0 向阿里云提供的公网NTP服务器同步时间 chronyd服务平滑同步
10.30.16.141 sdw1 centos7.0 向10.30.16.140同步时间 chronyd服务平滑同步
10.30.16.142 sdw2 centos7.0 向10.30.16.140同步时间 chronyd服务平滑同步

1) 配置mdw 主机 ,同步阿里云ntp服务器时间

  1. 安装并配置chrony
  2. 1)使用yum安装 yum -y install chrony
  3. 2)备份chrony.conf
  4. mv /etc/chrony.conf /etc/chrony.conf.bak
  5. 3)编辑 chrony.conf 文件
  6. vi /etc/chrony.conf
  7. server ntp1.aliyun.com iburst minpoll 4 maxpoll 10
  8. server ntp2.aliyun.com iburst minpoll 4 maxpoll 10
  9. server ntp3.aliyun.com iburst minpoll 4 maxpoll 10
  10. server ntp4.aliyun.com iburst minpoll 4 maxpoll 10
  11. server ntp5.aliyun.com iburst minpoll 4 maxpoll 10
  12. server ntp6.aliyun.com iburst minpoll 4 maxpoll 10
  13. server ntp7.aliyun.com iburst minpoll 4 maxpoll 10
  14. # 记录系统时钟获得/丢失时间的速率至drift文件中
  15. driftfile /var/lib/chrony/drift
  16. # 如果系统时钟的偏移量大于10秒,则允许在前三次更新中步进调整系统时钟
  17. makestep 10 3
  18. # 启用RTC(实时时钟)的内核同步
  19. rtcsync
  20. # 只允许10.30.16网段的客户端进行时间同步
  21. allow 10.30.16.0/24
  22. # 阿里云提供的公网NTP服务器不可用时,采用本地时间作为同步标准
  23. local stratum 10
  24. # 指定包含NTP验证密钥的文件
  25. keyfile /etc/chrony.keys
  26. # 指定存放日志文件的目录
  27. logdir /var/log/chrony
  28. # 让chronyd在选择源时忽略源的层级
  29. stratumweight 0.05
  30. # 禁用客户端访问的日志记录
  31. noclientlog
  32. # 如果时钟调整大于0.5秒,则向系统日志发送消息
  33. logchange 0.5
  34. 4)启动chronyd服务
  35. 启动chronyd服务 systemctl start chronyd.service
  36. 查看chronyd 服务状态 systemctl status chronyd.service
  37. 设置开机自启动chronyed服务 systemctl enable chronyd.service
  38. 查看时间同步源 chronyc sources -v

2) 配置seg 主机 ,master服务器时间(分别再segment主机部署)

  1. 安装并配置chrony
  2. 1)使用yum安装 yum -y install chrony
  3. 2)备份chrony.conf
  4. mv /etc/chrony.conf /etc/chrony.conf.bak
  5. 3)编辑 chrony.conf 文件
  6. vi /etc/chrony.conf
  7. server 10.30.16.140 iburst
  8. driftfile /var/lib/chrony/drift
  9. makestep 10 3
  10. rtcsync
  11. local stratum 10
  12. keyfile /etc/chrony.keys
  13. logdir /var/log/chrony
  14. stratumweight 0.05
  15. noclientlog
  16. logchange 0.5
  17. 4)启动chronyd服务
  18. 启动chronyd服务 systemctl start chronyd.service
  19. 查看chronyd 服务状态 systemctl status chronyd.service
  20. 设置开机自启动chronyed服务 systemctl enable chronyd.service
  21. 查看时间同步源 chronyc sources -v

5. 配置初始化环境变量

  1. 1)切换gpadmin用户 su - gpadmin
  2. 2)修改.bash_profile 文件 执行
  3. cat >> /home/gpadmin/.bash_profile << EOF
  4. export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
  5. EOF
  6. 3)修改.bashrc 文件 执行
  7. cat >> /home/gpadmin/.bashrc << EOF
  8. export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
  9. EOF
  10. 4)分发变量
  11. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
  12. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
  13. gpssh -f /usr/local/greenplum-db/all_hosts -e 'source /home/gpadmin/.bash_profile;source /home/gpadmin/.bashrc;'

6. 配置初始化文件

  1. 1)创建文件目录 mkdir -p /home/gpadmin/gpconfigs
  2. 2)复制初始化模板文件
  3. cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
  4. 3)配置初始化文件
  5. vi /home/gpadmin/gpconfigs/gpinitsystem_config
  6. ARRAY_NAME="Greenplum Data Platform"
  7. SEG_PREFIX=gpseg
  8. PORT_BASE=6001
  9. declare -a DATA_DIRECTORY=(/opt/greenplum/data1/primary /opt/greenplum/data2/primary)
  10. MASTER_HOSTNAME=mdw
  11. MASTER_DIRECTORY=/opt/greenplum/data/master
  12. MASTER_PORT=5432
  13. TRUSTED_SHELL=ssh
  14. CHECK_POINT_SEGMENTS=8
  15. ENCODING=UNICODE
  16. MIRROR_PORT_BASE=7000
  17. declare -a MIRROR_DATA_DIRECTORY=(/opt/greenplum/data1/mirror /opt/greenplum/data2/mirror)
  18. DATABASE_NAME=gpdw

集群初始化

1.执行集群初始化步骤

  1. gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /usr/local/greenplum-db/seg_hosts -D

2. 配置gpadmin环境变量

  1. 1)编辑 .bash_profile
  2. su - gpadmin
  3. cat >> /home/gpadmin/.bash_profile << EOF
  4. export PGPORT=5432
  5. export PGUSER=gpadmin
  6. export PGDATABASE=gpdw
  7. EOF
  8. 2)编辑 .bashrc
  9. cat >> /home/gpadmin/.bashrc << EOF
  10. export PGPORT=5432
  11. export PGUSER=gpadmin
  12. export PGDATABASE=gpdw
  13. EOF
  14. 3)环境变量文件分发到其他节点
  15. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
  16. gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
  17. gpssh -f /usr/local/greenplum-db/all_hosts -e 'source /home/gpadmin/.bash_profile;source /home/gpadmin/.bashrc;'

3. 关闭数据库,重启服务器

  1. gpstop -a
  2. 重启所有服务器

4. 启动gp

  1. gpstart -a