NFS+SSH的应用主要是解决Hadoop集群更换公钥的麻烦。

一、NFS配置

1.安装

[root@kry132 ~]# yum -y install rpcbind nfs-utils 

rpcbind:用于通信

nfs-utils:nfs程序


2.创建共享目录

[root@kry132 ~]# mkdir  /data/nfsdata

[root@kry132 ~]# chown hadoop.hadoop /data/nfsdata/


3.配置nfs

[root@kry132 ~]# vim /etc/exports 

添加以下内容:

/data/nfsdata 192.168.0.135(rw,sync)

如果需要指定用户,还需要加入all_squash,anonuid=502,anongid=502。

注意服务端跟客户端用户的UID跟GID必须一致。比如服务端一个用户为abc,uid跟gid都为502,那么客户端也应该存在一个abc的用户,uid跟gid也为502.


4.启动服务

[root@kry132 ~]# /etc/init.d/rpcbind start

[root@kry132 ~]# /etc/init.d/nfs start


5.设置开机启动

[root@kry132 ~]# chkconfig --level 35 rpcbind on

[root@kry132 ~]#  chkconfig --level 35 nfs on


6.查看共享目录(客户端)

[root@Kry135 ~]# showmount -e 192.168.0.132

Export list for 192.168.0.132:

/data/nfsdata 192.168.0.135


二、SSH配置

1.安装ssh

[root@kry132 ~]# yum -y install openssh-server openssh-clients


2.配置

[root@kry132 ~]# vim  /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys


3.生成密钥

[root@kry132 ~]# ssh-keygen -t rsa


4.修改公钥

[root@kry132 ~]# cd  .ssh

[root@kry132 .ssh]# cat id_rsa.pub >>  authorized_keys

[root@kry132 .ssh]# chown hadoop.hadoop authorized_keys

[root@kry132 .ssh]# chmod 600 authorized_keys


5.将公钥放到NFS共享目录

[root@kry132 .ssh]# cp -p authorized_keys  /data/nfsdata/


三、客户端配置

1.安装ssh

[root@Kry135 ~]# yum -y install openssh-server openssh-clients


2.配置

[root@Kry135 ~]# vim  /etc/ssh/sshd_config

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys


3.创建nfs共享目录

[root@Kry135 ~]# mkdir /data/nfsdata/

[root@Kry135 ~]#chown hadoop.hadoop /data/nfsdata/


4.挂载NFS共享目录

[root@Kry135 ~]# mount -t nfs 192.168.0.132:/data/nfsdata /data/nfsdata 


5.创建公钥存放目录

[root@Kry135 ~]# mkdir /home/hadoop/.ssh

[root@Kry135 ~]# chown hadoop.hadoop /home/hadoop/.ssh/

[root@Kry135 ~]# chmod 700 /home/hadoop/.ssh/

注意:如果切换到hadoop用户操作就不需要更改用户所属主群主


6.创建软连接

[root@Kry135 ~]# ln -s  /data/nfsdata/authorized_keys  /home/hadoop/.ssh/authorized_keys


四、测试

1.关闭selinux

[root@Kry135 ~]# setenfore 0

[root@Kry135 ~]# vim /etc/selinux/config

SELINUX=permissive  或 disabled

注意:客户端也需要关闭,执行以上相同操作


2.配置NFS固定端口

[root@Kry135 ~]#vim /etc/service(端口号必须在1024以下,且未被占用)

mountd 1011/tcp #rpc.mountd
mountd 1011/udp #rpc.mountd
rquotad 1012/tcp #rpc.rquotad
rquotad 1012/udp #rpc.rquotad

重启nfs服务后,端口即固定了。

和nfs相关的端口有:

portmap 111

nfsd 2049

mountd 1011

rquotad 1012

注意:然后在服务端跟客户端配置iptables放行端口,如果只是测试直接关闭iptabls即可。


3.测试免密登录

[hadoop@kry132 ~]$ ssh [email protected]

Last login: Thu Aug  4 18:08:31 2016 from slave.hadoop


4.测试免密传输文件

[root@kry132 ~]# su - hadoop

[hadoop@kry132 ~]$ scp test.txt [email protected]:/home/hadoop/

test.txt                    100%   13     0.0KB/s   00:00

测试登录跟文件传输都没有要求输入密码,说明NFS+SSH搭建成功!


扩展内容

1.nfs优化

[root@kry132 ~]# vim /etc/init.d/nfs

[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=8
修改为
[ -z "$RPCNFSDCOUNT" ] && RPCNFSDCOUNT=32

默认的内核参数为:

cat /proc/sys/net/core/rmem_default

229376

cat /proc/sys/net/core/rmem_max

229376

cat /proc/sys/net/core/wmem_default

229376

cat /proc/sys/net/core/wmem_max

229376

修改为:

echo 262144 > /proc/sys/net/core/rmem_default - 最大的TCP数据接收缓冲

echo 262144 > /proc/sys/net/core/rmem_max -  最大的TCP数据发送缓冲

echo 262144 > /proc/sys/net/core/wmem_default - 默认的发送窗口大小

echo 262144 > /proc/sys/net/core/wmem_max - 发送窗口的最大大小