Windows7 가 설치된 개인 PC 에 CoreOS 와 Docker 를 설치하여, 가상으로 cluster 환경을 구축하는 방법입니다. 여기서는 virtual box 에 CoreOS 운영체제를 설치한 host machine 3 대를 구축하는 방법을 포스팅 하였습니다. 다음 페이지에서는 Docker 컨테이너에 Web server 기능을 하는 간단한 Python 스크립트를 실행하는 방법을 다룹니다.


Virtual box 를 설치합니다.

다운로드 : https://www.virtualbox.org/wiki/Downloads


Virtual box 는 가상머신을 구동할 수 있게 하는 소프트웨어입니다. 이 Virtual box 에 3대의 host machine 을 구축할 것입니다. 각 machine 에는 CoreOS 운영체제가 설치됩니다.

Vagrant 를 설치합니다.

다운로드 : https://www.vagrantup.com/downloads.html


3대의 가상머신을 손쉽게 관리하기 위하여, Vagrant 를 설치합니다.

git bash 를 설치합니다.

다운로드 : http://git-scm.com/downloads


앞으로의 작업은 git bash 상에서 진행됩니다.

Virtual Box 에 3대의 가상머신을 구동합니다.

참고자료 :

Running CoreOS on Vagrant

Clustering CoreOS with Vagrant


Git bash 를 열면 윈도우즈 상에서 리눅스 명령어를 사용할 수 있는 콘솔이 열립니다.콘솔에 아래 내용을 입력합니다. 참고로, git bash 상에서 붙여넣기 단축키는 ctrl+V 가 아닌 insert 버튼을 이용합니다.

git clone https://github.com/coreos/coreos-vagrant.git

방금 생성한 coreos-vagrant.git 폴더로 이동합니다.

cd coreos-vagrant

config.rb.sample 파일과 user-data.sample 의 이름을 각각 config.rb, user-data 로 수정합니다. 이 파일들에는 구축할 cluster 의 설정 정보가 담기게 됩니다.

mv config.rb.sample config.rb
mv user-data.sample user-data

이제 config.rb 를 수정하겠습니다. 현재 $num_instances, $update_channel 는 #으로 주석 처리 되어 있습니다. #를 지워 주석처리를 취소하고, 각각을 아래와 같이 수정합니다.

$num_instances=3
$update_channel='alpha'

현재 각 가상머신의 메모리는 1024 MB 로 설정되어 있습니다. 만약 PC 의 메모리가 부족할 것 같다면 $vb_memory 값을 512로 낮추는 것도 가능합니다.

$vb_memory = 512


이제, alpha 업데이트 채널을 갖고 메모리가 512MB 인 가상머신 3대를 생성하도록 설정되었습니다.


다음은 user-data 파일을 수정할 차례입니다. 이 상태로 가상머신을 구동하게 되면 3대의 가상머신은 서로 연관 없이 구동됩니다. 3대의 가상머신을 하나의 cluster 로 연결하기 위해, 각 머신이 동일한 token 을 갖도록 합니다. 각 머신은 자신과 동일한 token 을 가진 다른 머신을 peer 로 인식하여 같은 cluster 를 형성하게 됩니다. 이 token 은 아래 명령어로 얻을 수 있습니다.

curl https://discovery.etcd.io/new

생성된 token 을 user-data 파일에 있는 <token> 자리에 입력하고, discovery 의 주석 체크를 해제합니다.

discovery: https://discovery.etcd.io/

설정이 완료되었습니다. Vagrant 가 3대의 가상머신을 Virtual Box 에 올리도록 명령합니다.

vagrant up


아래는 3대의 가상머신이 성공적으로 부팅된 화면입니다.


3대의 가상머신이 서로를 인식하여 하나의 cluster 를 구축하고 있는지 체크해 봅시다.

vagrant ssh 명령어를 통해 cluster 에 접속합니다.

vagrant ssh core-01 -- -A

시스템 내의 머신 목록을 확인해 봅시다.

fleetctl list-machines



3대의 가상머신이 성공적으로 하나의 cluster 를 구성하고 있는 것을 확인할 수 있습니다.

5. 명령어 사용

이제 cluster 상에서 fleet, etcd, docker 관련 명령어를 사용할 수 있습니다.


etcdctl

etcd 관련 명령어를 보여 줍니다.

etcd 는 각 머신을 연결해 주는 통로 역할을 합니다.

참고 : Getting Started with etcd


fleetctl

fleet 관련 명령어를 보여 줍니다.

fleet 은 cluster 내의 머신들을 묶어, 단일 시스템을 구성하도록 합니다.

참고 : Cluster Management

Launching Containers with fleet


docker

docker 관련 명령어를 보여 줍니다.

이어서 다음 페이지에서는 docker 를 이용하여 간단한 Web server 를 구축하는 방법을 다룹니다.


저는 vagrant up 명령이 정상적으로 수행되지 않고, Booting VM... 상태에서 멈추는 경우가 자주 발생하였습니다.



작업관리자에서 VBoxHeadless, VBoxManage, VBoxSVC 프로세스를 강제종료 하고 나서 다시 vagrant up 을 실행하면 같은 조건인데도 제대로 되곤 하더군요. Virtual box 오류인 듯 합니다. 이전 버전에서는 "Waiting for machin to boot" 상태에서 멈추는 경우도 있었다고 하네요. 원인은 찾지 못했습니다. 같은 현상이 반복될 경우 VirtualBox 와 vagrant 를 재설치하고 관련 파일을 모두 삭제하면 해결됩니다.