docker安装greenplum集群

前言:

1. 通过docker镜像centos:7创建三个容器(mdw、sdw1、sdw2)构建一个简易greenplum6.9.1版本的集群;

2. 下载链接:

2.1 Greenplum6.9.1官网下载渠道

2.2 docker下载安装参考

3. 安装集群过程:

docker pull centos:7
docker images
sudo docker run -itd --name mdw -p 22222:22 -p 5433:5433 -p 43000:43000 -p 34000:34000 -p 40000:44000 -p 33000:33000 --privileged=true centos:7 /usr/sbin/init
sudo docker run -d --name sdw1 -p 22223:22 -p 5434:5433 -p 43001:43000 -p 34001:34000 -p 44001:44000 -p 33001:33000 --privileged=true centos:7 /usr/sbin/init
sudo docker run -d --name sdw2 -p 22224:22 -p 5435:5433 -p 43002:43000 -p 34002:34000 -p 44002:44000 -p 33002:33000 --privileged=true centos:7 /usr/sbin/init
docker ps -a
docker start mdw sdw1 sdw2
(mdw)docker exec -it mdw /bin/bash
(sdw1)docker exec -it sdw1 /bin/bash
(sdw2)docker exec -it sdw2 /bin/bash
(mdw)yum install -y net-tools which openssh* openssh-server less zip unzip iproute apr apr-util bzip2 krb5-devel libevent libyaml openssl openssh perl rsync vim
(sdw1)yum install -y net-tools which openssh* openssh-server less zip unzip iproute apr apr-util bzip2 krb5-devel libevent libyaml openssl openssh perl rsync vim
(sdw2)yum install -y net-tools which openssh* openssh-server less zip unzip iproute apr apr-util bzip2 krb5-devel libevent libyaml openssl openssh perl rsync vim
(mdw)passwd(设为111222)
(sdw1)passwd(设为111222)
(sdw2)passwd(设为111222)
(mdw)cat /etc/hosts
(sdw1)cat /etc/hosts
(sdw2)cat /etc/hosts
(mdw)vi /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 045ea89f20c6 mdw
172.17.0.4 ac31f00a6f23 sdw1
172.17.0.5 91836165ce77 sdw2
(sdw1)vi /etc/hosts(配置同上)
(sdw2)vi /etc/hosts(配置同上)
确保/etc/sysconfig/network无此文件并编辑:
(mdw)cat /etc/sysconfig/network
(sdw1)cat /etc/sysconfig/network
(sdw2)cat /etc/sysconfig/network
(mdw)
cat >/etc/sysconfig/network<<EOF
NETWORKING=yes
HOSTNAME=mdw
EOF
(sdw1)
cat >/etc/sysconfig/network<<EOF
NETWORKING=yes
HOSTNAME=sdw1
EOF
(sdw2)
cat >/etc/sysconfig/network<<EOF
NETWORKING=yes
HOSTNAME=sdw2
EOF
(mdw&sdw1&sdw2)
检查配置:
cat /etc/sysconfig/network
(mdw)
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(密码设置为gpadmin)
(sdw1)
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(密码设置为gpadmin)
(sdw2)
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(密码设置为gpadmin)
(mdw)
chown -R gpadmin /home/gpadmin/ 
chgrp -R gpadmin /home/gpadmin/
(sdw1)
chown -R gpadmin /home/gpadmin/ 
chgrp -R gpadmin /home/gpadmin/
(sdw2)
chown -R gpadmin /home/gpadmin/ 
chgrp -R gpadmin /home/gpadmin/

容器修改最大句柄数:
(mdw&sdw1&sdw2)
先检查配置:cat /etc/security/limits.conf
(mdw)
cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
EOF
(sdw1)
cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
EOF
(sdw2)
cat >> /etc/security/limits.conf << EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
EOF
(mdw&sdw1&sdw2)
检查配置:cat /etc/security/limits.conf
检查防火墙是否安装:
(mdw)systemctl status firewalld显示Unit firewalld.service could not be found.(防火墙未安装)
(sdw1)systemctl status firewalld显示Unit firewalld.service could not be found.(防火墙未安装)
(sdw2)systemctl status firewalld显示Unit firewalld.service could not be found.(防火墙未安装)
(mdw)yum -y install firewalld
(sdw1)yum -y install firewalld
(sdw2)yum -y install firewalld
(mdw)systemctl stop firewalld
(sdw1)systemctl stop firewalld
(sdw2)systemctl stop firewalld
(mdw)systemctl status firewalld
(sdw1)systemctl status firewalld
(sdw2)systemctl status firewalld
查看是否安装了selinux:
(mdw)cat /etc/selinux/config(找不到文件则进行下一步安装selinux)
(sdw1)cat /etc/selinux/config(找不到文件则进行下一步安装selinux)
(sdw2)cat /etc/selinux/config(找不到文件则进行下一步安装selinux)
(mdw)yum -y install selinux-policy
(sdw1)yum -y install selinux-policy
(sdw2)yum -y install selinux-policy
修改配置文件关闭selinux:
(mdw)vi /etc/selinux/config 设置SELINUX=disabled
(sdw1)vi /etc/selinux/config 设置SELINUX=disabled
(sdw2)vi /etc/selinux/config 设置SELINUX=disabled
检查下selinux状态是否为disabled:
(mdw)getenforce(显示为Disabled)
(sdw1)getenforce(显示为Disabled)
(sdw2)getenforce(显示为Disabled)
(mdw)ll /etc/sysconfig/(确保有一行selinux -> ../selinux/config)
(sdw1)ll /etc/sysconfig/(确保有一行selinux -> ../selinux/config)
(sdw2)ll /etc/sysconfig/(确保有一行selinux -> ../selinux/config)
设置容器跟随镜像启动而启动:
(虚拟机)
docker update --restart=always mdw
docker update --restart=always sdw1
docker update --restart=always sdw2
开放22端口给免密登录发送密钥使用:
(mdw-root)
vi /etc/ssh/sshd_config(将#Port 22这行取消注释)
/etc/rc.d/init.d/sshd restart(重启ssh服务)
(sdw1-root)
vi /etc/ssh/sshd_config(将#Port 22这行取消注释)
/etc/rc.d/init.d/sshd restart(重启ssh服务)
(sdw2-root)
vi /etc/ssh/sshd_config(将#Port 22这行取消注释)
/etc/rc.d/init.d/sshd restart(重启ssh服务)
三台容器配置免密登录:
(mdw&sdw1&sdw2-gpadmin)
su gpadmin
ls ~/.ssh/
rm -rf ~/.ssh/*
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub gpadmin@mdw
ssh-copy-id -i ~/.ssh/id_rsa.pub gpadmin@sdw1
ssh-copy-id -i ~/.ssh/id_rsa.pub gpadmin@sdw2
ssh-keygen -t ecdsa
ssh-copy-id -i ~/.ssh/id_ecdsa.pub gpadmin@mdw
ssh-copy-id -i ~/.ssh/id_ecdsa.pub gpadmin@sdw1
ssh-copy-id -i ~/.ssh/id_ecdsa.pub gpadmin@sdw2
cat ~/.ssh/authorized_keys(最后再检查下是否含有三个容器的公钥,缺少则去执行ssh-copy-id命令进行补充)
从宿主机上传下载好的greenplum6.9.1的rpm包:
(虚拟机)yum -y install lrzsz
rz上传greenplum-db-6.9.1-rhel7-x86_64.rpm包
(虚拟机)docker cp greenplum-db-6.9.1-rhel7-x86_64.rpm mdw:/home/gpadmin(虚拟机上传gp安装包到mdw容器中)
(mdw-root)
exit(退回到root用户下)
rpm -ivh --relocate /usr/local/=/home/gpadmin/ /home/gpadmin/greenplum-db-6.9.1-rhel7-x86_64.rpm
mdw容器创建目录:
(mdw-root)
mkdir -p /home/gpadmin/config
(mdw-root)
cat>/home/gpadmin/config/all_hosts<<EOF
mdw
sdw1
sdw2
EOF
(mdw-root)
cat>/home/gpadmin/config/seg_hosts<<EOF
sdw1
sdw2
EOF
mdw容器执行source使gp配置文件生效:
(mdw-gpadmin)
su gpadmin
source /home/gpadmin/greenplum-db/greenplum_path.sh(每次从root切换到gpadmin用户下进行gpssh/gpscp操作前都要source以下,否则命令无法使用)
打通节点:
(mdw-gpadmin)
gpssh-exkeys -f /home/gpadmin/config/all_hosts
子节点创建config目录:
(mdw-gpadmin)gpssh -f /home/gpadmin/config/seg_hosts
=> mkdir -p /home/gpadmin/config
[sdw2]
[sdw1]
=>exit退出连接状态
打gp安装目录成tar包,并发送给其他子节点:
(mdw-root)
exit(回退到root用户下)
cd /home/gpadmin(gpadmin只能操作家目录下的文件,所以打gp的tar包放在/home/gpadmin下)
(mdw-root:/home/gpadmin)
[root@aa2daed78773 gpadmin]# tar -cf gp-6.9.1.tar greenplum-db-6.9.1/
(mdw-gpadmin)
su gpadmin
source /home/gpadmin/greenplum-db/greenplum_path.sh
gpscp -f /home/gpadmin/config/seg_hosts /home/gpadmin/gp-6.9.1.tar =:/home/gpadmin/(把tar包发送给sdw1和sdw2)
连接子节点,解压tar包,创建软连接,创建gp数据目录:
(mdw-gpadmin) 
gpssh -f /home/gpadmin/config/seg_hosts
=> cd /home/gpadmin
[sdw1]
[sdw2]
=> ls                  
[sdw1] config    gp-6.9.1.tar
[sdw2] config    gp-6.9.1.tar
=> tar -xf gp-6.9.1.tar
[sdw1]
[sdw2]
=> ls
[sdw2] config    gp-6.9.1.tar  greenplum-db-6.9.1
[sdw1] config    gp-6.9.1.tar  greenplum-db-6.9.1
=> ln -s ./greenplum-db-6.9.1 greenplum-db
[sdw1]
[sdw2]
=> exit
gpssh -f /home/gpadmin/config/all_hosts(登录到所有节点,去创建目录)
[gpadmin@aa2daed78773 ~]$ gpssh -f /home/gpadmin/config/all_hosts
=> mkdir /home/gpadmin/gpdata
=> cd /home/gpadmin/gpdata
[sdw2]
[sdw1]
[ mdw]
=> pwd
[sdw2] /home/gpadmin/gpdata
[sdw1] /home/gpadmin/gpdata
[ mdw] /home/gpadmin/gpdata
=> mkdir -p {gpmaster,gpdatam1,gpdatap1}
[sdw2]
[sdw1]
[ mdw]
=> ls
[sdw2] gpdatam1  gpdatap1  gpmaster
[sdw1] gpdatam1  gpdatap1  gpmaster
[ mdw] gpdatam1  gpdatap1  gpmaster
=>exit
(mdw&sdw1&sdw2-gpadmin)
修改配置文件.bashrc(每次切换到gpadmin用户下,就会执行.bash_profile内容)
vi ~/.bashrc
(mdw&sdw1&sdw2-gpadmin)
文末加入4行内容:
source /home/gpadmin/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/home/gpadmin/gpdata/gpmaster/gpseg-1
export PGPORT=5433
所有节点配置数据库初始化文件:
(mdw&sdw1&sdw2-gpadmin)
(mdw-root)
再次开通权限:
exit
chown -R gpadmin:gpadmin /home/gpadmin
su gpadmin
复制模板配置文件到家目录:
cp $GPHOME/docs/cli_help/gpconfigs/gpinitsystem_config /home/gpadmin/config/
vim /home/gpadmin/config/gpinitsystem_config
(修改或者新增内容,保持下面12行配置内容)
ARRAY_NAME="Greenplum Cluster mdw sdw1 sdw2"
MACHINE_LIST_FILE=/home/gpadmin/config/all_hosts
SEG_PREFIX=gpseg
PORT_BASE=33000
declare -a DATA_DIRECTORY=(/home/gpadmin/gpdata/gpdatap1)
MASTER_HOSTNAME=045ea89f20c6
MASTER_DIRECTORY=/home/gpadmin/gpdata/gpmaster
MASTER_PORT=5433
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)
把配置文件分发给从节点:
scp /home/gpadmin/config/gpinitsystem_config root@sdw1:/home/gpadmin/config/
scp /home/gpadmin/config/gpinitsystem_config root@sdw2:/home/gpadmin/config/
初始化数据库系统:
(mdw-gpadmin)
su gpadmin
gpinitsystem -c /home/gpadmin/config/gpinitsystem_config -s sdw2
初始化报错,执行以下步骤后,修改配置,再次初始化
ll /home/gpadmin/gpdata/gpdatap1/
ll /home/gpadmin/gpdata/gpdatam1/
ll /home/gpadmin/gpdata/gpmaster/
(mdw&sdw1&sdw2-gpadmin)
rm -rf /home/gpadmin/gpdata/gpdatam1/*
rm -rf /home/gpadmin/gpdata/gpdatap1/*
rm -rf /home/gpadmin/gpdata/gpmaster/*
rm -rf /home/gpadmin/gpAdminLogs/*
rm -rf /tmp/.s.PGSQL.*.lock
gpinitsystem -c /home/gpadmin/config/gpinitsystem_config -s sdw2
初始化成功;
修改用户名密码:
psql -p 5433 -d postgres
postgres=# \password gpadmin
Enter new password:自定义
ctrl+Z退出数据库交互界面
(mdw-gpadmin)
pg_hba.conf文末增加一行内容,允许所有用户所有ip均可访问:
(mdw-gpadmin)
vi /home/gpadmin/gpdata/gpmaster/gpseg-1/pg_hba.conf
加入:
host     all         all             all                 trust
vi /home/gpadmin/gpdata/gpdatap1/gpseg0/pg_hba.conf
vi /home/gpadmin/gpdata/gpdatam1/gpseg2/pg_hba.conf
分别加入:
host    all             all             all                     trust
(sdw1-gpadmin)
vi /home/gpadmin/gpdata/gpdatap1/gpseg1/pg_hba.conf
vi /home/gpadmin/gpdata/gpdatam1/gpseg0/pg_hba.conf
分别加入:
host    all             all             all                     trust
(sdw2-gpadmin)
vi /home/gpadmin/gpdata/gpdatap1/gpseg2/pg_hba.conf
vi /home/gpadmin/gpdata/gpdatam1/gpseg1/pg_hba.conf
加入:
host    all             all             all                     trust
vi /home/gpadmin/gpdata/gpmaster/gpseg-1/pg_hba.conf
加入:
host     all         all             all                 trust
端口状态查看:gpstate -p
重启gp数据库:
gpstop -M fast
gpstart -a
查看端口被占用情况:
netstat -apn|grep 5433
kill -9 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值