zoukankan      html  css  js  c++  java
  • Linux之hosts文件

    一、序言:

    今天同事部署环境遇到问题,

    原因1:修改了主机名,在/etc/hosts文件中加了3台集群的ip和主机名,但是将默认的前两行也改了,没注意看改了哪里,

    现象:

    1、zookeeper单台可以启动,但是互相无法连通不能注册服务;

    2、hadoop单台可以启动,但是使用hdfs dfs -report时没有3台的记录,且master上的数据占比为零:

    原因2:我看了/etc/hosts后,直接将前两行删了,然后又报错:

    现象:

    namenode启动正常,每个从节点上nodemanager也正常启动,就是从节点上服务datanode无法全部正常启动,有时候只有一个节点上的datanode起来了,其他都没启动,或者从节点上的datanode全部无法启动,在slave节点上查看日志  vi hadoop-root-datanode-slave2.log 发现日志中报有如下错误:

    java.net.BindException: Port in use: localhost:0

    解决办法:

    重新加入/etc/hosts中的前两行:

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    题外话:

    我的单机测试环境并没有加入这两行,而且装的时候还特意删掉了,当时是梦诗姐姐辅助安装的,我是不懂全部照做。hosts内容如下:

    二、正文:

    由于不了解这两行的意思,我去搜索了一下,解说如下,虽然现在还是不太明白,先放在这里吧,等我彻底明白的时候再来添笔记。

     (转发http://www.cnblogs.com/xiaoit/p/3989026.html)

    1、主机名:

    无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。

    公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。

    局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机名,以便于以容易记忆的方法来相互访问。比如我们在局域网中可以为根据每台机器的功用来为其命名。

    主机名相关的配置文件:/etc/hosts 

    2、主机名配置文件:

    主机名的配置文件大多是/etc/hosts 

    hosts 配置文件是用来把主机名字映射到IP地址的方法,这种方法比较简单。但这种映射只是本地机的映射,也就是说每台机器都是独立的,所有的计算机都不能相互通过Hostname来访问。

    例如:

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

    127.0.0.1   localhost.localdomain localhost

    192.168.1.195  debian.localdomain debian

    一般情况下hosts的内容关于主机名(Hostname)的定义,每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号开头的行做说明,不被系统解释。

    第一部份:网络IP地址。

    第二部份:主机名.域名,注意主机名和域名之间有个半角的点。

    第二部份:主机名(主机名别名) ,其实就是主机名。

    当然每行也可以是两部份,就是主机IP地址和主机名;比如 192.168.1.195 debian

    再我们有三台主机,每台做不同的事,一台做MAIL服务器,一台做FTP服务器,一台做SMB服务器,所以我们就可以这样来设计Hostname;

    127.0.0.1 localhost.localdomain localhost

    192.168.1.2 ftp.localdomain ftp

    192.168.1.3 mail.localdomain mail

    192.168.1.4 smb.localdomin smb

    把这上面这个配置文件的内容分别写入每台机器的/etc/hosts内容中,这样这三台局域网的机器就可以通过Hostname来访问了。


    3、主机名(Hostname)和域名(Domain)的区别

    主机名就机器本身的名字,域名是用来解析到IP的。但值得一说的是在局域网中,主机名也是可以解析到IP上的;比如我们前面所说举的例子;

     显示主机名:

    # Hostname

    root1

    此主机的主机名是root1,不加参数是用来显示当前操作的主机的主机名。

    临时设置主机名:

    我们可以用 Hostname 后接主机名,这样就可以设置当前操作的主机的主机名,比如我们想把主机名设置为root2;

    # Hostname root2

    root2

    通过Hostname 工具来设置主机名只是临时的,下次重启系统时,此主机名将不会存在;所以您想修改主机名,想一直有效的,还是用前面所说修改主机名配置文件 /etc/hosts;

    显示主机IP:

    [root@Linuxsir01 ~]# Hostname -i

    192.168.10.3

    2018年10月31日记

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    每天进步一点点,快乐生活多一点。
  • 相关阅读:
    NHibernate初学者指南系列文章导航
    c# 类一般在哪里实例化,是在类内、方法内还是其他地方?
    日期和时间的正则表达式
    virtual和abstract区别
    VS2010和选中代码相同的代码的颜色设置,修改高亮颜色
    SqlServer表和EXCEL数据互相复制方法
    C#操作XML的方法
    1、Spring Boot 2.x 简介
    C语言学习系列(六)基本语法
    C语言学习系列(六)存储类
  • 原文地址:https://www.cnblogs.com/yiruliu/p/9886051.html
Copyright © 2011-2022 走看看