前言
基于前面的搭建,就会发现三台容器都是发布到一台物理机上,在一台物理机上实现了CDH集群的效果,这拿来测试还行,当时实际环境下,资源是远远不够用的。
接下来,将基于前面的的步骤,使用安装包搭建完全分布式的CDH集群,在多个物理机上时间CDH集群的搭建。
跨服务容器之间的通讯问题是搭建完全分布式CDH集群的难点,这里将使用Dokcer Swarm网络解决了这个问题。
1. 拷贝安装包
将镜像安装包拷贝到各个节点
主节点拷贝 master-server.tar.gz,hadoop_CDH.zip
从节点拷贝 agent-server.tar.gz
2. 卸载Docker(各个节点)
systemctl stop docker
yum -y remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker
卸载旧版本:
yum -y remove docker docker-client docker-client-latest docker-common docker-latest \
docker-latest-logratate docker-logrotate docker-engine
3. 安装Docker(各个节点)
安装需要的软件包:yum install -y yum-utils
添加国内yum源:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum索引:yum makecache fast
安装docker:yum -y install docker-ce docker-ce-cli containerd.io
测试命令:
systemctl start docker \
&& docker version
结果:
Client: Docker Engine - Community
Version: 20.10.8
API version: 1.41
#配置镜像加速
sudo mkdir -p /etc/docker \
&& ( cat <<EOF
{"registry-mirrors":["https://qiyb9988.mirror.aliyuns.com"]}
EOF
) >> /etc/docker/daemon.json \
&& sudo systemctl daemon-reload \
&& sudo systemctl restart docker \
&& systemctl status docker
3. 初始化swarm (主节点asrserver001作为manager)
# 如果初始使用,则强制swarm节点离开(各个节点)
docker swarm leave --force
# 注意:advertise-addr必须是内网地址,为了各个节点且能够相互ping通,ssh免密登录,
# 不然会导致节点内的容器相互访问异常(比如22端口访问拒绝)
[root@server001 ~]# docker swarm init --advertise-addr 172.16.0.6
结果:
Swarm initialized: current node (iqs8gjyc6rbecu8isps4i5xv9) is now a manager.
To add a worker to this swarm, run the following command:
# 成为worker需执行的命令
docker swarm join --token SWMTKN-1-66m3f30eafi307affyhjwp4954kuai9n5xb1lveetflg4u7bkb-cqzfkonnjxxtk7zqcl9omhs5b 172.16.0.6:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
注意:如果部署在云服务上,出站端口记得开放2377 端口
4. 加入worker节点(从节点server002-003 作为work)
# 获取上一步的执行命令,分别在从节点上执行
[root@server002 ~]# docker swarm join --token SWMTKN-1-66m3f30eafi307affyhjwp4954kuai9n5xb1lveetflg4u7bkb-cqzfkonnjxxtk7zqcl9omhs5b 172.16.0.6:2377
[root@server003 ~]# docker swarm join --token SWMTKN-1-66m3f30eafi307affyhjwp4954kuai9n5xb1lveetflg4u7bkb-cqzfkonnjxxtk7zqcl9omhs5b 172.16.0.6:2377
# 从上可知,swarm node通过2377端口接入到swarm集群中的,务必开启该端口
结果:
This node joined a swarm as a worker.
5. 查看集群node信息(主节点)
[root@server001 ~]# docker node ls
# 结果
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
iqs8gjyc6rbecu8isps4i5xv9 * asrserver001 Ready Active Leader 20.10.8
rqrxol843ojajibfqbfcsk1l8 asrserver002 Ready Active 20.10.8
yu7udkwkul8nujgwdsx1tp5yo asrserver003 Ready Active 20.10.8
从上诉可知各个节点已经形成集群,server001为Leader(manager),其他节点为worker
6. 创建overlay网络(主节点)
[root@server001 ~]# docker network create --opt encrypted --driver overlay --attachable cdh-net && docker n

本文档详细介绍了如何使用Docker Swarm在多台物理机上搭建完全分布式的CDH集群。从卸载并安装Docker,初始化Swarm,到创建网络,再到启动和配置容器,最后测试跨服务容器间的网络通讯和SSH设置,整个过程详尽而实用。此外,还涉及到了Parcel安装包的配置和CDH服务的启动。

630

被折叠的 条评论
为什么被折叠?



