0%

greenplum集群安装

Greenplum集群搭建

  1. 关闭所有主机防火墙
    1
    2
    systemctl stop firewalld.service
    systemctl disable firewalld.service
关闭SELINUX
1
2
vi /etc/selinux/config
将属性 SELINUX 改为 disabled
  1. 系统设置
    设置hostname
    1
    2
    3
    4
    5
    vi /etc/hosts
    添加各个主机的hostname如:
    192.168.171.75 master
    192.168.171.76 node1
    192.168.171.77 node2
    设置系统参数至sysctl.conf
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    vi /etc/sysctl.conf
    在文件中添加以下代码
    kernel.shmmax = 500000000
    kernel.shmmni = 4096
    kernel.shmall = 4000000000
    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_max_syn_backlog = 4096
    net.ipv4.conf.all.arp_filter = 1
    net.ipv4.ip_local_port_range = 10000 65535
    net.core.netdev_max_backlog = 10000
    net.core.rmem_max = 2097152
    net.core.wmem_max = 2097152
    vm.overcommit_memory = 2
    vm.swappiness = 10
    vm.zone_reclaim_mode = 0
    vm.dirty_expire_centisecs = 500
    vm.dirty_writeback_centisecs = 100
    vm.dirty_background_ratio = 0
    vm.dirty_ratio = 0
    vm.dirty_background_bytes = 1610612736
    vm.dirty_bytes = 4294967296
    在/etc/security/limits.conf中修改以下参数
    1
    2
    3
    4
    5
    6
    vi /etc/security/limits.conf
    修改以下参数
    * soft nofile 65536
    * hard nofile 65536
    * soft nproc 131072
    * hard nproc 131072
  2. 同步集群时间
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    在所有主机上安装ntp
    yum install -y ntp
    添加如下内容
    server 127.127.1.0
    fudge 127.127.1.0 stratum 10
    保存退出,然后启动ntp 服务并设为开机启动:
    systemctl start ntpd
    systemctl enable ntpd
    在集群其他节点安装ntp 服务,并将ntp 服务server 指向主节点
    echo "server <ip> iburst" > /etc/ntp.conf
    <ip> 替换为主节点ip 地址
  3. 免密登录
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    用root用户登录
    所有主机编辑文件 /etc/ssh/sshd_config
    将以下两行前面的#号去掉,保存
    RSAAuthentication yes
    PubkeyAuthentication yes
    在所有主机上执行以下命令
    ssh-keygen -t rsa
    按四下回车得到public key
    在所有主机上执行以下命令,将所有主机的public key 拷贝到主节点上
    ssh-copy-id root@<hostname>
    <hostname>更换为主节点主机的主机名
    在主节点机器上通过scp 命令将文件 /root/.ssh/authorized_keys 发送到所有其他
    节点主机的 /root/.ssh/ 目录下:
    scp /root/.ssh/authorized_keys root@<hostname>:/root/.ssh/
    重启所有主机的sshd 服务
    systemctl restart sshd.service
    systemctl enable sshd.service
    验证免密码登陆 :
    ssh <hostname>
    <hostname> 更换为主机名。
  4. 在主节点安准Greenplum
    1
    2
    3
    4
    5
    6
    rpm -Uvh ./greenplum-db-<version>-<platform>.rpm
    数据库软件安装在/usr/local/greenplum-db-<version>目录下

    修改目录权限为gpadmin所有
    chown -R gpadmin /usr/local/greenplum*
    chgrp -R gpadmin /usr/local/greenplum*
    在集群中安装Greenplum
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    su  -
    切换至root用户
    touch hostfile_exkeys
    创建一个hostfile_exkeys文件将所有主机hostname放入其中(主机包含所有
    master, standby master,segments)如
    mdw
    mdw-1
    mdw-2
    smdw
    smdw-1
    smdw-2
    sdw1
    sdw1-1
    sdw1-2
    sdw2
    sdw2-1
    sdw2-2
    sdw3
    sdw3-1
    sdw3-2
    1
    2
    3
    4
    5
    创建groupadd账号和groupadd组

    groupadd gpadmin
    useradd gpadmin -g gpadmin
    passwd gpadmin
    1
    2
    3
    4
    5
    6
    7
    安装Greenplum rpm包
    rpm -Uvh ./greenplum-db-<version>-<platform>.rpm
    数据库默认安装在/usr/local/greenplum-db-<version>目录下

    更改安装目录权限为gpadmin用户所有
    chown -R gpadmin /usr/local/greenplum*
    chgrp -R gpadmin /usr/local/greenplum*
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    将安装分发给集群其它主机
    执行创建一个空文件
    touch hostfile_exkeys
    将集群所有hostname写入文件,如:
    mdw
    mdw-1
    mdw-2
    smdw
    smdw-1
    smdw-2
    sdw1
    sdw1-1
    sdw1-2
    sdw2
    sdw2-1
    sdw2-2
    sdw3
    sdw3-1
    sdw3-2

    执行以下命令在集群中安装数据库
    gpseginstall -f hostfile_exkeys

    确认集权是否安装成功
    su - gpadmin
    source /usr/local/greenplum-db/greenplum_path.sh
    gpssh -f hostfile_exkeys -e ls -l $GPHOME
    如果可以看到集群信息则安装成功
  5. 创建数据目录
    1
    2
    3
    4
    5
    6
    7
    8
    在主节点中创建目录,目录地址根据实际情况更改
    mkdir -p /data/master
    改变目录所有者
    chown gpadmin /data/master
    如果有副主节点,执行以下命令在副主节点中创建相同目录,smdw为副主节点hostname
    source /usr/local/greenplum-db/greenplum_path.sh
    gpssh -h smdw -e 'mkdir -p /data/master'
    gpssh -h smdw -e 'chown gpadmin /data/master'
创建段节点(数据节点)目录
1
2
3
4
5
6
创建空文件
touch hostfile_gpssh_segonly
将所有段节点(数据节点)的hostname填入如:
sdw1
sdw2
sdw3
用gpssh命令在段节点(数据节点)创建目录和更改其权限
1
2
3
4
source /usr/local/greenplum-db/greenplum_path.sh
gpssh -f hostfile_gpssh_segonly -e 'mkdir -p /data/primary'
gpssh -f hostfile_gpssh_segonly -e 'mkdir -p /data/mirror'
gpssh -f hostfile_gpssh_segonly -e 'chown -R gpadmin /data/*'
  1. 配置数据库
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    切换至gpadmin
    su - gpadmin
    cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/gpconfigs/gpinitsystem_config
    备份配置文件到新目录下
    修改备份文件gpinitsystem_config,
    修改以下参数
    DATA_DIRECTORY(将创建主段数据目录的文件系统位置,有几个DATA_DIRECTORY, 每个节点上便会启动几个segments
    #### 指定Primary Segment的数据目录, DATA_DIRECTORY参数指定每个Segment主机配置多少个Instance。如果
    #### 在host文件中为每个Segment主机列出了多个网口,这些Instance将平均分布到所有列出的网口上。
    #### 这里的案例,hosts里有2个segment,sdw1,sdw2俩主机,都是单网卡
    段的数量划分要根据服务器的cpu,网卡,磁盘因数划分最好达到share nothing的效果,每个
    段都有独自的处理器,磁盘或者网卡

    MASTER_HOSTNAME(主节点hostname)
    MASTER_DIRECTORY(将创建主数据目录的文件系统位置)
    MIRROR_DATA_DIRECTORY(建立节点的镜像mirror节点的地址,镜像的数量必须和DATA_DIRECTORY的数量一致)

    详细参数说明查阅
    https://gpdb.docs.pivotal.io/5190/utility_guide/admin_utilities/gpinitsystem.html
    ----------------------------------------------------------------
    ARRAY_NAME="Greenplum Data Platform"
    SEG_PREFIX=gpseg
    PORT_BASE=40000
    declare -a DATA_DIRECTORY=(/data/primary)
    MASTER_HOSTNAME=mdw
    MASTER_DIRECTORY=/data/master
    MASTER_PORT=5432
    TRUSTED SHELL=ssh
    CHECK_POINT_SEGMENTS=8
    ENCODING=UNICODE
    ...
    MIRROR_PORT_BASE=7000
    REPLICATION_PORT_BASE=8000
    MIRROR_REPLICATION_PORT_BASE=9000
    declare -a MIRROR_DATA_DIRECTORY=(/data1/mirror /data1/mirror /data1/mirror /data2/mirror /data2/mirror /data2/mirror)
    -----------------------------------------------------------------
运行初始化脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 创建文件里面所有段节点(数据节点)hostname
touch vi hostfile_gpinitsystem 数据如:
sdw1-1
sdw1-2
sdw2-1
sdw2-2
sdw3-1
sdw3-2
sdw4-1
sdw4-2

执行以下命令,gpconfigs/gpinitsystem_config为上面更改的配置文件,hostfile_gpinitsystem为所有的段节点hostname,standby_master_hostname为副主节点的hostname
cd ~
gpinitsystem -c gpconfigs/gpinitsystem_config -h gpconfigs/hostfile_gpinitsystem \
-s standby_master_hostname -S

当出现Continue with Greenplum creation? Yy/Nn时
输入y回车
出现以下提示表示安装成功
Greenplum Database instance successfully created.
  1. 在主节点和备份主节点设置环境变量
    1
    2
    3
    4
    5
    6
    7
    8
    su - gpadmin
    vi ~/.bashrc
    添加以下内容,MASTER_DATA_DIRECTORY为实际master目录路径
    source /usr/local/greenplum-db/greenplum_path.sh
    export MASTER_DATA_DIRECTORY=/data/master/gpseg-1
    (注意)如果是RHEL 7 or CentOS 7系统,需要在.bashrc文件的末尾添加如下内容:
    export LD_PRELOAD=/lib64/libz.so.1 ps
    至此安装完成
  2. 设置账号
    1
    2
    3
    4
    5
    6
    7
    8
    9
    登录master节点运行psql
    修改管理员密码
    alter role gpadmin with password 'hzt_2019';
    输入\q退出客户端

    设置账号访问权限,路径根据实际路径填写
    vi /data/master/gpseg-1
    添加以下代码,设置gpadmin可远程登录
    host all gpadmin 0.0.0.0/0 trust