写在前面
配置前须知
- 请用root用户登录虚拟机,以保证有充分的操作权限
- 可以使用第三方终端来连接虚拟机,这样会让我们配置的效率更高
- 有良好的心态来应对可能出现的意料之外的问题,有问题可以留言或私信,博主将会第一时间回复
- 在中途配置的过程中,尽量不要重启虚拟机,以免配置失效,如果重启,可能需要重新配置/etc/下的文件
- 配置过程中的主机名等请自行修改为自己的个人所需信息
第三方终端可以使用Windows自带的cmd,也可以使用之前博主推荐过的Tabby,详见往期博客
集群规划
一主两从
step0 可能会遇到的问题及解决方式
CentOS7 启动Docker后进入tty命令行界面无法退出的解决方式 链接
CentOS7下 Docker 重启容器后防火墙因重置失效的解决方式 链接
step1 开启docker拉取镜像
Docker 镜像查看:
docker images
拉取镜像:
docker pull registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop
进行中:
结束:
step2 创建容器
DMaster315:
docker run -d --name DMaster315 -h DMaster315 \ -p 50070:50070 --privileged=true \ registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init
DSlave01-315 && DSlave02-315:
docker run -d --name DSlave01-315 -h DSlave01-315 \ --privileged=true \ registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init docker run -d --name DSlave02-315 -h DSlave02-315 \ --privileged=true \ registry.cn-beijing.aliyuncs.com/jing-studio/centos7-hadoop /usr/sbin/init
docker images
查看:
如果说你是直接在虚拟机的终端中操作的命令,可能会遇见跳转到了命令行模式,而没有了图形化界面,可以参考博主的这篇博客
CentOS7 启动Docker后进入tty命令行界面无法退出的解决方式:进入图形化界面
step3 免密登录配置
1. ip查看
如果此时你下载了第三方终端,建议开启三个标签页同时连接虚拟机,并使得三个标签页分别进入docker的三个机器:一个进入DMaster,一个进入DSlave01,另一个进入DSlave02
请先确认容器已经开启(docker ps查看所有已经开启的容器),如果未开启,请用命令docker ps -a查看想要开启的容器的id,然后用命令docker start 容器id来开启
命令:
进入DMaster315,并进入该机器的命令行终端 docker exec -it DMaster315 /bin/bash 进入DSlave01-315,并进入该机器的命令行终端 docker exec -it DSlave01-315 /bin/bash 进入DSlave02-315,并进入该机器的命令行终端 docker exec -it DSlave02-315 /bin/bash
进入容器查看IP:
命令是:ip addr
172.17.0.2/16 DMaster315
172.17.0.3/16 DSlave01-315
172.17.0.4/16 DSlave02-315
整理一下:
172.17.0.2 DMaster315 172.17.0.3 DSlave01-315 172.17.0.4 DSlave02-315
2. 设置主机名
DMaster315
vi /etc/sysconfig/network
需要写入:
NETWORKING=yes HOSTNAME=DMaster315
DSlave01-315
vi /etc/sysconfig/network
需要写入:
NETWORKING=yes HOSTNAME=DSlave01-315
DSlave02-315:
vi /etc/sysconfig/network
需要写入:
NETWORKING=yes HOSTNAME=DSlave02-315
3. 主机名与ip地址映射
在三个机器上操作
修改/etc/hosts
使得三个机器该文件都有以下三行:
172.17.0.2 DMaster315 172.17.0.3 DSlave01-315 172.17.0.4 DSlave02-315
DMaster315:
DSlave01-315:
DSlave02-315:
4. 免密登录
安装passwd
yum install passwd
修改root密码,需要两次输入相同密码
DMaster315修改密码:
DSlave01-315:
DSlave02-315:
查看各个机器~/.ssh下是否有密钥文件(id_rsa.pub文件)
如果没有需要自己生成,已经有的话,查看三个机器的密钥文件是否相同
- 如果相同的话,只需要在三个机器分别连接其他机器
- 如果不相同的话,参考本人博客进行配置
查看authorized_keys中是否包含有三个机器的id_rsa.pub
- 如果有,便不用追加进入authorized_keys
- 如果没有,需要将文件追加进入authorized_keys
- 如果和博主一样三个机器均已经含有id_rsa.pub文件,并且authorized_keys 文件中已经含有三个机器的id_rsa.pub文件,可以不必进行任何修改
5. 免密登录效果
DMaster315 ssh 其他机器
DSlave01-315 ssh 其他机器:
DSlave02-315 ssh 其他机器:
免密登陆成功
***bug fix1.0 /etc/hosts修改完成后重启容器失效
在配置完/etc/hosts之后,由于一些原因就关闭了虚拟机,再次打开之后发现免密登录失效
查看之后得知,在每次重启之后,/etc/hosts就会重置,因为运行容器是以挂载的方式进行的,所以就会在下次登陆的时候失效:
可以参考博客
解决方式:
要在三个机器的/etc/hosts
中都含有ip和主机名的映射
在三个机器的~/.bashrc
中分别添加:
为了方便复制:
是>>追加写,切勿少了一个大于号
# add 2 lines to fix the problem : restart container ,/etc/hosts reset echo "172.17.0.3 DSlave01-315" >> /etc/hosts echo "172.17.0.4 DSlave02-315" >> /etc/hosts echo "172.17.0.2 DMaster315" >> /etc/hosts
Dmaster315:
DSlave01-315:
DSlave02-315:
然后必须要source ~/.bashrc
,必须在三个机器上均进行source操作