docker下greenplum 集群安装配置

目前安装的是最新版本的greenplum 5.4.0。这个版本是基于PostgreSQL 8.3.23 (Greenplum Database 5.4.0 build commit:1971b301f52979ac74fb3d0a141bbaae06b70857) on x86_64-pc-linux-gnu, compiled by GCC gcc (GCC) 6.2.0, 64-bit compiled on Jan
12 2018 21:15:36

经验证这个版本支持json 不支持jsonb。默认端口是-p 2345

安装基本流程

参看网址

创建容器

docker run --name gp_master --privileged -p 2345:2345 -it centos /bin/bash
docker run --name gp_db1 --privileged -p 2346:2345 -it centos /bin/bash
docker run --name gp_db2 --privileged -p 2347:2345 -it centos /bin/bash

进入容器,在每一个容器做如下配置

  1. yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute.x86_64

  2. docker中默认没有启动ssh,为了方便各节点之间的互连,启动docker的每个节点里面的ssh,并创建相关的认证key

  • ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
  • ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
  • ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
  • /usr/sbin/sshd
  1. 配置主机域名映射关系
    vi /etc/hosts

172.17.0.11 187ad7900973
172.17.0.12 f41764ccbedc
172.17.0.22 dw-greenplum-1 mdw
172.17.0.24 dw-greenplum-2 sdw1

  1. 修改所有节点里面的 /etc/sysconfig/network 文件,保持主机名一致
    vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=mdw

  1. 创建greenplum的用户和用户组
    在每个节点中创建greenplum的用户和用户组,方便安装greenplum集群。另
  • groupadd -g 530 gpadmin
  • useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
  • chown -R gpadmin:gpadmin /home/gpadmin
  • passwd gpadmin
  1. 修改每个节点上的文件打开数量限制
    vi /etc/security/limits.conf

End of file

  • soft nofile 65536
  • hard nofile 65536
  • soft nproc 131072
  • hard nproc 131072
  1. 关闭每个节点上的防火墙,关闭selinux(目前没有发现防火墙的配置,此处没有处理)
  • vi /etc/selinux/config

SELINUX=disabled
SELINUXTYPE=targeted

在master节点上安装greenplum, 以下过程只需要在master节点处理

  1. mkdir gpfoler
    chown -R gpadmin:gpadmin gpfoler
  2. 复制greenplum-db-5.4.0-rhel7-x86_64.zip到gpfolder
  3. chown -R gpadmin:gpadmin greenplum-db-5.4.0-rhel7-x86_64.zip
  4. 切换到gpadmin账号
  • su - gpadmin
  1. 解压下载后的zip文件
    cd /gpfoler
    unzip greenplum-db-5.4.0-rhel7-x86_64.zip
  2. 赋予文件执行权限
    chmod +x greenplum-db-5.4.0-rhel7-x86_64.bin
  3. 执行安装文件
    ./greenplum-db-5.4.0-rhel7-x86_64.bin
    yes --> /home/gpadmin/greenplum-db-5.4.0--> yes -->yes
    安装期间需要修改默认安装目录,输入/home/gpadmin/greenplum-db-5.4.0
  4. 为了方便安装集群,greenplum提供了批量操作的指令,通过创建配置文件,以使用批处理命令, 以下的当前路径是/home/gpadmin

note: 在gpadmin下可能不能创建这两个文件,需要切换到root创建
exit --切换到root账户下
cd /home/gpadmin/
mkdir conf
cd conf
touch hostlist
vi hostlist
touch seg_hosts
vi seg_hosts
chown -R gpadmin:gpadmin /home/gpadmin/conf
[gpadmin@mdw ~]$ cat ./conf/hostlist
mdw
sdw1
sdw2

[gpadmin@mdw ~]$ cat ./conf/seg_hosts
sdw1
sdw2

  1. 设置环境变量,打通所有节点
    greenplum-db/greenplum_path.sh中保存了运行greenplum的一些环境变量设置,包括GPHOOME、PYTHONHOME等设置,在gpadmin账号下设置环境变量生效,然后打通所有节点
    [gpadmin@mdw ~]$ source /home/gpadmin/greenplum-db/greenplum_path.sh
    [gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist -- 中间会插入一个密码123456
    [STEP 1 of 5] create local ID and authorize on local host
    ... /home/gpadmin/.ssh/id_rsa file exists ... key generation skipped

[STEP 2 of 5] keyscan all hosts and update known_hosts file

[STEP 3 of 5] authorize current user on remote hosts
... send to sdw1
... send to sdw2

[STEP 4 of 5] determine common authentication file content

[STEP 5 of 5] copy authentication files to all remote hosts
... finished key exchange with sdw1
... finished key exchange with sdw2

[INFO] completed successfully
成功打通,后面就可以使用以下命令开启批量操作
注意:使用gpssh-exkeys命令时一定要使用gpadmin身份,因为会在/home/gpadmin/.ssh中生成ssh的免密码登录秘钥,如果使用了其它账号登录,则会生成密钥在其它账号下,后面在gpadmin账号下就无法使用gpssh的批处理命令

  1. 使用gpssh的批处理命令
    [gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist
    Note: command history unsupported on this machine ...
    => pwd
    [sdw] /home/gpadmin
    [ mdw] /home/gpadmin
    => exit
    这里pwd命令是linux中的查看路径命令,在这里也是查看批量操作时所在的路径,从中可以看到已经成功连通了三个节点

  2. 打包master节点上的安装包
    tar -cf gp.5.4.tar /home/gpadmin/ -- 在/home/pgadmin/gp.5.4.tar出现
    使用gpscp命令将这个文件复制到每一台机器上
    gpscp -f /home/gpadmin/conf/hostlist gp.5.4.tar =:/home/gpadmin/ --可以看到其他的两个节点有/home/pgadmin/gp.5.4.tar
    批量解压,并建立软链接
    cd /home/gpadmin/conf
    [gpadmin@mdw conf]$ gpssh -f hostlist
    => cd /home/gpadmin
    [sdw]
    [mdw]
    => tar -xf gp.5.4.tar
    [sdw]
    [mdw]
    => ln -s ./greenplum-db-5.4.0 greenplum-db
    [sdw]
    [mdw]

  3. 初始化安装数据库

  • 批量创建数据目录 结果是/home/gpadmin/gpdata
    [gpadmin@mdw conf]$ gpssh -f hostlist
    => mkdir gpdata
    [ mdw]
    [sdw2]
    [sdw1]
    => cd gpdata
    [ mdw]
    [sdw2]
    [sdw1]
    => mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2
    [ mdw]
    [sdw2]
    [sdw1]
    => exit

在每个节点上配置.bash_profile环境变量 对于这一步,查看数据节点的greenplum_path.sh的确切位置 使用 su - gpadmin

[gpadmin@mdw ~]$ cd
[gpadmin@mdw ~]$ cat .bash_profile

.bash_profile

Get the aliases and functions

if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

User specific environment and startup programs

PATH=$PATH:$HOME/bin
export PATH
source /home/gpadmin/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=2345
export PGDATABASE=postgres

[gpadmin@mdw ~]$ source .bash_profile

在主节点上初始化配置文件

ARRAY_NAME="Greenplum"
MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)
MASTER_HOSTNAME=mdw
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
MASTER_PORT=2345
TRUSTED_SHELL=/usr/bin/ssh
MIRROR_PORT_BASE=43000
REPLICATION_PORT_BASE=34000
MIRROR_REPLICATION_PORT_BASE=44000
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)

  • chown -R gpadmin:gpadmin /home/gpadmin/conf/gpinitsystem_config

[gpadmin@mdw ~]$ cat /home/gpadmin/conf/gpinitsystem_config

ARRAY_NAME="Greenplum"

MACHINE_LIST_FILE=/home/gpadmin/conf/seg_hosts
Segment 的名称前缀
SEG_PREFIX=gpseg
Primary Segment 起始的端口号
PORT_BASE=33000
指定 Primary Segment 的数据目录
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1 /home/gpadmin/gpdata/gpdatap2)
Master 所在机器的 Hostname
MASTER_HOSTNAME=mdw
指定 Master 的数据目录
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
Master 的端口
MASTER_PORT=2345
指定Bash的版本
TRUSTED_SHELL=/usr/bin/ssh
Mirror Segment起始的端口号
MIRROR_PORT_BASE=43000
Primary Segment 主备同步的起始端口号
REPLICATION_PORT_BASE=34000
Mirror Segment 主备同步的起始端口号
MIRROR_REPLICATION_PORT_BASE=44000
Mirror Segment 的数据目录
declare -a MIRROR_DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatam1 /home/gpadmin/gpdata/gpdatam2)

在主节点初始化数据库

gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config

如果gpinitsystem不能成功,就在master节点的/home/gpadmin/gpAdminLogs/的gpinitsystem_*.log文件中查看日志信息,找出原因进行修改,然后再重新执行gpinitsystem进行初始化安装。
出现如下问题:ping: socket: Operation not permitted

命令行执行 su - gpadmin
setcap cap_net_raw=ep $(which ping)

安装完成后使用 su - gpadmin
psql

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容