LiHansiyuan 2012-01-24
公司的Hadoop集群服务器加完双网卡后,ssh连接就挺慢的并且服务器不能连接外网,经过排查发现:由于双网卡配置的是2个网段,在连接上网的时候,会自动选择从eth1网卡发送http请求,这样的话由于eth1配置的是10网段的地址,用于集群内部通讯使用,所以当然不能上网,进一步查看网卡的配置发现,eth1和eth0网卡都配置的有网关,并且服务器在发送数据的时候还是选择了eth1网卡的10网段的网关,把10网段的网关注释掉之后,服务器就默认使用了eth0网关上网。
由于集群使用了DNS的方式进行交换数据和通讯,所以在ssh主机名的时候会先进行dns解析,但是还试访问速度挺慢的,并且使用ip地址ssh也是这样的问题,根据之前的经验在被访问的机器上把/etc/ssh/sshd_config配置文件里面的useDNS 设置为 no ,重新启动ssh服务,在访问端继续试着用ssh IP的方式进行检测,结果还是出现同样的问题,提示:
Address 192.168.20.24 maps to localhost, but this does not map back to the address - POSSIBLE BREAK-IN ATTEMPT!
这个时候想到了是不是服务器主板网卡接口顺序设计不合理,但是一想,服务器好像用的是inter的主板,不至于出现这个低级的主板结构性问题,接着继续在网上寻找答案:在网上说把/etc/ssh/ssh_config里面的GSSAPIAuthentication 设置为no,试了一下,问题解决。
在网上搜了一下关于GSSAPIAuthentication的解释,解释为:是否在用户退出登录后自动销毁用户凭证缓存。默认值是”yes”。 这样的话就是说在默认登录的时候每次都要发送密钥通过相关加密协议进行验证,如果选择使用密钥缓存的话,可以解决访问速度慢的问题,相当于是用凭证缓存提高了密码验证的速度。
在实际的应用过程中,发现用root用户登陆确实提高了访问速度,但是使用普通用户访问的时候还是很慢,于是在想是不是因为权限问题阻止了普通用户的访问,结果无果,在网上查后说是修改vim /etc/nsswitch.conf 文件,将hosts: files dns 中的dns去掉可以禁止dns解析,但是这样的话,dns服务器就不能使用了,考虑到使用hosts文件做主机名解析对以后生产环境中添加节点会产生大的工作量,这个不科学,决定不使用这种方案。
这个问题一直困扰着自己,重新清理了一些思路,发现用IP进行ssh访问慢,可能是因为ssh的时候它默认进行了反向解析,但是我们的dns服务器并没有设置反向解析,会不会因为是这个原因呢?
于是在服务器上配置了反向域名解析,访问速度变快,问题解决。