部署结构
主机名称 | IP | 节点说明 | 节点介绍 |
---|---|---|---|
mdw | 10.30.16.140 | 主节点 | master节点 |
sdw1 | 10.30.16.141 | 从节点 | 每台部署两个主seg节点 两台镜像seg节点,提高可用性 |
sdw2 | 10.30.16.142 | 从节点 |
环境准备
1. 关闭selinux 和防火墙
一、selinux关闭
(1)永久关闭sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 重启服务器
状态检查 sestatus
(2)临时关闭sudo setenforce 0
状态检查getenforce状态变为 Permissive
二、关闭防火墙
(1)设置开机启用防火墙:systemctl enable firewalld.service
(2)设置开机禁用防火墙:systemctl disable firewalld.service
(3)启动防火墙:systemctl start firewalld
(4)关闭防火墙:systemctl stop firewalld
(5)检查防火墙状态:systemctl status firewalld
2. 给ip配置域名,方便解析
MASTER节点需要配置自己及所有segment节点的host解析
#vim /etc/hosts
粘贴
10.30.16.140 mdw
10.30.16.141 sdw1
10.30.16.142 sdw2
3. 创建gpadmin用户和用户组 在master主机操作(master服务器)
一、删除原有用户信息
(1)删除用户组 groupdel gpadmin
(2)删除用户 userdel gpadmin
二、添加用户信息
(1)创建组gpadmin组 groupadd gpadmin
(2)创建gpadmin用户 useradd gpadmin -r -m -g gpadmin
(3)对文件夹进行赋权 chown -R gpadmin:gpadmin /home/gpadmin/
(4)为gpadmin创建密码 passwd gpadmin
4. 设置系统推荐参数 (参数配置参考待补充)
vi /etc/sysctl.conf
添加
kernel.shmall =2033274
#kernel.shmmax = kernel.shmall * PAGE_SIZE
kernel.shmmax = 8328290304
kernel.shmmni = 4096vm.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_tw_recycle=1
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
保存 wq
执行 命令
awk 'BEGIN {OFMT = "%.0f";} /MemTotal/ {print "vm.min_free_kbytes =", $2 * .03;}' /proc/meminfo >> /etc/sysctl.conf
生成vm.min_free_kbytes参数
执行sysctl -p 生效
5. 修改limits.conf 系统资源限制
vi /etc/security/limits.conf
追加一下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
注释:*表示所有用户
主节点gp安装配置
1. 在master节点gp安装
(1)新建存放gp安装包目录 mkdir /usr/greenplum
(2)将gp安装包导入目录
(3)gp安装 yum install -y ./greenplum-db-6.5.0-rhel7-x86_64.rpm
注释: 执行 此操作可以 顺带安装依赖 不需要手动安装
(4)应用gp命令 source /usr/local/greenplum-db/greenplum_path.sh
2. 配置连接各个服务器文件hosts
(1)在master主机创建包含所有节点的all_hosts,将所有服务器名记录再里面
创建 all_hosts文件
vi /usr/local/greenplum-db/all_hosts
加入
mdw
sdw1
sdw2
(2)在master主机 创建seg_hosts只保存segment节点的hostname
vi /usr/local/greenplum-db/seg_hosts
加入
sdw1
sdw2
(3)修改文件权限
chown -R gpadmin:gpadmin /usr/local/greenplum*
打通所有服务器
1. 使用root 用户打通所有服务器
进入数据库目录
cd /usr/local/greenplum-db
(1)生成密钥 ssh-keygen
(2)将本机的公钥复制到各个机器的authorized_keys文件中
ssh-copy-id sdw1
ssh-copy-id sdw2
(3)指定计算机名称 hostnamectl set-hostname mdw
(4)打通服务器 gpssh-exkeys -f /usr/local/greenplum-db/all_hosts
(5)验证是否打通
gpssh -f /usr/local/greenplum-db/all_hosts -e 'ls /usr/local/'
出现每个服务器信息即为打通成功
2. 使用gpadmin用户打通所有服务器
一 批量添加gpadmin用户
(1)批量添加gpadmin用户
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'groupadd gpadmin;useradd gpadmin -r -m -g gpadmin;echo "rh2020gpadmin" | passwd --stdin gpadmin;'
(2)校验gpadmin用户
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'ls /home/'
二 使用gpadmin用户打通所有服务器
(1)切换gpadmin用户 su - gpadmin
(2)应用greenplum命令 source /usr/local/greenplum-db/greenplum_path.sh
(3)生成密钥 ssh-keygen
(3)将本机的公钥复制到各个机器的authorized_keys文件中
ssh-copy-id sdw1
ssh-copy-id sdw2
(4)打通服务器 gpssh-exkeys -f /usr/local/greenplum-db/all_hosts
(5)验证是否打通
gpssh -f /usr/local/greenplum-db/all_hosts -e 'ls /usr/local/'
出现每个服务器信息即为打通成功
配置服务器环境
1. 配置服务器中gpadmin环境变量
一 批量设置greenplum在gpadmin用户下的环境变量
(1) 编辑./bash_profile(直接复制3行粘贴执行)
cat >> /home/gpadmin/.bash_profile << EOF
source /usr/local/greenplum-db/greenplum_path.sh
EOF
(2) 编辑.bashrc(直接复制3行粘贴执行)
cat >> /home/gpadmin/.bashrc << EOF
source /usr/local/greenplum-db/greenplum_path.sh
EOF
二 将环境变量分发到各个节点
(1) 分发./bash_profile
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
(2) 分发.bashrc
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
2. 分发系统参数到segment主机
(1)切换到root用户 su - root
(2)应用环境变量 source /usr/local/greenplum-db/greenplum_path.sh
(3)分发hosts文件
gpscp -f /usr/local/greenplum-db/seg_hosts /etc/hosts root@=:/etc/hosts
(4)分发limits.conf
gpscp -f /usr/local/greenplum-db/seg_hosts /etc/security/limits.conf root@=:/etc/security/limits.conf
(5)分发sysctl.conf 文件
gpscp -f /usr/local/greenplum-db/seg_hosts /etc/sysctl.conf root@=:/etc/sysctl.conf
(6)应用sysctl参数
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'sysctl -p'
(7)重启全部服务器
gpssh -f /usr/local/greenplum-db/all_hosts -e 'reboot'
在segment主机安装greenplum
1 在master主机打包greenplum
(1)赋予gp目录 的权限给gpadmin用户
chown -R gpadmin:gpadmin /usr/local/greenplum-db-6.5.0
(2)删除已有压缩包
rm -f /usr/local/greenplum-db-6.5.0.tar;
rm -f /usr/local/greenplum-db-6.5.0.tar.gz;
(3)打包gpadmin
cd /usr/local; tar cf greenplum-db-6.5.0.tar greenplum-db-6.5.0
gzip /usr/local/greenplum-db-6.5.0.tar
(4)应用环境变量 source /usr/local/greenplum-db/greenplum_path.sh
2 分发安装包到segment服务器,并安装
(1)删除服务器中tar包 gz包
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"
(2)将压缩包上传到segment服务器
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
(3)在segment服务器上解压
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"
(4)删除 segment服务器上压缩包
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"
(5)建立软连接greenplum-db-6.5.0 到greenplum-db
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
(6)给segment服务器上安装目录赋权限
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"
(7)给segment服务器应用 gp环境
gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "source /usr/local/greenplum-db-6.5.0/greenplum_path.sh"
(8) 查看segment local底下目录
gpssh -f /usr/local/greenplum-db-6.5.0/seg_hosts -e "cd /usr/local;ll"
配置集群,为初始化gp做准备
1. 创建数据库目录
(1)创建master数据库目录 ,并给目录赋权
mkdir -p /opt/greenplum/data/master
chown gpadmin:gpadmin /opt/greenplum/data/master
(2)创建standby 数据目录,并给目录赋权
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -h sdw2 -e 'mkdir -p /data/master'
gpssh -h sdw2 -e 'chown gpadmin:gpadmin /data/master'
(3)创建segment主机数据目录,并给目录赋权
在segment建两个实例,两个镜像
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data1/primary'
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data1/mirror'
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data2/primary'
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'mkdir -p /opt/greenplum/data2/mirror'
gpssh -f /usr/local/greenplum-db/seg_hosts -e 'chown -R gpadmin /opt/greenplum/data*'
2. 网络测试
gpcheckperf -f /usr/local/greenplum-db/seg_hosts -r N -d /tmp
/usr/local/greenplum-db/./bin/gpcheckperf -f /usr/local/greenplum-db/seg_hosts -r N -d /tmp
3. 时间校验
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服务器时间
一 安装并配置chrony
(1)使用yum安装 yum -y install chrony
(2)备份chrony.conf
mv /etc/chrony.conf /etc/chrony.conf.bak
(3)编辑 chrony.conf 文件
vi /etc/chrony.conf
server ntp1.aliyun.com iburst minpoll 4 maxpoll 10
server ntp2.aliyun.com iburst minpoll 4 maxpoll 10
server ntp3.aliyun.com iburst minpoll 4 maxpoll 10
server ntp4.aliyun.com iburst minpoll 4 maxpoll 10
server ntp5.aliyun.com iburst minpoll 4 maxpoll 10
server ntp6.aliyun.com iburst minpoll 4 maxpoll 10
server ntp7.aliyun.com iburst minpoll 4 maxpoll 10
# 记录系统时钟获得/丢失时间的速率至drift文件中
driftfile /var/lib/chrony/drift
# 如果系统时钟的偏移量大于10秒,则允许在前三次更新中步进调整系统时钟
makestep 10 3
# 启用RTC(实时时钟)的内核同步
rtcsync
# 只允许10.30.16网段的客户端进行时间同步
allow 10.30.16.0/24
# 阿里云提供的公网NTP服务器不可用时,采用本地时间作为同步标准
local stratum 10
# 指定包含NTP验证密钥的文件
keyfile /etc/chrony.keys
# 指定存放日志文件的目录
logdir /var/log/chrony
# 让chronyd在选择源时忽略源的层级
stratumweight 0.05
# 禁用客户端访问的日志记录
noclientlog
# 如果时钟调整大于0.5秒,则向系统日志发送消息
logchange 0.5
(4)启动chronyd服务
启动chronyd服务 systemctl start chronyd.service
查看chronyd 服务状态 systemctl status chronyd.service
设置开机自启动chronyed服务 systemctl enable chronyd.service
查看时间同步源 chronyc sources -v
2) 配置seg 主机 ,master服务器时间(分别再segment主机部署)
一 安装并配置chrony
(1)使用yum安装 yum -y install chrony
(2)备份chrony.conf
mv /etc/chrony.conf /etc/chrony.conf.bak
(3)编辑 chrony.conf 文件
vi /etc/chrony.conf
server 10.30.16.140 iburst
driftfile /var/lib/chrony/drift
makestep 10 3
rtcsync
local stratum 10
keyfile /etc/chrony.keys
logdir /var/log/chrony
stratumweight 0.05
noclientlog
logchange 0.5
(4)启动chronyd服务
启动chronyd服务 systemctl start chronyd.service
查看chronyd 服务状态 systemctl status chronyd.service
设置开机自启动chronyed服务 systemctl enable chronyd.service
查看时间同步源 chronyc sources -v
5. 配置初始化环境变量
(1)切换gpadmin用户 su - gpadmin
(2)修改.bash_profile 文件 执行
cat >> /home/gpadmin/.bash_profile << EOF
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
EOF
(3)修改.bashrc 文件 执行
cat >> /home/gpadmin/.bashrc << EOF
export MASTER_DATA_DIRECTORY=/opt/greenplum/data/master/gpseg-1
EOF
(4)分发变量
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
gpssh -f /usr/local/greenplum-db/all_hosts -e 'source /home/gpadmin/.bash_profile;source /home/gpadmin/.bashrc;'
6. 配置初始化文件
(1)创建文件目录 mkdir -p /home/gpadmin/gpconfigs
(2)复制初始化模板文件
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
(3)配置初始化文件
vi /home/gpadmin/gpconfigs/gpinitsystem_config
ARRAY_NAME="Greenplum Data Platform"
SEG_PREFIX=gpseg
PORT_BASE=6001
declare -a DATA_DIRECTORY=(/opt/greenplum/data1/primary /opt/greenplum/data2/primary)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/opt/greenplum/data/master
MASTER_PORT=5432
TRUSTED_SHELL=ssh
CHECK_POINT_SEGMENTS=8
ENCODING=UNICODE
MIRROR_PORT_BASE=7000
declare -a MIRROR_DATA_DIRECTORY=(/opt/greenplum/data1/mirror /opt/greenplum/data2/mirror)
DATABASE_NAME=gpdw
集群初始化
1.执行集群初始化步骤
gpinitsystem -c /home/gpadmin/gpconfigs/gpinitsystem_config -h /usr/local/greenplum-db/seg_hosts -D
2. 配置gpadmin环境变量
(1)编辑 .bash_profile
su - gpadmin
cat >> /home/gpadmin/.bash_profile << EOF
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpdw
EOF
(2)编辑 .bashrc
cat >> /home/gpadmin/.bashrc << EOF
export PGPORT=5432
export PGUSER=gpadmin
export PGDATABASE=gpdw
EOF
(3)环境变量文件分发到其他节点
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bash_profile gpadmin@=:/home/gpadmin/.bash_profile
gpscp -f /usr/local/greenplum-db/seg_hosts /home/gpadmin/.bashrc gpadmin@=:/home/gpadmin/.bashrc
gpssh -f /usr/local/greenplum-db/all_hosts -e 'source /home/gpadmin/.bash_profile;source /home/gpadmin/.bashrc;'
3. 关闭数据库,重启服务器
gpstop -a
重启所有服务器
4. 启动gp
gpstart -a