실무로 배우는 빅데이터 기술이라는 책을 따라 환경 구성을 하다가, 네트워크 부분이 책에 나온 내용대로 하면 인터넷 연결이 안 되는 등 문제가 발생해서 불필요한 설정은 제외하고 필요한 내용만 정리해본다.
버전은 다음과 같다.
- Mac OS X El Capitan 10.11.6
- VirtualBox 5.1.14 r11294
- CentOS 7.3.1611 (LiveGNome.iso)
참고로 Mac + VirtualBox + CentOS의 조합은 윈도우 + VMware + Linux의 조합에 비해 뭔가 느리고, 또 아무런 안내 사항이 없는 블랙스크린이 수 분 동안 떠 있는 경우도 많은데, 잘못된 것은 아니니 인내심을 가지고 그냥 기다리면 된다.
가상 머신 설치 시 OS를 Other Linux 64bit
로 하지 말고, Redhat 64bit
로 하면 훨씬 나아짐.
책에는 Other Linux 64bit
를 선택하라고 나오는데, CentOS는 Redhat 64bit
를 선택하면 된다.
실제로 Redhat 64bit
를 선택하고 설치하면 마우스 이동, 키보드 입력 등의 밀림 현상이 더 적다.
한국어
로 표시된 것을 선택하면 Shift+Space
로 한/영 전환이 된다. 즉, 한국어(101/104키보드 호환)
으로 선택하지 말 것.
최초 부팅 후에 환영합니다
화면에서 한국어를 선택하고, 그 다음 키보드 배치 선택 화면에서 한국어(Hangul)
선택
화면 상단에 ko
로 표시된 입력기를 클릭해서 한국어(Hangul)
를 선택하면, Shift+Space
로 한영 전환 가능
네트워크 설정은 먼저 VirtualBox에서 가상 네트워크 A를 생성하고, CentOS 가상 머신에서 A를 이용해서 가상 머신의 로컬 네트워크 B를 설정한다.
그리고 마지막으로 호스트 OS의 hosts 파일에 게스트 OS의 IP와 호스트 이름을 설정해주면 된다.
http://solatech.tistory.com/277 여기에 링크되어 있는 pdf에 VirtualBox의 네트워크 설정에 대한 내용이 잘 정리되어 있다.
그 중 VirtualBox + CentOS에 사용되는 네트워크는 아래의 2가지이며, 여러 개의 가상 머신을 만들더라도 한 번씩만 생성해주면 된다.
게스트 OS 내부에서 홀로 외부의 인터넷을 사용할 수 있게 해주는 일반 NAT와 다르게, 다수의 VM에서 하나의 게이트웨이를 통해 외부 인터넷을 사용할 수 있게 해준다.
일단 책을 위한 환경 설정에서는 NAT network가 아니라 NAT로만 해도 된다.
이 부분은 책과 동일하게 설정하면 된다.
- 설정 위치: VirtualBox > 파일 > 환경 설정 > 네트워크 > NAT 네트워크 > 추가
- 설정 값
- 네트워크 이름: NatNetwork
- 네트워크 CIDR: 10.0.2.0/24
- 네트워크 옵션: DHCP 지원 체크
게스트 OS와 호스트 OS가 통신할 수 있는 폐쇄망으로, 설정을 마치면 호스트 OS에 vboxnet0라는 가상 NIC가 하나 생성되며, 이를 통해 게스트 OS와 호스트 OS가 ssh 등의 통신을 할 수 있다.
이 부분은 책과 동일하게 설정하면 된다.
- 설정 위치: VirtualBox > 파일 > 환경 설정 > 네트워크 > 호스트 전용 네트워크 > 추가
- 설정 값
- 어댑터 탭
- IPv4 주소: 192.168.56.1
- IPv4 서브넷 마스크: 255.255.255.0
- DHCP 서버 탭
- 서버 주소: 192.168.56.100
- 서버 마스크: 255.255.255.0
- 최저 주소 한계: 192.168.56.101
- 최고 주소 한계: 192.168.56.254
- 어댑터 탭
가상 머신 생성 후 가상 머신을 실행하기 전에 네트워크 설정을 구성해준다. 아래 내용은 가상 머신을 생성할 때마다 반복적으로 지정해줘야 한다. 가상 머신을 복제할 때는 네트워크 카드 모두 초기화
에 체크하면 다시 지정해주지 않아도 된다.
- 설정 위치: VirtualBox > 가상 머신 선택 > 설정 > 네트워크
- 설정 값
- 어댑터1 탭
- 네트워크 어댑터 사용하기 체크
- 다음에 연결됨: NAT
- 이름: NatNetwork
- 고급 클릭
- 어댑터 종류: Intel PRO/1000 MT Desktop (82540EM)
- MAC 주소: 자동 생성되어 있음
- 케이블 연결됨 체크
- 어댑터2 탭
- 네트워크 어댑터 사용하기 체크
- 다음에 연결됨: 호스트 전용 어댑터
- 이름: vboxnet0
- 고급 클릭
- 어댑터 종류: Intel PRO/1000 MT Desktop (82540EM)
- 무작위 모드: 모두 허용
- MAC 주소: 자동 생성되어 있음
- 케이블 연결됨 체크
- 어댑터1 탭
가상 머신 부팅 후에는 결론적으로 호스트 이름과 /etc/hosts 파일만 설정하면 된다.
나머지는 설정해 줄 필요 없다.
아래의 명령으로 지정한다.
sudo hostnamectl set-hostname <new hostname>
가상 머신끼리 호스트 이름으로 통신할 수 있도록 아래의 내용만 추가해준다.
192.168.56.101 server01.hadoop.com
192.168.56.102 server02.hadoop.com
192.168.56.103 server03.hadoop.com
참고로 호스트-온리 네트워크 설정에서 DHCP는 그대로 두는게 좋다. 이를 수동으로 변경하고 netmask, gateway 등을 수동으로 지정하면, 호스트-온리 네트워크가 켜진 상태에서는 인터넷 연결이 안 될 수 있다.
NAT와 Host-only 모두 활성화 시킨 상태에서 인터넷 연결, 호스트 연결이 모두 잘 되는 상태에서의 ifconfig -a
결과는 다음과 같다.
3개
route -n
의 결과는 다음과 같다.
3개
결론적으로 설정해 줄 필요 없다.
책에서는 /etc/sysconfig/network-scripts/ifcfg-eth0을 추가하고 정보를 입력하게 되어 있는데, 그 전에 ifconfig -a
를 실행해서 다음과 같이 enpOs3
과 enpOs8
에 대한 정보가 표시되면 ifcfg-eth0
를 구성해줄 필요 없이 그냥 되어있는대로 사용해도 된다.
책에 있는대로 ifcfg-eth0
를 구성하면, 어댑터2(호스트 전용 어댑터)가 활성화 된 상태에서는 인터넷 연결이 안 될 수 있다.
결론적으로 설정해 줄 필요 없다.
책에는 있지만 막상 가상 머신의 터미널에서 보면 /etc/udev/rules.d/70-persistent-net.rules
라는 파일은 존재하지 않고 대신에 주석 외에는 내용이 없는 /etc/udev/rules.d/70-persistent-ipoib.rules
라는 파일만 있다.
결론적으로 설정해 줄 필요 없다.
/etc/hosts
파일에 아래 내용만 추가해주면 된다.
192.168.56.101 server01
192.168.56.102 server02
192.168.56.103 server03
hostname
으로 호스트 이름 설정 확인- 브라우저로 인터넷 연결 확인
ssh bigdata@server01
,ssh bigdata@server02
,ssh bigdata@server03
으로 서로에게 연결 가능한지 확인
ssh bigdata@server01
,ssh bigdata@server02
,ssh bigdata@server03
으로 각 가상 머신에 연결 가능한지 확인
-
클러스터 노드인
server02
에 Cloudera Agent를 설치하는 과정에서, Cloudera Manager인server01
을host -t PTR 192.168.56.101
와 같이 찾는데,host
명령은/etc/hosts
의 내용을 바탕으로 대상 호스트를 찾는게 아니라, 네임서버의 정보를 바탕으로 대상 호스트를 찾으므로, 별도의 네임서버를 BIND로 설정하지 않으면server01.hadoop.com
을 찾지 못함 -
server01
에 BIND로 네임서버, zone 등을 구성해도 찾지 못함 ㅠㅜ