写篇文章缅怀多哥,多哥真的很优秀。
1.问题背景
在购买ECS并挂载第三方镜像市场的镜像时,往往新建实例还保留了原镜像中的IP,导致软件或服务异常。
以Hadoop为例,如果我们在购买ECS时,选择了内置Hadoop的镜像。直接运行时会出现:
当时还是linux小白的我慌得很。
2.解决方案
2.1 把/etc/hosts里过期的IP删掉
在查看hosts时,我们可以
2.2 把.ssh目录下的known_hosts文件删除
我们如果搭建Hadoop集群,一定会通过ssh命令实现集群间的无密码访问。
eg.
第一步:在本地机器上使用ssh-keygen产生公钥私钥对
$ ssh-keygen
第二步:用ssh-copy-id将公钥复制到远程机器中
$ ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
注意: ssh-copy-id命令 可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。
第三步: 登录到远程机器不用输入密码
$ ssh 用户名字@192.168.x.xxx
$ Last login: Sun Nov 16 17:22:33 2008 from 192.168.1.2
ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。
如果使用镜像新建ECS实例的话,这个镜像中旧的known_hosts,authorized_keys对我们来说就没有用了。
重新使用ssh-copy-id命令发送sshkey
对于hadoop集群,需要给每一个子节点发送一遍。如果主节点也负责存储,别忘了给本节点也发一个。