1. 创建容器、进入容器、改容器root密码
1.1 安装docker
安装参考:
《Docker系列》Docker安装GreenPlum集群_DATA数据猿的博客-优快云博客
yum -y install docker
启动daemon,初始化swarm
sudo systemctl daemon-reload
systemctl start docker
systemctl status docker
systemctl enable docker
docker swarm init
docker node ls
1.2 创建并进入容器
创建3个容器mdw、sdw1、sdw2:
[root@localhost ~]# sudo docker run -d --name mdw --privileged=true centos:7 /usr/sbin/init
7a6e3fcf85d024bac5be33a957dd7d4f2a274ad211626b91a349842b24f0244a
[root@localhost ~]# sudo docker run -d --name sdw1 --privileged=true centos:7 /usr/sbin/init
d47253c5863a3aeeebcde243456bc587c5e62f5872fa3d098b30c46a3c2d4cec
[root@localhost ~]# sudo docker run -d --name sdw2 --privileged=true centos:7 /usr/sbin/init
bc8fdffecd51da4ebbfc33ad139fbef6f82d83f78426bd0a34d4c8542f3fb605
三个窗口分别进入容器:
[root@localhost ~]# docker exec -it mdw /bin/bash
[root@7a6e3fcf85d0 /]#[root@localhost ~]# docker exec -it sdw1 /bin/bash
[root@d47253c5863a /]#[root@localhost ~]# docker exec -it sdw2 /bin/bash
[root@bc8fdffecd51 /]#
1.3 三个容器分别修改root密码:
[root@7a6e3fcf85d0 /]# passwd
[root@d47253c5863a /]# passwd
[root@bc8fdffecd51 /]# passwd
(设置为111222)
2. 修改容器配置
2.1 修改 /etc/hosts 主机映射
cat /etc/hosts 得到三个容器hosts文件的最后一行:
172.17.0.3 7a6e3fcf85d0 mdw
172.17.0.4 d47253c5863a sdw1
172.17.0.5 bc8fdffecd51 sdw2
所以修改三台容器的 /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 7a6e3fcf85d0 mdw
172.17.0.4 d47253c5863a sdw1
172.17.0.5 bc8fdffecd51 sdw2
2.2 配置 /etc/sysconfig/network 文件内容
每台容器执行 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
3. 创建用户、用户组
3.1 每台容器创建用户、用户组,并授予权限:
groupadd -g 530 gpadmin
useradd -g 530 -u 530 -m -d /home/gpadmin -s /bin/bash gpadmin
chown -Rf gpadmin:gpadmin /usr/local/greenplum*
chown -Rf gpadmin:gpadmin /data/passwd gpadmin
##密码设置为gpadmin
3.2每台容器分别授予gpadmin用户、用户组操作目录的权限:
chown -R gpadmin /data/
chgrp -R gpadmin /data/
chown -Rf gpadmin /usr/local/
chgrp -Rf gpadmin /usr/local/
授予权限,否则gpadmin用户下后面将无法创建/data目录
chown -R gpadmin /
chgrp -R gpadmin /
4. 安装防火墙
4.1 检查每台容器是否安装了防火墙:
systemctl status firewalld
显示Unit firewalld.service could not be found.表示没有安装防火墙
4.2 每台容器执行安装防火墙命令:
yum -y install firewalld
4.3 每台容器关闭防火墙:
systemctl stop firewalld
显示Active: inactive (dead) 表示防火墙已关闭
4.4 每台容器检查selinux状态:
getenforce
显示bash: getenforce: command not found 表示没有安装selinux
4.5 安装selinux
每台容器执行安装selinux命令:
yum -y install selinux-policy
4.6 每台容器修改 /etc/selinux/config 配置文件使 SELINUX=disabled:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
4.7 每个容器再次检查加强型防火墙selinux的状态是否为Disabled:
getenforce
5. 安装、配置ssh服务
5.1 vi vi /etc/ssh/sshd_config 发现没有这文件,表示没有安装ssh服务,每台容器安装ssh服务:
yum -y install openssh*
5.2 每台容器 vi /etc/ssh/sshd_config 修改sshd配置文件,取消#Port 22这行注释(开放22端口)
5.3 每台容器执行重启sshd服务命令:
/etc/rc.d/init.d/sshd restart
6. 配置容器间免密登录
6.1 每台容器执行命令配置三台容器之间的免密登录:
su gpadmin
## 如果配免密登录期间出问题,则删除~/.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
7. 安装greenplum
7.1 容器主节点root用户下安装lrzsz,并上传greenplum安装包:
yum -y install lrzsz
rz上传安装包greenplum-db-6.9.1-rhel7-x86_64.rpm 到容器中;
7.2 三台容器root用户下安装依赖:
yum install -y net-tools which less zip unzip iproute apr apr-util bzip2 krb5-devel libevent libyaml openssl openssh perl rsync vim
7.3 容器主节点root用户下安装greenplum:
yum -y install /root/greenplum-db-6.9.1-rhel7-x86_64.rpm
8. 配置集群主机文件
8.1 容器主节点创建目录:
mkdir -p /data/gpconfigs
8.2 容器主节点创建集群主机文件并写入内容:
cat>/data/gpconfigs/all_hosts<<EOF
mdw
sdw1
sdw2
EOF
8.3 容器主节点创建segment主机文件并写入内容:
cat>/data/gpconfigs/seg_hosts<<EOF
sdw1
sdw2
EOF
9. 打通节点
9.1 三个容器都切换到gpadmin用户下,并 vi ~/.bashrc 在文末加入内容
su gpadmin
cat>>~/.bashrc<<EOF
source /usr/local/greenplum-db/greenplum_path.sh
export MASTER_DATA_DIRECTORY=/data/gpdata/master/gpseg-1
export PGPORT=5433
export PGDATABASE=testDB
source ~/.bashrc
9.2 容器主节点执行命令打通节点:
[gpadmin@7a6e3fcf85d0 root]$ gpssh-exkeys -f /data/gpconfigs/all_hosts
9.3 主节点把greenplum安装目录打成tar包,并分发给子节点,解压子节点tar包,配置软连接,创建子节点的数据目录,创建主节点的数据目录:
[gpadmin@7a6e3fcf85d0 local]$ tar -cf gp-6.9.1.tar greenplum-db-6.9.1/
[gpadmin@7a6e3fcf85d0 local]$ gpscp -f /data/gpconfigs/seg_hosts /usr/local/gp-6.9.1.tar =:/usr/local/
[gpadmin@7a6e3fcf85d0 local]$ gpssh -f /data/gpconfigs/seg_hosts
=> cd /usr/local
[sdw2]
[sdw1]=> tar -xf gp-6.9.1.tar
[sdw2]
[sdw1]
=> ln -s ./greenplum-db-6.9.1 greenplum-db
[sdw2]
[sdw1]=> mkdir -p /data/gpdata/master
[sdw2]
[sdw1]
=> mkdir -p /data/gpdata/primary
[sdw2]
[sdw1]
=>[gpadmin@7a6e3fcf85d0 data]$ mkdir -p /data/gpdata/master
[gpadmin@7a6e3fcf85d0 data]$ mkdir -p /data/gpdata/primary