hadoop安装和维护09--深入理解Linux修改hostname
来源:互联网 发布:java中set集合的用法 编辑:程序博客网 时间:2024/05/17 08:51
本文是由于Ambari安装HDP时, 选择FDQN, 一致出现问题,需要深入了解hostname, FDQN.
http://blog.chinaunix.net/uid-561779-id-3154203.html
http://www.cnblogs.com/kerrycode/p/3595724.html
一、与hostname 有关的文件,一般修改hostname, 就是修改/etc/hosts
和/etc/sysconfig/network
这两个文件
1、/etc/hosts
:
[root@rhel2 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.105 rhel2.localdomain rhel2192.168.1.103 rhel1.chb.hdp rhel1
2、/etc/sysconfig/network
:
[root@rhel2 ~]# cat /etc/sysconfig/networkNETWORKINT=yesHOSTNAME=rhel2
二、修改/etc/sysconfig/network
中的hostname:
修改后/etc/sysconfig/network
:
#/etc/hosts中内容[root@rhel2 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6#/etc/sysconfig/network内容:[root@rhel2 ~]# cat /etc/sysconfig/networkNETWORKING=yesHOSTNAME=localhost.localdomain #由rhel2改为新值[root@rhel2 ~]#
再来查看hostname:hostname并没有该为localhost.localdomain
[root@rhel2 ~]# hostnamerhel2.chb.hdp[root@rhel2 ~]#
重启系统: hostname 改变了, 那么 是修改/etc/sysconfig/network
中的hostname, 需要重启系统,才可生效?
[root@localhost ~]# hostnamelocalhost.localdomain
Google了一些英文文档资料才知道,hostname是Linux系统下的一个内核参数,它保存在/proc/sys/kernel/hostname
下,但是它的值是Linux启动时从rc.sysinit读取的。
而/etc/rc.d/rc.sysinit
中HOSTNAME的取值来自/etc/sysconfig/network
下的HOSTNAME,代码如下所示:
HOSTNAME=`/bin/hostname`HOSTTYPE=`uname -m`unamer=`uname -r`set -mif [ -f /etc/sysconfig/network ]; then. /etc/sysconfig/networkfiif [ -z "$HOSTNAME" -o "$HOSTNAME" = "(none)" ]; then HOSTNAME=localhostfi
hostname is a kernel parameter which stores hostname of the system. Its location is"/proc/sys/kernel/hostname"The value for this parameter is loaded to kernel by rc.sysinit file during the boot process.
三、修改/proc/sys/kernael/hostname
重启系统后:
四、hostname跟/etc/hosts 下配置有关系吗?
如果从我上面的实验来看,其实hostname跟/etc/hosts下的配置是没有关系的。hostname的修改、变更完全不依赖hosts文件。 其实hosts文件的作用相当如DNS,提供IP地址到hostname的对应。早期的互联网计算机数量少,单机hosts文件里足够存放所有联网计算机。不过随着互联网的发展,这就远远不够了。于是就出现了分布式的DNS系统。由DNS服务器来提供类似的IP地址到域名的对应。具体可以man hosts查看相关信息。
Linux系统在向DNS服务器发出域名解析请求之前会查询/etc/hosts文件,如果里面有相应的记录,就会使用hosts里面的记录。/etc/hosts文件通常里面包含这一条记录:
127.0.0.1 localhost.localdomain localhost
hosts文件格式是一行一条记录,分别是IP地址 、hostname、 aliases,三者用空白字符分隔,aliases可选。
127.0.0.1到localhost这一条建议不要修改,因为很多应用程序会用到这个,比如sendmail,修改之后这些程序可能就无法正常运行。
但是呢,其实hostname也不是说跟/etc/hosts一点关系都没有。在/etc/rc.d/rc.sysinit
中,有如下逻辑判断,当hostname为localhost或localhost.localdomain时,将会使用接口IP地址对应的hostname来重新设置系统的hostname。
# In theory there should be no more than one network interface active# this early in the boot process -- the one we're booting from.# Use the network address to set the hostname of the client. This# must be done even if we have local storage.ipaddr=if [ "$HOSTNAME" = "localhost" -o "$HOSTNAME" = "localhost.localdomain" ]; then ipaddr=$(ip addr show to 0/0 scope global | awk '/[[:space:]]inet / { print gensub("/.*","","g",$2) }') if [ -n "$ipaddr" ]; then eval $(ipcalc -h $ipaddr 2>/dev/null) hostname ${HOSTNAME} fi fi
重启后:
将/etc/sysconfig/network
中的hostname由localhost.localdomain改为rhel, 重启系统后:hostname 和/etc/sysconfig/network
中一致
五、修改了hostname后,如何使其立即生效而不用重启操作系统。
5.1、方法1:修改了/etc/sysconfig/network
下的HOSTNAME后,然后使用echo servername > /proc/sys/kernel/hostname
。
修改了`/etc/sysconfig/network`下的HOSTNAME后 [root@rhel ~]# echo Test >/proc/sys/kernel/hostname
注意当前会话还是不会变化,但是后续新建会话则会生效。
5.2、方法2:修改了/etc/sysconfig/network下的HOSTNAME后,然后使用sysctl kernel.hostname命令使其立即生效:
修改了/etc/sysconfig/network下的HOSTNAME后 [root@DB-Server ~]# echo Test >/proc/sys/kernel/hostname
注意当前会话还是不会变化,但是后续新建
5.3、方法3:修改了/etc/sysconfig/network下的HOSTNAME后,然后使用hostname命令使其生效
修改了/etc/sysconfig/network下的HOSTNAME后 [root@Test ~]# hostname DB-Server
注意当前会话还是不会变化,但是后续新建会话会生效。
其实,这几种方式只是结合永久性修改和临时性修改hostname,使其不必重启Linux服务器,
修改hostname有几种方式?
1: hostname DB-Server --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改2: echo DB-Server > /proc/sys/kernel/hostname --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改3: sysctl kernel.hostname=DB-Server --运行后立即生效(新会话生效),但是在系统重启后会丢失所做的修改4: 修改/etc/sysconfig/network下的HOSTNAME变量 --需要重启生效,永久性修改。
如何查看hostname值, 以那个为准?
more /proc/sys/kernel/hostname
[root@DB-Server ~]# hostnameDB-Server[root@DB-Server ~]# more /proc/sys/kernel/hostnameDB-Server[root@DB-Server ~]# more /etc/sysconfig/networkNETWORKING=yesNETWORKING_IPV6=yesHOSTNAME=localhost.localdomain
六、总结
1、 修改主机名
vi /etc/sysconfig/network NETWORKING=yesHOSTNAME=NEWHOSTNAME #修改该值作为主机名,如:NEWPC
2、修改hosts
vi /etc/hosts127.0.0.1 localhost.localdomain localhost#该行强烈建议保留192.168.0.1 rhel.lpwr.net rhel #必须有三个字段:IP、FQDN、HOSTNAME
3、修改ip
vi /etc/sysconfig/network-scripts/eth0 #编辑指定网络接口配置文件DEVICE=eth0 #指定接口名称ONBOOT=yes #系统启动时加载BOOTPROTO=static #IP地址静态配置,若该值为“dhcp”则为动态获得IPADDR=192.168.0.1 #设置IP地址NETMASK=255.255.255.0 #设置子网掩码GATEWAY=192.168.0.254 #设置默认网关
4.修改网关(可选)
vim /etc/sysconfig/network增加一条网关信息GATEWAY=192.168.1.1
5,修改DNS
vi /etc/resolv.conf #指定当前主机的DNS服务器,最多可指定三个search lpwr.net #设置当前主机的默认查找域nameserver 192.168.0.100 #指定首选DNS服务器nameserver 172.16.254.2
6.重新加载网络配置
/etc/init.d/network restartService network restart
- hadoop安装和维护09--深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 深入理解Linux修改hostname
- 【Linux】深入理解Linux修改hostname
- (ZZ)深入理解Linux修改hostname
- 深入理解Linux修改hostname(原文作者:潇湘隐者)
- Linux 修改IP和hostname
- 软件工程毕业5年坎坷路途
- spring_guide
- 对所有Activity和Fragment统一添加下拉刷新和上拉加载
- Python找不到模块
- 把源串与密串进行异或,结果就是KEY。
- hadoop安装和维护09--深入理解Linux修改hostname
- MVC封装(二)自动加载类
- 封装框架(六)加载控制器
- xammp部署多个站点、部署laravel项目
- [USB协议]USB3.1-Chapter7-Link Layer 数据链路层概览
- 逻辑回归回顾
- spring概念
- Python3 基础:dict和set
- 已经有科学了?还需要自然辩证法吗?