背景: 

        在部署集群过程中,我们会将用户以及文件都存放在管理调度节点(master),但是其它子节点里面是什么都没有的,如果想要其它子节点都可以参与计算,就要涉及到用户同步、文件同步,因此NIS+NFS组合的形式是最为常见的解决方案。

        由于我们所创建的用户默认都是在/home目录下,所以一般/home目录会进行共享,同时/home目录容量一般都不大,但是要满足所有用户的使用需求,可能会考虑新增加一块硬盘为/home目录进行扩容。

        虽然进行了/home目录的共享,也会保持普通用户之间原有的权限,即用户与用户之间是相互隔离的。

介绍:

NIS:网络信息服务(Network Information Service)是集中控制几个系统管理数据库的网络用品。NIS简化了UNIX和LINUX桌面客户的管理工作,客户端利用它可以使用中心服务器的管理文件。桌面系统的用户无需建立他们自己的/etc/passwd,他们只简单的使用维护在NIS服务器的文件即可。简单来说,用户只需要在nis服务器上面创建用户,将客户端加入nis域后,客户端则可以直接使用Nis域上的用户来登录客户端。

NFS:是Network File System的缩写及网络文件系统。NFS主要功能是通过局域网络让不同的主机系统之间可以共享文件或目录。简单来说,只需要在管理节点进行NFS服务共享,其它节点挂载NFS后,即可共享管理节点所分享的文件或目录。

环境:

OS 

Redhat release 7.6

master         

13.10.0.10

node1

13.10.0.11

步骤:

一、格式化新增硬盘,进行/home扩容

Step1:分区、格式化

查看分区:
parted -l

1:选择要分区的盘 
parted /dev/sdb

2:格式化分区 
mklabel gpt

3:分区-将整块盘盘分成一个分区
mkpart primary 0% 100%

4:退出 
q

5:格式化 磁盘--此格式要根据/home目录的格式来格式化
mkfs.xfs /dev/sdb1

Step2:将分好的硬盘扩容到/home目录下,此步骤建议在本地执行

1、将新硬盘临时挂载在一个目录下(比如/mnt/home)
mkdir /mnt/home
mount /dev/sdb1 /mnt/home  

2、把/home下的东西拷到新硬盘的临时目录下
cp -a /home/* /mnt/home/  

复制完成后可以选择直接 rm -rf /home/* 把原来home下的东西删干净,但是这里我建议先保留原/home中的文件,只是重命名备份一下,等后续步骤操作无误再删
mv /home /home_old

如果提示资源占用,不能执行命令时使用下面命令清除资源占用
fuser -km /home 

3、将硬盘重新挂载到/home下
    3.1取消挂载硬盘
    sudo umount /dev/sdb1
    3.2新建/home
    sudo mkdir /home
    3.3重新挂载到新硬盘到/home
    sudo mount /dev/sdb1 /home
此时可使用df -h查看挂载情况

4、设置开机自动挂载
    4.1查看/dev/sdb1 的UUID:通过UUID (硬盘通用唯一识别码)来指定分区可以确保唯一性,多块硬盘的情况下,设备文件名可能改变
    sudo blkid
    查看各硬盘的UUID,并复制属于/dev/sdb硬盘的那一行, UUID="9aa48a41-cbab-452c-85e2-9a4602190e84" 

5、修改/etc/fstab文件,实现开机自动挂载

    如果存在之前自动挂载/home的内容,则先删除这行内容,没有的话,修改fstab
    sudo vi /etc/fstab  
    在文件最后直接添加以下内容,并 :wq 保存退出:

    UUID=9aa48a41-cbab-452c-85e2-9a4602190e84  /home  ext4  defaults  0  2

此时,我们可以使用df -h 查看到已经将新增的硬盘容量扩容到/home目录,接下来进行主机的配置。

二、主机名,域名设置

Step1:设置每个节点的主机名

master节点:
修改主机名为:master
修改/etc/hosts:
13.10.0.10 master
13.10.0.11 node1

node1节点:
修改主机名为:node1
13.10.0.10 master
13.10.0.11 node1

三、配置NIS服务

安装前准备:禁用防火墙和Selinux

systemctl stop firewalld && systemctl disable firewalld.service 

setenforce 0

vim /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled

master节点:

Step1:安装软件包

yum -y install ypserv ypbind yp-tools rpcbind

Step2:在网络中添加NIS域

vi /etc/sysconfig/network

在里面添加一行NISDOMAIN=nisdomain,用来指定NIS服务器的域名称为nisdomain

Step3:增加开机自动加入NIS域

vi /etc/rc.d/rc.local

在里面添加一行/bin/nisdomainname nisdomain

注意哦~~此时可以使用nisdomainname直接查看,如果发现没有展示设置的域名,再输入nisdomainname nisdomain

Step4:创建域用户(组)

useradd -s /bin/bash nisuser

并设置用户密码

passwd nisuser

创建用户组

groupadd nisgroup

Step5:设置主要配置文件添加权限

vi /etc/ypserv.conf

添加如下三行,限制了只能加入13.10网段的服务器

(最简单的方法:仅添加一行:* :*:*:none)

(此处容易出错,注意!)

nfs 可以多台机器做集群 nfs 多节点_linux

Step6:启动NIS服务

systemctl start rpcbind

systemctl start yppasswdd

systemctl start ypserv

Step7:初始化数据库

/usr/lib64/yp/ypinit -m

再执行“ctrl+D”,再输入y

注意,如果期间有更改NIS服务器的配置文件,则需要重新初始化数据库

Step8:初始化数据库后需要重启服务

systemctl start rpcbind   

systemctl start yppasswdd

systemctl start  ypserv

Step9:设置服务开机自启动

systemctl enable rpcbind

systemctl enable yppasswdd

systemctl enable ypserv

node1节点:

Step1:安装软件包

yum -y install ypbind yp-tools  rpcbind

Step2:在网络中添加NIS域

vi /etc/sysconfig/network

在里面添加一行NISDOMAIN=nisdomain

Step3:设置开机自动加入NIS域

vi /etc/rc.d/rc.local

添加/bin/nisdomainname nisdomain

同样注意,此时可以使用nisdomainname直接查看,如果发现没有展示设置的域名,再输入nisdomainname nisdomain

Step4:启动服务

systemctl start rpcbind

systemctl start ypbind

此时可以验证下是否部署成功,在客户端上输入yptest,如果能看到nis服务器上的用户,即部署成功

四、配置NFS服务

master节点:

Step1:查看是否安装了nfs和rpcbind

[root@app home]# rpm -aq | grep nfs

[root@app home]# rpm -aq | grep rpcbind

rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的

Step2:安装nfs和rpcbind(若系统未安装)

[root@app home]# yum install nfs-utils rpcbind

Step3:增加nfs配置文件

[root@app home]# vi /etc/exports

添加共享信息:

/home 13.10.0.0/24(rw,async,no_root_squash,no_subtree_check)

#重新export一次

[root@app home]#exportfs -rv

Step4:启动nfs和rpcbind服务

在SUSE上,服务名为nfsserver,不是nfs。

必须先启动rpcbind,再启动nfs,才能让NFS在rpcbind上注册成功

[root@app home]# service rpcbind start

[root@app home]# service nfs start 

查看启动状态:

[root@app home]# service rpcbind status 

[root@app home]# service nfs status

注意,RPC的状态是Active: active (running);而NFS的状态是Active: active (exited)。

查看自己共享的服务:

[root@app home]# showmount -e

/home 13.10.0.0

Step5:查看RPC服务的注册状况

[root@app home]# rpcinfo -p localhost 

NFS服务使用的111和2049端口是固定的,mountd端口是动态的,需要固定,然后在防火墙放行。

Step6:固定端口

[root@app home]# vi /etc/sysconfig/nfs

1.添加:

RQUOTAD_PORT=30001

LOCKD_TCPPORT=30002

LOCKD_UDPPORT=30002

MOUNTD_PORT=30003

STATD_PORT=30004

2.重启nfs和rpcbind:

[root@app home]# service rpcbind restart

[root@app home]# service nfs restart

(端口并未修改,reboot系统后才修改)

node1节点:

Step1:查看是否安装了nfs和rpcbind

[root@app home]# rpm -aq | grep nfs

[root@app home]# rpm -aq | grep rpcbind

rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端,服务器的nfs端口号的

Step2:安装nfs和rpcbind并启动(若系统未安装)

[root@app home]# yum install nfs-utils rpcbind

Step3:增加nfs配置文件

[root@app home]# vi /etc/exports

/home 13.10.0.10/24(rw,async,no_root_squash,no_subtree_check)

Step4:nfs开机自动挂载

#系统服务未完全启动,挂载会失败,在系统启动以后,再挂载

[root@app adam]# vim /etc/rc.local

#添加

sleep 30

mount -t nfs 13.10.0.10:/home /home

#赋予可执行权限

[root@app adam]# chmod +x /etc/rc.local

Step5:重启服务,设定开机自启动,只需要设置nfs服务

[root@app adam]# systemctl restart nfs

[root@app adam]# systemctl enable nfs

五、SSH免密

Step1:root用户配置免密

master节点执行

ssh-keygen

ssh-copy-id -i /root/.ssh/id_rsa.pub root@13.10.0.10

node1节点执行:

ssh-keygen

ssh-copy-id -i /root/.ssh/id_rsa.pub root@13.10.0.10

Step2:普通用户免密

因为共享/home之后。所有主机共享相同的用户和密码,即所有主机的用户信息一致,只要把免密秘钥放到用户自己的配置文件内即可实现节点间免密登录,所以仅需在任意节点每个用户内操作以下一次即可

ssh-keygen

cd ~/.ssh

cat id_rsa_pub > authorized_keys

chmod 600 authorized_keys

至此,已经结束部署,实现了用户统一管理,用户信息共享,文件或目录的共享,以及/home目录的扩容