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 - 发送窗口的最大大小