AWSInfra

AWS에서 NFS 서버 세팅

  1. 서버로 사용할 인스턴스 생성
    • Security Group 설정에서 Type을 All traffic 선택 Source를 172.31.0.0/16 입력
    • 172.31.0.0/16 은 서버를 위치할 VPC 의 아이피 대역을 의미
      • 개별로 포트 설정을 하고 싶으면 아래 포트를 TCP/UDP 모두 열어줌
        2049, 111, 32769, 32803, 892, 875, 662
  2. 서버로 사용할 인스턴스에 NFS 설치

    yum install nfs-utils nfs-utils-lib
    
  3. /etc/sysconfig/nfs 파이을 열어 아래 항목의 주석을 풀어줌

    vi /etc/sysconfig/nfs
    
    LOCKD_TCPPORT=32803
    LOCKD_UDPPORT=32769
    MOUNTD_PORT=892
    RQUOTAD_PORT=875
    STATD_PORT=662
    STATD_OUTGOING_PORT=2020
    
    • 주석을 푸는 항목들은 NFS 사용시 이용되는 포트들을 고정시키기 위한 작업임.
    • Security Group 설정에서 위에 설정한 포트와 2049, 111 만 열어도 문제 없음
  4. /home/nfs 폴더 생성(공유할 폴더)

    mkdir /home/nfs
    
  5. /etc/exports 에 공유폴더 설정

    vi /etc/exports
    
    • 입력 내용

      /home/nfs 172.31.0.0/16(rw,sync,insecure,all_squash)
      
    • 옵션 설명

      • ro : 읽기 전용으로 공유한다. (기본)
      • rw : 읽기/쓰기 모드로 공유한다.
      • root_squash : 클라이언트의 root 를 익명 사용자(nobody)로 매핑한다. (기본)
      • no_root_squash : 클라이언트의 root 를 서버의 root 로 매핑한다.
      • all_squash : 모든 사용자를 익명 사용자(nobody)로 매핑한다.
      • sync : 클라이언트와 서버간 동기적 통신을 한다. (기본, 안전성 향상)
      • async : 클라이언트와 서버간 비동기 통신을 한다. (속도 향상)
      • secure : 마운트 요청 시 포트를 1024 이하로 한다. (1024 이하 포트는 root 만 설정 가능, 기본)
      • insecure : 마운트 요청 시 1024 포트 이상도 허용한다.
      • noaccess : 엑세스 거부
      • no_all_squash : root를 제외하고 서버와 클라이언트의 사용자들을 하나의 권한을 가지도록 설정한다.

        설정관련 참고: http://linux.die.net/man/5/exports

  6. 서비스 시작 및 동작 확인

    service rpcbind start
    service nfslock start
    service nfs start
    rpcinfo -p localhost
    

    정상일 경우 아래와 같은 메시지 출력

    program vers proto port service
    100000 4 tcp 111 portmapper
    100000 3 tcp 111 portmapper
    100000 2 tcp 111 portmapper
    100000 4 udp 111 portmapper
    100000 3 udp 111 portmapper
    100000 2 udp 111 portmapper
    100024 1 udp 662 status
    100024 1 tcp 662 status
    100005 1 udp 892 mountd
    100005 1 tcp 892 mountd
    100005 2 udp 892 mountd
    100005 2 tcp 892 mountd
    100005 3 udp 892 mountd
    100005 3 tcp 892 mountd
    100003 2 tcp 2049 nfs
    100003 3 tcp 2049 nfs
    100003 4 tcp 2049 nfs
    100227 2 tcp 2049 nfs_acl
    100227 3 tcp 2049 nfs_acl
    100003 2 udp 2049 nfs
    100003 3 udp 2049 nfs
    100003 4 udp 2049 nfs
    100227 2 udp 2049 nfs_acl
    100227 3 udp 2049 nfs_acl
    100021 1 udp 32769 nlockmgr
    100021 3 udp 32769 nlockmgr
    100021 4 udp 32769 nlockmgr
    100021 1 tcp 32803 nlockmgr
    100021 3 tcp 32803 nlockmgr
    100021 4 tcp 32803 nlockmgr
    
  7. 서비스 등록하기 (리부팅시에도 자동실행)
    • chkconfig를 통하여 아래 3가지 서비스의 2,3,4,5에 on 되어 있는지 확인 없으면 아래 명령을 통하여 서비스를 하나씩 on 처리함
     chkconfig nfs on
     chkconfig nfslock on
     chkconfig rpcbind on
    
  8. 클라이언트에 nfs 설치

    yum install nfs-utils nfs-utils-lib
    
  9. 공유디렉토리 연결(매번 연결 설정 해줘야함)

     mount 172.31.3.63:/home/nfs_temp /home/munilive/public_html/data/temp
    
  10. 공유디렉토리 영구 설정
    • 서버리부팅해도 자동으로 연결함.

      vi /etc/fstab
      
      172.31.3.63:/home/nfs_temp /home/munilive/public_html/data/temp nfs hard 0 0
      
    • 추가. NFS 서버 Public Domain을 CNAME 으로 연결해 놓으면 아이피가 아닌 도메인으로도 설정가능

      nfs.munilive.com:/home/nfs_temp /home/munilive/public_html/data/temp nfs hard 0 0