본문 바로가기
컴퓨터 & IT (Computer & IT)/Beowulf Cluster (Diskless Cluster)

[Diskless Cluster] 2.2 계산 서버 – 계산서버의 네트워크 문제

by Physics 2020. 6. 2.
728x90

   2.2.1 Masquerade

IP MASQUERADE는 리눅스의 NAT(Network Address Translation) 기능으로써, 내부망의 컴퓨터들이 마스터 서버를 통해서 외부망 인터넷에 접속할 수 있도록 하는 기능이다. 내부망에 속해있는 컴퓨터들이 생성된 모든 네트워크 요청은 Masquerade를 통해서 마스터 서버의 외부망으로 연결이 된다.  

※ Masquerade 설정하는 방법
1) 우리는 iptables로 방화벽을 설정하기 때문에 만약, UFW방화벽이 켜져있다면, UFW를 끄도록 하자 

$ ufw disable

2) IP Masquerade 적용

$ sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o enp8s0 -j MASQUERADE

 

    - 적용될 네트워크 범위: 192.168.0.0/24
    - 경유할 마스터 서버의 네트워크 카드: enp8s0 

 

3) 우분투의 경우, 재부팅을 하면, 적용했던 규칙들이 사라지므로 iptables-persistent 패키지를 설치하여 영구히 iptables들의 규칙들을 적용하도록 하자

 

$ sudo apt-get install iptables-persistent

 

- iptables의 규칙을 변경하거나 추가할 경우, 아래의 명령어를 입력한다.

$ netfilter-persistent save

 

4) IPv4에서 Masquerade가 작동하도록 하기위해선 패킷포워딩이 가능하도록 해야한다.
   (1) 아래의 명령어를 통해서 IPv4 forwarding 상태를 확인한다.

$ sysctl net.ipv4.conf.all.forwarding
$ cat /proc/sys/net/ipv4/ip_forward

   - 위의 두 명령어 중에서 하나를 선택하여 입력 시, 0이 나올 경우 ipv4 forwarding이 되지 않는 것이다.


(2) 0이 나올경우 아래의 두 명령어 중 한 개를 선택하여 입력한다.

$ sysctl -w net.ipv4.conf.all.forwarding=1
$ echo “1” ? /proc/sys/net/ipv4/ip_forward

 

- 여기까지 입력을 할 경우, 재부팅 시 원래대로 0으로 돌아간다. 따라서, 시스템이 재시작 후에도 변경사항이 유지되도록 /etc/sysctl.conf을 편집하자.

$ vim /etc/sysctl.conf 
…
net.ipv4.ip_forward=1
… 

 

(3) 변경사항이 적용되도록 아래의 명령어를 입력한다.

$ sudo sysctl -p /etc/sysctl.conf 
$ sudo /etc/init.d/procps restart

 

2.2.2 Port forwarding

    Port forwarding에 대한 자세한 내용은 다루지 않겠다. 자세한 내용이 필요한 경우, 인터넷에서 추가적인 내용들을   
     찾아보길 바란다. Masquerade와는 반대로 이번에는 외부에서 내부의 계산노드에 접속을 해야할 경우를 고려해보자.
     이런 경우에는 port forwarding이라는 방법을 이용해서 외부에서 내부의 계산 노드로 접속해야한다.
    

     예를들어, 다음과 같은 상황을 가정해보자.
     1) 마스터 서버의 외부망 ip: AAA.AAA.AAA.AAA 
     2) 마스터 서버의 외부망과 연결된 네트워크 이더넷: enp8s0
     3) 외부에서 접속하고자하는 내부망 컴퓨터: node01
     4) node01의 내부망 ip: 192.168.0.2


이런 경우, iptables 방화벽에 다음과 같은 명령어를 입력해야한다.

$ iptables -A PREROUTING -t nat -i enp8s0 -p tcp --dport 10000 -j DNAT --to 192.168.0.2:10000
$ iptables -A FORWARD -p tcp -d 192.168.0.2 --dport 10000 -j ACCEPT

     ※ 예를들어, 만일 접속하고자 하는 계산노드의 apache의 포트가 10000일 경우, 위와 같이 설정해야한다.
     ※ 즉, 계산노드에 접속하고자하는 서버의 포트번호를 dport <port #>와 --to <ip_address>:<port #>, port #에   
       입력해야한다.
     ※ Python의 원격접속에 대한 예는 4장을 참고하길 바란다.

 

여기가지하면, 이제 기본적으로 Diskless Cluster 구성을 완료했다. 이후 남은 일들은 MPICH, ganglia, Torque 등 클러스터를 위한 패키지 프로그램들을 설치하는 것이다. 이는 다음 장부터 설명을 할 예정이다.

728x90

댓글