2012년 12월 8일 토요일

노트북에 분산환경을 위한 가상머신 구축하기 #1

연결된 글들:
노트북에 분산환경을 위한 가상머신 구축하기 #1
노트북에 분산환경을 위한 가상머신 구축하기 #2
노트북에 분산환경을 위한 가상머신 구축하기 #3

들어가기

더 이상 CPU의 Hz(클럭)를 올려 컴퓨터의 성능을 높이기엔 한계란 말을 들은 적이 있다. 그래서 코어의 개수를 늘려 병렬/병행처리로 컴퓨팅 파워를 높이고 있단다. 더 나아가 분산환경으로 엄청나게 큰 데이터를 저장, 처리하고 있는 시대에 우리는 살고 있다.

자~ 그렇다면 분산환경을 구축해 놓고 뭐든 해 봐야 하겠는데~ PC를 여러 대 사기엔 돈이 좀 아깝다.(사실 돈이 없다. -_-) 그래서 든 생각이 "VirtualBox 같은 가상화 도구를 이용하여 한 PC에 가상머신을 여러 개 띄우면 되지 않을까?"하는 것이다. 생각을 했으면 실천을 해야지. 이 글은 내가 분산환경을 위한 가상머신을 구축한 과정을 정리한 것이다.

준비사항

아무 목적없이 그냥 가상머신을 여러 개 만드는 건 별 의미가 없어 보인다. 해서 난 Hadoop의 HDFS와 MapReduce를 실행하기 위한 Cluster 설치를 목적으로 했다. 이를 위하여 필요한 것들을 정리해 보면,

1. 가상머신을 설치할 호스트 PC
2. 가상화 도구 VirtualBox
3. 가상머신에 설치할 OS 이미지

등을 준비해야 한다.

1. 가상머신을 설치할 호스트 PC

한 가상머신 당 20~30GB 정도의 하드 디스크와 512MB정도의 메모리를 할당하고 3개의 가상머신을 구축할 생각이다. 대충 산술적으로 계산해 보면 90(=30 x 3)GB 이상의 하드 디스크, 메모리는 1.5GB 이상, CPU 코어는 3개 이상 되어야 한다. 호스트 OS를 Windows로 사용하고 있다면 호스트 PC는 최소 다음 정도의 사양은 되야 할 것 같다.

구분 사양
하드 디스크 200GB
메모리 4GB
CPU 4 코어

노트북 포함해서 요즘 나오는 왠만한 PC는 4코어 이상이다. 하드 디스크도 200GB는 충분히 만족시키니까 문제가 되지 않는다. 메모리가 조금 더 많으면 좋겠지만 4GB로 버텨보자. (사실, 내 구닥다리 노트북 사양이다.)

2. 가상화 도구 VirtualBox

과거랑 다르게(?) 요즘 Open Source Software(일명 OSS)는 상용 제품에 필적할 만한 품질을 가지고 있다. VirtualBox는 가상화를 위한 OSS 도구로, VMWare 등 상용툴과 비교했을 때 기능적으로나 편리성 측면에서 뒤지지 않는다. 돈이 없어 PC도 여러 대 살 수 없는 상황인데 무료인 VirtualBox를 받아 설치하자.

VirtualBox 홈페이지에 가서 자신에 맞는 버전을 받아 설치하면 된다.

3. 가상머신 용 OS 이미지

내 목적은 Hadoop Cluster를 구성하는 것이다. Hadoop 홈페이지에 가보면 Hadoop Cluster는 Windows 환경에서 구축할 수 없다고 나와있다. 그렇다면 우리가 필요한 OS는 Windows가 아니라 Linux이다. 난 Linux 중에서 CentOS를 이용하였다.

CentOS 홈페이지에 등록되어 있는 Mirror 사이트에서 OS 이미지를 받을 수 있다. 마음에 드는 사이트에서 받으면 되는데 난 내 마음에 드는 http://ftp.daum.net/centos/에서 받았다. 버전은 현재 최신 버전인 CentOS 6.3에 내 PC에 맞는 x86_64 형태의 DVD 버전을 받아 사용하였다.

가상머신 만들기

VirtualBox를 이용하여 가상머신을 만들자.

새로운 가상머신

VirtualBox를 처음 실행하면 다음과 같은 썰렁한 화면이 나타난다. 이 화면이 이제 가상머신들로 채워질 것이다. 가상머신을 만들기 위하여 "새로 만들기" 버튼을 클릭하자.

"새로 만들기" 버튼을 누르면 다음과 같이 새로 만들 가상머신의 이름 및 종류를 입력하는 화면이 나타난다. 난 가상머신을 3개 만들고 각각 alpha, beta, gamma로 명명하기로 마음 먹었기에 화면과 같이 입력하였다. 종류와 버전도 내가 설치할 가상머신에 맞게 지정하고 "다음" 버튼을 누르자.

다음 단계는 가상머신에서 사용할 메모리 양을 지정하는 화면이다. 호스트 PC의 메모리 상태에 따라 지정해야 한다. 무턱대로 너무 많이 지정하면 제대로 안 돈다. 512MB 정도 지정해도 CentOS을 설치하는데 지장없지만 나중에 좀 귀찮아진다. 메모리를 너무 적게 잡으면 CentOS 설치하는 화면이 구닥다리 Dos에서 사용하던 텍스트 기반의 설치화면이 나타난다. 화면만 그런거면 참고 넘어가겠는데 CentOS 인스톨러가 사양이 딸린다고 판단, 필요한 도구 중 설치하지 않는 것들이 있다. 나중에 다시 내리면 되니까 일단 1024MB로 지정하자.

"다음" 버튼을 누르면 하드 디스크를 생성하는 과정이 나타난다. "지금 가상 하드 드라이브 만들기"를 선택하고 "만들기" 버튼을 누르자.

가상머신 용 하드 디스크 만들기 첫 과정은 다음 그림과 같은 하드 디스크 이미지 종류를 선택하는 것이다. VirtualBox에서 가상머신을 만들고 있으니 VDI를 선택하자.

"다음" 버튼을 누르면 하드 디스크 생성방식을 정하는 화면이 나타난다. "고정크기"를 선택하고 다음으로 넘어가자. 처음 만들 때 시간이 좀 걸리더라도 쓸 때 빠른게 더 낫다.

하드 디스크 만들기 마지막 단계로 이미지 파일 이름과 크기를 지정하는 화면이다. 이름과 크기를 입력하고 "만들기" 버튼을 누르자.

믿기 힘든 프로그레스 바를 가진 만드는 화면이 다음과 같이 나타난다. (사실 정확한 프로그레스 바를 구현하는 건 상당히 힘들다.) 만들 하드 디스크 크기, 호스트 PC 사양에 따라 다르겠지만 "고정크기"로 지정한 경우 좀 오래 걸린다. 커피 한잔 하면서 기다리자.

디스크 만드는 과정이 완료되면 전원 꺼진 가상머신을 볼 수 있다.

이제 할 일은 만든 가상머신의 "설정"을 조금 손 보고 OS를 설치하는 것이다.

가상머신 설정

새로 만든 가상머신을 선택하고 툴바에 있는 "설정" 버튼을 누르면 다름과 같은 설정화면이 나타난다.

여러 가지 설정할 항목이 있지만 네트워크 부분만 조금 손 보면 된다. 네트워크 탭을 누르면 다음과 같은 화면이 나타난다.

브리지 어댑터

"다음에 연결됨"이라고 되어 있는 부분에서 사용할 네트워크 종류를 선택한다. 선택할 수 있는 옵션으로 NAT, 브리지 어댑터, 호스트 전용 어댑터 등 몇 가지가 있는데 "브리지 어댑터"를 사용할 수 있으면 이런 저런 신경 안쓰고 네트워크 설정을 끝낼 수 있다.

그런데 "브리지 어댑터"는 문제가 있다. 공유기를 통하여 별 제약없이 구축된 내부 네크워크 환경이라면 별 문제 없지만 인증 등 제약사항이 있는 네트워크 환경이라면 인터넷에 접속할 수 없다(인증을 받아야 한다). 그리고 IP주소가 새로 할당되기 때문에 이에 대한 압박이 들어 올 수도 있고, DHCP를 이용해야 한다면 IP주소가 바뀔 수도 있기 때문에 클러스터 내 노드의 IP주소를 지정할 때 문제가 될 수도 있다. 이런 문제들이 없거나 해결할 수 있다면 "브리지 어댑터"를 이용하자.

NAT (Network Address Translation)

그렇지 않다면 가상머신의 네트워크 어댑터를 “NAT”로 설정하자. 왜 NAT라고 했는 지는 잘 모르겠지만 VirtualBox의 기본 네트워킹이며, 호스트 PC와 같은 접속환경을 갖는다. (호스트 PC가 외부접속이 잘 되면 가상머신도 잘 된다는 뜻임.) 그런데 이 것도 문제가 좀 있다.

NAT은 가상머신에서 외부 네트워크를 사용하기 위한 가장 간단한 방법이다. VirtualBox의 기본 네트워킹 모드이므로 별도의 설정없이 바로 사용할 수 있다.
NAT로 설정된 가상머신은 Router를 통하여 인터넷에 연결된 실제 컴퓨터와 같이 동작하며 여기 Router는 VirtualBox의 네트워크 엔진이다. VirtualBox에서 이 Router는 호스트와 가상머신 사이에 위치하고 있으며, 이렇게 분리됨으로써 가상머신은 서로 통신할 수 없게 되어 보안성을 강화하고 있다.
NAT 모드의 다른 사설 네트워크와 마찬가지로 가상머신이 외부에 드러나지 않으므로 외부 네트워크에서 접속할 수가 없다. 하지만 포트 포워딩 기능을 이용하여 외부에서 접속할 수 있도록 설정할 수 있다.
가상머신에서 보내진 네트워크 프레임(데이터)은 VirtualBox NAT 엔진에 전달되고 VirtualBox NAT 엔진은 이 중 TCP/IP 데이터만 추출하여 호스트 OS의 네트워크를 이용하여 목적지에 재전송한다. 이 때 IP주소는 호스트에 할당된 것을 그대로 이용한다. VirtualBox는 보내진 데이터에 대한 응답을 대기(listen)하고 있다가 응답이 오면 VirtualBox의 사설 네트워크 상에 있는 해당 가상머신에 repacking하여 재전송한다.
가상머신은 네트워크 주소와 설정들을 VirtualBox에서 제공하는 DHCP 서버로부터 받는다. 가상머신에 할당된 IP주소는 호스트와는 완전히 다른 것으로 IP주소로 가상머신에 직접 접속할 수 없다. 가상머신의 첫 번째 네트워크 카드는 10.0.2.0으로 할당되고 두 번째 네트워크 카드는 10.0.3.0과 같이 할당된다. (참고: 10.0.XX.XX는 라우터에서 사용하는 IP주소라네요.)

위 글상자는 VirtualBox의 NAT 관련 도움말 일부를 옮긴 것이다. 강조한 부분들을 보자. 외부에서 접속할 수 없단다. ssh나 텔넷으로 외부에서 접속해서 사용하고 싶은데 이게 안된다니... 그나마 이건 포트 포워딩으로 가능하다니 다행인데 호스트 PC 상에 있는 가상머신끼리 토킹할 수 없단다. 이거 어떻게 해야 할 지 좀 난감하다. 나중에 생각하고 일단 NAT로 설정하자.

글이 생각보다 길어지네... 1부 끝.

저작자: Yes, 상업적 이용: No, 컨텐츠 변경: No

댓글 없음:

댓글 쓰기