背景介绍

主要还是工作原因,需要搭建高性能计算集群,因此这里用虚拟机搭一个小的集群,学习一下。

NIS服务的搭建

基本概念

对于一个高性能计算集群,里面有很多台服务器,而且一般每台服务器都会有相同的用户,因此如果对每一台服务器都去设置相同的用户的用户名和密码,那将是一个非常繁杂的问题,特别是如果要进行增删改那就是巨大的任务量,因为每台服务器都要去增删改。那么,如果能够有一台服务器作为主节点来管理该集群中所有服务器的帐号密码,当其他的服务器有用户登录的需求时,可以到这台服务器上去查询请求相关的帐号密码等信息,如此这样一来,如果想要增删改,只需要到主节点服务器上面进行处理即可,便于管理。NIS(Network Information Services)就可以实现这样的功能。NIS早期为Sun Yellow Pages 简称YP 黄页的意思。

基本原理

NIS server (服务端)

  • NIS 服务端包括 master 和 slave服务端两种,slave的作用主要是做备份,master出现问题后,slave代替master工作,以此不让整个系统崩溃。

工作流程

  1. master先把帐号密码相关文件制作成数据库文件。
  2. master告诉slave来更新或者slave主动来更新。
  3. 如果帐号密码,需要重新制作数据库文件并重新同步master和slave。

NIS client(客户端)

工作流程

  1. 当用户登录 NIS 客户端时,会优先查询本机的账号和密码。
  2. 如果没有找到账号和密码,开始向整个 NIS 网域的主机广播查询。
  3. 每个 NIS 服务端(master/slave)都可以进行相应,先响应者优先。

注意

关机的时候先关客户端再关服务端,开机的时候先开服务端再开客户端。

基本信息

主机名 系统 ip
master(服务端) Centos8 stream 172.16.34.122
node1(客户端) Centos8 stream 172.16.34.123

服务端和客户端共同配置

  1. 为了避免服务端和客户端无法通信,关闭防火墙和selinux
    systemctl stop firewalld
    systemctl disable firewalld
    vi /etc/selinux/config
    SELINUX=disabled
  2. 修改hosts文件
    vi /etc/hosts
    #添加
    172.16.34.122 master
    172.16.34.123 node1

服务端的配置

  1. 安装服务端需要的软件:ypserv, yp-tools, rpcbind
    yum -y install ypserv yp-tools rpcbind
  • ypserv:提供 NIS Server端的设定软件
  • yp-tools:提供 NIS 相关的查寻指令功能
  • rpcbind:提供RPC程序号码和通用地址互相转换
  1. 设置 NIS 域名
    nisdomainname archer # NIS 域名为 archer
  2. 设置自动挂载 NIS 域名,设置相关权限
    vi /etc/rc.d/rc.local
    #添加
    /bin/nisdomainname archer
    chmod 777 /etc/rc.d/rc.local
  3. 设置172.16.34.0网段访问权限
    vi /etc/ypserv.conf
    #添加
    172.16.34.0: *: *:none
    相关功能
    - 192.168.10.110:*:*:none #给予该IP访问权限
    - 192.168.10.110:*:*:deny #拒绝该IP访问权限
    - :*:*:deny #拒绝所有网络的访问权限
  4. 建立存放用户信息的数据库
    /usr/lib64/yp/ypinit -m  #next host to add:需要ctrl+d
  5. 创建测试用户
  6. 同步新用户信息到数据库,注意:每次有用户数据更新,都要执行
    cd /var/yp
    make
  7. 重新启动服务,设置为开机自启动
    systemctl restart ypserv.service yppasswdd.service rpcbind.service
    systemctl enable ypserv.service yppasswdd.service rpcbind.service

客户端的配置

  1. 安装客户端需要的软件:ypbind, rpcbind, oddjob-mkhomedir
    yum -y install ypbind rpcbind oddjob-mkhomedir
  • ypbind :提供 NIS Client 端的设定软件
  • oddjob-mkhomedir:用来创建主目录
  1. 设置域名

    nisdomainname archer
  2. 开启自动挂载 NIS 域名,并设置权限

    vi /etc/rc.d/rc.local
    #添加
    /bin/nisdomainname archer
    chmod 777 /etc/rc.d/rc.local
  3. 指定 NIS 域和服务器 ip

    vi /etc/yp.conf
    #添加
    domain archer server master
  4. 重新启动服务,设置开机自启

    systemctl restart ypbind.service rpcbind.service nis-domainname oddjobd.service
    systemctl enable --now ypbind.service rpcbind.service nis-domainname oddjobd.service
  5. 查看用户是否加入 archer 域中

    yptest

    结果

    [root@node1 ~]# yptest
    Test 1: domainname
    Configured domainname is "archer"

    Test 2: ypbind
    Use Protocol V1: Used NIS server: 172.16.34.122
    Use Protocol V2: Used NIS server: 172.16.34.122
    Use Protocol V3:
    ypbind_nconf:
    nc_netid: udp
    nc_semantics: 1
    nc_flag: 1
    nc_protofmly: 'inet'
    nc_proto: 'udp'
    nc_device: '-'
    nc_nlookups: 0
    ypbind_svcaddr: 172.16.34.122:805
    ypbind_servername: master
    ypbind_hi_vers: 2
    ypbind_lo_vers: 2

    Test 3: yp_match
    WARNING: No such key in map (Map passwd.byname, key nobody)

    Test 4: yp_first
    user1 user1:$6$IVDk9bvENpB.vNaU$Jg1oZ2W2j9sIysW6kVysZBz5I67u.SWvQBPrype32FiosWH5td0XIOcoSPGlPI2L./aTjQZ5e..grUSAe1piN1:1001:1002::/home/user1:/bin/bash

    Test 5: yp_next
    user2 user2:$6$Fztg7jJWLUMjmiIC$jsnlqAveJ8Vr22MRPfzjjVHY5LiNedgv1GiEHZoCEhwQ6iODCkDxLH8gV9.ChwWwk3teOnvRQHshlcqLouvOt1:1002:1003::/home/user2:/bin/bash
    user_test user_test:$6$N74q30Iqd8OgX7mX$JvhizpG0Hg3tdtc9bAnqx2JQpiv.DpywRiDSGM/csz5ICLMdGMeMVSYbp0l9ZhoUD10iwvg9wiq.unS/Nklue1:1000:1001::/home/user_test:/bin/bash

    Test 6: yp_master
    master

    Test 7: yp_order
    1711108162

    Test 8: yp_maplist
    netid.byname
    group.bygid
    group.byname
    passwd.byuid
    passwd.byname
    mail.aliases
    protocols.byname
    protocols.bynumber
    services.byservicename
    services.byname
    rpc.bynumber
    rpc.byname
    hosts.byaddr
    hosts.byname
    ypservers

    Test 9: yp_all
    user1 user1:$6$IVDk9bvENpB.vNaU$Jg1oZ2W2j9sIysW6kVysZBz5I67u.SWvQBPrype32FiosWH5td0XIOcoSPGlPI2L./aTjQZ5e..grUSAe1piN1:1001:1002::/home/user1:/bin/bash
    user2 user2:$6$Fztg7jJWLUMjmiIC$jsnlqAveJ8Vr22MRPfzjjVHY5LiNedgv1GiEHZoCEhwQ6iODCkDxLH8gV9.ChwWwk3teOnvRQHshlcqLouvOt1:1002:1003::/home/user2:/bin/bash
    user_test user_test:$6$N74q30Iqd8OgX7mX$JvhizpG0Hg3tdtc9bAnqx2JQpiv.DpywRiDSGM/csz5ICLMdGMeMVSYbp0l9ZhoUD10iwvg9wiq.unS/Nklue1:1000:1001::/home/user_test:/bin/bash
    1 tests failed
  6. 配置用户身份验证

    authselect select nis --force 

  7. 配置初次登陆自动创建家目录

    authselect enable-feature with-mkhomedir

  8. 登录测试

    su - user2

参考