Oracle® Solaris 11.2의 이름 지정 및 디렉토리 서비스 작업: DNS 및 NIS

인쇄 보기 종료

업데이트 날짜: 2014년 7월
 
 

업데이트된 맵 유지 관리

다음 절에서는 기본 세트와 함께 제공된 맵의 업데이트를 완료한 후의 추가 절차에 대해 설명합니다.

NIS 맵 전파

맵이 변경된 후 Makefileyppush를 사용하여 새 맵을 슬레이브 서버로 전파합니다(Makefile에 NOPUSH가 설정되지 않은 경우). 이 작업을 위해 ypserv 데몬에 알리고 맵 전송 요청을 보냅니다. 슬레이브의 ypserv 데몬은 ypxfr 프로세스를 시작하고, 이 프로세스가 마스터 서버의 ypxfrd 데몬과 연결됩니다. 일부 기본 검사(예: 실제로 맵이 변경되었는지 여부)가 수행된 다음 맵이 전송됩니다. 슬레이브의 ypxfryppush 프로세스로 응답을 보내 전송에 성공했는지 여부를 나타냅니다.

svc:/network/rpc/bind 서비스의 config/local_only 등록 정보는 false로 설정해야 합니다. 그렇지 않으면 NIS 마스터에서 yppush 명령을 사용하여 NIS 마스터의 업데이트된 버전을 NIS 슬레이브 서버로 전송할 수 없습니다.


주 -  슬레이브 서버에 아직 없는 새로 만든 맵에서는 위 절차가 작동하지 않습니다. 슬레이브에서 ypxfr을 실행하여 새 맵을 슬레이브 서버로 보내야 합니다.

맵이 전파되지 않는 경우가 있으며 수동으로 ypxfr을 사용하여 새 맵 정보를 보내야 합니다. root crontab 파일을 통해 주기적으로 또는 명령줄에서 대화식으로 ypxfr을 사용하도록 선택할 수 있습니다. 이러한 접근 방법은 다음 절에서 설명합니다.

맵 전송 시 cron 명령 사용

맵에는 여러 가지 변경 등급이 있습니다. 예를 들어, 기본 맵 중 protocols.byname, 기본 맵이 아닌 맵 중 auto_master 같은 일부 맵은 몇 달 동안 변경되지 않을 수 있습니다. 그러나 passwd.byname은 하루에 여러 번 변경될 수 있습니다. crontab 명령을 사용하여 맵 전송을 예약하면 개별 맵에 대해 특정 전파 시간을 설정할 수 있습니다.

맵에 적합한 비율로 주기적으로 ypxfr을 실행하려면 각 슬레이브 서버의 루트 crontab 파일에 적합한 ypxfr 항목이 포함되어야 합니다. ypxfr은 마스터 서버의 복사본이 로컬 복사본보다 최신인 경우에만 마스터 서버에 연결하고 맵을 전송합니다.


주 - 마스터 서버가 기본 –m 옵션을 사용하여 rpc.yppasswdd를 실행하면 누구든지 해당 yp 암호를 변경할 때마다 passwd 데몬이 make를 실행하고 passwd 맵이 재구성됩니다.

cronypxfr과 함께 셸 스크립트 사용

각 맵에 대해 개별 crontab 항목을 만드는 대신 루트 crontab 명령이 모든 맵을 주기적으로 업데이트하는 셸 스크립트를 실행하도록 하는 것이 좋습니다. 샘플 맵 업데이트 셸 스크립트는 /usr/lib/netsvc/yp 디렉토리에 있습니다. 스크립트 이름은 ypxfr_1perday, ypxfr_1perhourypxfr_2perday입니다. 사이트 요구 사항에 맞게 이러한 셸 스크립트를 수정하거나 바꿀 수 있습니다. 다음 예에서는 기본 ypxfr_1perday 셸 스크립트를 보여 줍니다.

예 7-1  ypxfr_1perday 셸 스크립트
#! /bin/sh
#
# ypxfr_1perday.sh - Do daily yp map check/updates
PATH=/bin:/usr/bin:/usr/lib/netsvc/yp:$PATH
export PATH
# set -xv
ypxfr group.byname
ypxfr group.bygid
ypxfr protocols.byname
ypxfr protocols.bynumber
ypxfr networks.byname
ypxfr networks.byaddr
ypxfr services.byname
ypxfr ypservers

루트 crontab을 매일 실행할 경우 이 셸 스크립트는 하루에 한 번 맵을 업데이트합니다. 매주 한 번, 매달 한 번, 매 시간 한 번 등으로 맵을 업데이트하는 스크립트를 사용할 수도 있습니다. 그러나 맵을 자주 전파할 경우의 성능 저하에 주의해야 합니다. 자세한 내용은 crontab(1) 매뉴얼 페이지를 참조하십시오.

NIS 도메인에 대해 구성된 각 슬레이브 서버에서 root와 동일한 셸 스크립트를 실행합니다. 마스터 작동에 방해가 되지 않도록 한 서버에서 다른 서버로의 정확한 실행 시간을 변경합니다.

특정 슬레이브 서버에서 맵을 전송하려는 경우 셸 스크립트 내에서 ypxfr–h machine 옵션을 사용합니다. 다음은 스크립트에 배치하는 명령의 구문입니다.

# /usr/lib/netsvc/yp/ypxfr –h machine [ –c ] mapname

여기서 machine은 전송하려는 맵이 있는 서버의 이름이고, mapname은 요청된 맵의 이름입니다. 시스템을 지정하지 않고 –h 옵션을 사용하면 ypxfr은 마스터 서버에서 맵을 가져오려고 합니다. ypxfr을 실행할 때 ypserv가 로컬에서 실행되고 있지 않으면 ypxfr에서 현재 맵 지우기 요청을 로컬 ypserver로 보내지 않도록 –c 플래그를 사용해야 합니다.

–s domain 옵션을 사용하여 다른 도메인에서 로컬 도메인으로 맵을 전송할 수 있습니다. 이러한 맵은 도메인 간에 동일해야 합니다. 예를 들어, 두 도메인이 동일한 services.bynameservices.byaddr 맵을 공유할 수 있습니다. 또는 제어를 강화하기 위해 rcp 또는 rsync를 사용하여 도메인 간에 파일을 전송할 수 있습니다.

직접 ypxfr 명령 호출

ypxfr 명령을 호출하는 두번째 방법은 명령으로 실행하는 것입니다. 일반적으로 예외적인 상황에서만 이 방법을 사용합니다. 예를 들어, 테스트 환경을 만들기 위해 임시 NIS 서버를 설정하는 경우나 서비스가 중단된 NIS 서버를 신속하게 다른 서버와 일치시키려는 경우에 사용합니다.

ypxfr 작업 기록

ypxfr의 전송 시도와 결과는 로그 파일에 캡처될 수 있습니다. /var/yp/ypxfr.log 파일이 있으면 결과가 파일에 추가됩니다. 로그 파일의 크기는 제한되지 않습니다. 파일이 무한히 커지지 않도록 때때로 다음을 입력하여 파일을 비웁니다.

# cd /var/yp
# cp ypxfr.log ypxfr.log.old
# cat /dev/null > /var/yp/ypxfr.log

crontab에서 이러한 명령을 매주 한 번 실행하도록 할 수 있습니다. 로깅을 해제하려면 로그 파일을 제거합니다.