前提
局域网已配置ip、ntp时间同步、yum源
环境
IP | 主机名 | 作用 | 管理IP |
62.65.168.42 | node42 | master | 62.65.168.25 |
62.65.168.43 | node43 | standby | 62.65.168.26 |
62.65.168.44 | node44 | segment | 62.65.168.27 |
62.65.168.45 | node45 | segment | 62.65.168.28 |
62.65.168.46 | node46 | segment | 62.65.168.29 |
62.65.168.47 | node47 | segment | 62.65.168.30 |
搭建步骤
没有明确说的是,要在每台机器都执行
修改hostname
echo "node42" > /etc/hostname
echo "node43" > /etc/hostname
echo "node44" > /etc/hostname
echo "node45" > /etc/hostname
echo "node46" > /etc/hostname
echo "node47" > /etc/hostname
禁用selinux
sed -i "s#^SELINUX.*#SELINUX=disabled#g" /etc2/selinux/config
修改内核参数
cat <<EOF >> /etc/sysctl.conf
kernel.shmmax = 5000000000000
kernel.shmmni = 32768
kernel.shmall = 40000000000
kernel.sem = 2000 4096000 2000 2048
kernel.sysrq = 1
kernel.core_uses_pid = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.msgmni = 2048
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.ip_local_port_range = 1025 65535
net.core.netdev_max_backlog = 10000
net.core.rmem_max = 2097152
net.core.wmem_max = 2097152
vm.overcommit_memory = 2
vm.overcommit_ratio=95
vm.dirty_background_ratio = 0
vm.dirty_ratio = 0
vm.dirty_background_bytes = 1610612736
vm.dirty_bytes = 4294967296
EOF
sysctl -p
修改/etc/hosts
cat <<EOF >> /etc/hosts
62.65.168.42 node42
62.65.168.43 node43
62.65.168.44 node44
62.65.168.45 node45
62.65.168.46 node46
62.65.168.47 node47
EOF
加入服务logind
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
service systemd-logind restart
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
设置network
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node42
EOF
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node43
EOF
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node44
EOF
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node45
EOF
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node46
EOF
cat <<EOF >> /etc/sysconfig/network
networking=yes
hostname=node47
EOF
修改打开文件限制
cat <<EOF >> /etc/security/limits.conf
* soft nofile 524288
* hard nofile 524288
* soft nproc 131072
* hard nproc 131072
EOF
修改ssh连接数
cat <<EOF >> /etc/ssh/sshd_config
MaxStartups 200
MaxSessions 200
EOF
修改磁盘读取块大小
grubby --update-kernel=ALL --args="elevator=deadline"
grubby --update-kernel=ALL --args="transparent_hugepage=never"
根据具体设备设置42机械磁盘为sdb 其余5台机械磁盘为sda,通过fdisk -l确定机械磁盘
42 机械磁盘为sdb
echo deadline > /sys/block/sdb/queue/scheduler
echo /sbin/blockdev --setra 16384 /dev/sdb >> /etc/rc.d/rc.local
43----47 机械磁盘为sda
echo deadline > /sys/block/sda/queue/scheduler
echo /sbin/blockdev --setra 16384 /dev/sda >> /etc/rc.d/rc.local
设置/etc/rc.d/rc.local执行权限
/etc/rc.local是/etc/rc.d/rc.local的快捷方式,均需要有x权限即执行权限
chmod +x /etc/rc.d/rc.local
chmod +x /etc/rc.local
重启
reboot
创建用户
useradd gpadmin
修改密码
passwd gpadmin
密码修改为gpadmin 和用户名一样
集群ssh免密
生成秘钥
ssh-keygen -t rsa
配置免密
sh-copy-id gpadmin@node42
ssh-copy-id gpadmin@node43
ssh-copy-id gpadmin@node44
ssh-copy-id gpadmin@node45
ssh-copy-id gpadmin@node46
ssh-copy-id gpadmin@node47
上传文件到主节点
root 用户操作
将greenplum-db-6.13.0-rhel7-x86_64.rpm上传到node42上
复制安装包到集群所有机器
root 用户操作
scp greenplum-db-6.13.0-rhel7-x86_64.rpm root@node43:/root/
scp greenplum-db-6.13.0-rhel7-x86_64.rpm root@node44:/root/
scp greenplum-db-6.13.0-rhel7-x86_64.rpm root@node45:/root/
scp greenplum-db-6.13.0-rhel7-x86_64.rpm root@node46:/root/
scp greenplum-db-6.13.0-rhel7-x86_64.rpm root@node47:/root/
安装greenplum
root 用户操作
yum install -y greenplum-db-6.13.0-rhel7-x86_64.rpm
赋权
chown -R gpadmin:gpadmin /usr/local/greenplum*
环境变量配置
gpadmin用户操作
cat <<EOF >> /home/gpadmin/.bashrc
source /usr/local/greenplum-db/greenplum_path.sh
export PGPORT=5432
export PGUSER=gpadmin
export MASTER_DATA_DIRECTORY=/home/gpadmin/data/master/gpseg-1
export PGDATABASE=gp_sydb
export LD_PRELOAD=/lib64/libz.so.1 ps
EOF
source /home/gpadmin/.bashrc
创建所有主机文件
gpadmin用户操作
只在master节点操作
cat <<EOF >> /home/gpadmin/hostfile_exkeys
node42
node43
node44
node45
node46
node47
EOF
创建数据节点主机文件
gpadmin用户操作
只在master节点操作
该文件少了master节点:node42,和备用节点node43
cat <<EOF >> /home/gpadmin/hostfile_segonly
node44
node45
node46
node47
EOF
gpssh-exkeys交换ssh
gpadmin用户操作
只在master节点操作
gpssh-exkeys -f /home/gpadmin/hostfile_exkeys
创建数据文件夹
gpadmin用户操作
只在master节点操作
gpssh -f /home/gpadmin/hostfile_exkeys
mkdir data
cd data
mkdir master
mkdir primary
mkdir mirror
该步骤之后每台主机下都会创建 data目录,data目录下都会创建master、primary、mirror文件夹
连通性检查
gpadmin用户操作
只在master节点操作
gpcheckperf -f /home/gpadmin/hostfile_exkeys -r N -d /tmp
检查一下是不是万兆带宽
数据库初始化文件
gpadmin用户操作
只在master节点操作
复制初始化文件
cp /usr/local/greenplum-db/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpinitsystem_config
修改初始化文件
gpadmin用户操作
只在master节点操作
declare -a DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary )
该项配置设置主节点数据存储位置,括号里边有几个代表每台主机创建几个postgresql数据库实例,即segment的实例数,上边示例是2个。
雪亮工程里边配置了10个目录,所以每台机器有10个节点。因为雪亮机器是20核,推荐2核配一个节点,所以配了10个。
MASTER_HOSTNAME=node42
该项配置设置主节点机器名字
MASTER_DIRECTORY=/home/gpadmin/data/master
该项配置设置主节点数据存储位置
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/data/primary /home/gpadmin/data/primary)
该项配置设置是备节点数据存储位置,规则同DATA_DIRECTORY,括号里边数量和DATA_DIRECTORY保持一致。
greenplum数据分主节点和备节点,主节点挂掉时候备节点数据会启用。
DATABASE_NAME=gp_sydb
该项配置设置默认数据库名字,和环境变量数据库名字保持一致,不然会失败。
MACHINE_LIST_FILE=/home/gpadmin/hostfile_segonly
该项配置数据节点的主机列表文件位置
初始化数据库
gpadmin用户操作
只在master节点操作
gpinitsystem -c gpinitsystem_config -s node43
-s node43代表备用主节点是node43机器
设置远程登录
echo "host all gpadmin 0.0.0.0/0 md5">> /home/gpadmin/data/master/gpseg-1/pg_hba.conf
gpstop -u
gpstop -u 意思是重新加载数据库配置
登录验证
psql
只要出现以上信息,代表集群安装成功
设置管理员密码
alter user gpadmin with password 'gpadmin';