Docker
安装可以参考:
Manjaro安装Docker
Centos7 安装 docker
一、创建 docker
节点 拉取centos镜像
这里如果没有权限,则参考 Manjaro安装Docker 中的分组操作。
查看镜像
创建几个容器,作为greenplum
的节点 1 2 3 4 5 docker run -it --name gp-master centos /bin/bash docker run -it --name gp-master1 centos /bin/bash docker run -it --name gp-master2 centos /bin/bash docker run -it --name gp-master3 centos /bin/bash
注意:exit
退出后,容器停止(Exited
)
命令解释:为centos
这个镜像创建一个容器
run
: 在新的容器中运行命令 . run
=create
+ start
-it
: -i
和-t
, 为该docker
创建一个伪终端,这样就可以进入到容器的交互模式
--name
gp-master
容器名称
centos
: 镜像
*/bin/bash
:表示启动容器后启动bash
。docker
中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself
查看帮助:docker run --help
守护态运行,通过 run
后加-d
实现
二、配置基础环境 进入每个greenplum
节点,配置基础环境
由于docker
的centos
镜像是centos
的简化版本,里面有很多包是没有安装的,会影响到后面部署greenplum
,因此在docker
的每个节点中安装相关的依赖包
1 2 3 4 5 6 7 8 9 10 11 12 13 docker ps -s docker ps -a docker start gp-master docker start gp-master1 docker start gp-master2 docker start gp-master3 docker exec -it gp-master /bin/bash
1 yum install -y net-tools which openssh-clients openssh-server less zip unzip iproute
docker中默认没有启动ssh,为了方便各节点之间的互连,创建相关的认证key,并启动docker的每个节点里面的ssh
1 2 3 4 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
在每个docker
节点中添加如下配置,方便后续greenplum
集群的配置文件中用到,ip
为各个docker
节点中的ip地址
1 2 3 4 5 6 7 cat /etc/hostsecho "172.17.0.2 dw-greenplum-1 mdw" >> /etc/hostsecho "172.17.0.3 dw-greenplum-2 sdw1" >> /etc/hostsecho "172.17.0.4 dw-greenplum-3 sdw2" >> /etc/hostsecho "172.17.0.5 dw-greenplum-4 sdw3" >> /etc/hosts
同时修改所有节点里面的/etc/sysconfig/network
文件,保持与主机名一致
1 2 3 4 5 6 7 8 9 cat /etc/sysconfig/networkecho "NETWORKING=yes" >> /etc/sysconfig/networkecho "HOSTNAME=mdw" >> /etc/sysconfig/networkvi /etc/sysconfig/network NETWORKING=yes HOSTNAME=mdw
为了方便安装greenplum
集群,且使greenplum
自带的python
不与系统的python
版本相冲突,在每个节点中创建greenplum
的用户和用户组
1 2 3 4 5 groupadd -g 530 gpadmin useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin chown -R gpadmin:gpadmin /home/gpadminpasswd gpadmin
1 2 3 4 5 6 cat /etc/security/limits.confecho "soft nofile 65536" >> /etc/security/limits.confecho "hard nofile 65536" >> /etc/security/limits.confecho "soft nproc 131072" >> /etc/security/limits.confecho "hard nproc 131072" >> /etc/security/limits.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 service iptables stop chkconfig iptables off vi /etc/selinux/config SELINUX=disabled SELINUXTYPE=targeted
三、下载greenplum
安装包 到greenplum
的官网上,下载greenplum安装包 或GitHub下载 ,点开Greenplum Database Server
,根据自己的操作系统下载安装包,我下载当前最新的 greenplum-db-6.15.0-rhel7-x86_64.rpm
,将其拷到master
节点的/home/gpadmin
目录中
版本快速链接: github:open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm
四、在master
节点上安装greenplum
切换到gpadmin用户
传递文件到docker
1 2 docker ps docker cp /home/maxzhao/Downloads/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm 348d61c65324:/home/gpadmin/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm
Rpm
安装1 yum localinstall /home/gpadmin/open-source-greenplum-db-6.15.0-rhel7-x86_64.rpm -y
1 2 3 4 5 [root@3b2ae1fbe58b /] greenplum-db: /usr/local/greenplum-db [root@3b2ae1fbe58b /] lrwxrwxrwx 1 root root 30 Apr 20 11:14 /usr/local/greenplum-db -> /usr/local/greenplum-db-6.15.0
gpssh-exkeys
报错问题:
cd /usr/bin
mv python python.bak
解压安装(ZIP) 解压下载后的zip文件
1 unzip greenplum-db-5.10.2-rhel7-x86_64.zip
执行安装文件
1 ./greenplum-db-5.10.2-rhel7-x86_64.bin
安装期间需要配置安装目录,输入/home/gpadmin/greenplum-db-5.10.2
为了方便安装集群,greenplum
提供了批量操作节点的命令,通过指定配置文件使用批处理命令 1 2 3 4 5 6 7 8 9 10 11 cd ~/ ;mkdir confecho mdw > ./conf/hostlistecho sdw1 >> ./conf/hostlistecho sdw2 >> ./conf/hostlistecho sdw3 >> ./conf/hostlistcat ./conf/hostlistecho sdw1 > ./conf/seg_hosts echo sdw2 >> ./conf/seg_hosts echo sdw3 >> ./conf/seg_hosts cat ./conf/seg_hosts
greenplum-db/greenplum_path.sh
中保存了运行greenplum
的一些环境变量,包括GPHOME、PYTHONHOME等,在gpadmin
账号下设置环境变量,并将master节点的key
交换到各个segment
节点
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 [gpadmin@mdw ~]$ source /home/gpadmin/greenplum-db/greenplum_path.sh [gpadmin@mdw ~]$ source /usr/local/greenplum-db/greenplum_path.sh [gpadmin@mdw ~]$ gpssh-exkeys -f /home/gpadmin/conf/hostlist [STEP 1 of 5] create local ID and authorize on local host [STEP 2 of 5] keyscan all hosts and update known_hosts file [STEP 3 of 5] authorize current user on remote hosts ... send to mdw ... send to sdw1 *** *** Enter password for sdw1: ... send to sdw2 ... send to sdw3 [STEP 4 of 5] determine common authentication file content [STEP 5 of 5] copy authentication files to all remote hosts ... finished key exchange with mdw ... finished key exchange with sdw1 ... finished key exchange with sdw2 ... finished key exchange with sdw3 [INFO** completed successfully
交换成功后,后续就可以使用一些命令执行批量操作 注意 :使用gpssh-exkeys
命令时一定要使用gpadmin
用户,因为会在/home/gpadmin/.ssh
中生成ssh的免密码登录秘钥,如果使用其它账号登录,则会在其它账号下生成密钥,在gpadmin
账号下就无法使用gpssh
的批处理命令
1 2 3 4 5 6 7 8 9 10 11 12 [gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist => pwd [sdw1] /home/gpadmin [sdw3] /home/gpadmin [ mdw] /home/gpadmin [sdw2] /home/gpadmin => ls [sdw1] [sdw3] [ mdw] conf greenplum-db greenplum-db-5.10.2 [sdw2] => exit
pwd命令是linux中的查看路径命令,在这里也是查看批量操作时各个节点当前所在的路径,从中可以看到已经成功连通了4个节点
五、分发安装包到每个子节点 打包master节点上的安装包
1 [gpadmin@mdw ~]$ tar -czf gp.tar.gz greenplum-db-5.10.2
使用gpscp命令将这个文件复制到每个子节点
1 [gpadmin@mdw ~]$ gpscp -f /home/gpadmin/conf/seg_hosts gp.tar.gz =:/home/gpadmin
批量解压,并创建软链接
1 2 3 4 5 6 7 8 9 [gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/seg_hosts => tar -zxf gp.tar.gz [sdw3] [sdw1] [sdw2] => ln -s greenplum-db-5.10.2 greenplum-db [sdw3] [sdw2] [sdw1]
这样就完成了所有子节点数据库的安装
六、初始化安装数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [gpadmin@mdw ~]$ gpssh -f /home/gpadmin/conf/hostlist => mkdir gpdata [sdw1] [sdw3] [ mdw] [sdw2] => cd gpdata [sdw1] [sdw3] [ mdw] [sdw2] => mkdir gpmaster gpdatap1 gpdatap2 gpdatam1 gpdatam2 [sdw1] [sdw3] [ mdw] [sdw2] => exit
在master节点上修改.bash_profile
配置环境变量,并发送给其他子节点,确保这些环境变量生效
1 2 3 4 5 6 7 8 9 10 [gpadmin@mdw ~]$ vi .bash_profile source /opt/gpadmin/greenplum-db/greenplum_path.sh export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1 export PGPORT=2345 export PGDATABASE=testDB [gpadmin@mdw ~]$ source .bash_profile [gpadmin@mdw ~]$ gpscp -f /home/gpadmin/conf/seg_hosts /home/gpadmin/.bash_profile [gpadmin@sdw1 ~]$ source .bash_profile [gpadmin@sdw2 ~]$ source .bash_profile [gpadmin@sdw3 ~]$ source .bash_profile
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 [gpadmin@mdw ~]$ vi /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)
1 [gpadmin@mdw ~]$ gpinitsystem -c /home/gpadmin/conf/gpinitsystem_config -s sdw3
其中,-s sdw3
是指配置master的standby节点,然后按照提示步骤就能完成安装了
如果gpinitsystem不成功,在master节点的/home/gpadmin/gpAdminLogs
目录下gpinitsystem_* .log文件中查看日志信息,找出原因进行修改,然后再重新执行gpinitsystem进行初始化安装。
本文地址: https://github.com/maxzhao-it/blog/post/47598/