본문 바로가기
프로그래밍 놀이터/Settings

[Docker] 멀티호스트 환경에서 Docker 실행 환경 구축

by 돼지왕왕돼지 2020. 3. 27.

[Docker] 멀티호스트 환경에서 Docker 실행 환경 구축



-

Docker 에서 작동하는 웹 앱을 제품 환경에서 운용할 때는 앱이 사양대로 올바르게 작동할 뿐만 아니라 서비스 이용자가 항상 이용할 수 있도록 운용 관리를 해야 한다.

이러한 컨테이너 기반은 보통 멀티호스트 환경으로 구축한다.





8.1. 멀티호스트 환경에서 컨테이너 관리의 개요


-

웹 시스템의 실행 환경은 웹 서버, 프록시 서버, 데이터 스토어 등 역할이 다른 여러 개의 서버 기능이 연계되어 작동한다.




* 멀티호스트 환경과 클러스터링


-

시스템의 일부에서 장애가 발생해도 서비스가 정지되지 않도록 만드는 장치가 필요하다.

이를 구현하는 기술 중 하나로 클러스터링이 있다.

클러스터링은 여러 대의 서버나 하드웨어를 모아서 한 대처럼 보이게 하는 기술이다.

일반적으로 클러스터링을 하면 가용성(Availability)과 확장성(Scalability)이 좋아진다.



-

Docker 를 사용하면 단일 호스트 머신에서뿐만 아니라 여러 대의 호스트 머신 상에서 Docker 를 작동시켜서 높은 가용성과 확장성을 가진 앱 실행 환경을 구축할 수 있다.

이와 같이 멀티호스트 환경에서 컨테이너들의 클러스터링을 수행하기 위한 툴을 컨테이너 오케스트레이션 툴이라고 한다.


또한 멀티호스트 환경에서 컨테이너를 작동시키는 경우는 컨테이너의 장애나 호스트 머신의 가동 상황을 감시하는 장치를 생각해 둘 필요가 있다.

컨테이너 실행 환경을 지원하는 통합 감시 툴이나 클라우드에 의한 감시 서비스 등이 Docker 에서 지원하고 있으므로 이것을 이용하는 것이 좋다.




* Docker Machine 이란?


-

호스트 머신/클라우드/가상 환경 등에 Docker 의 실행 환경을 만들 수 있는 커맨드라인 툴이다.

지원하고 있는 주요 환경은 아래와 같다.


Amazon Web Services

MS Azure

Digital Ocean

Exoscale

Google Compute Engine

MS Hyper-V

OpenStack

Rackspace

IBM SoftLayer

Oracle CIrtualBox

VMWare





8.2. 웹 앱을 서비스 공개해 보자


* Docker 실행 환경 작성


-

GCE 에서 실행 환경을 작성하자면....

ex)

$ docker-machine create --driver google \

    --google-project $PROJECT_ID `

    --google-zone asia-northeast1-a `

    --google-machine-type f1-micro `

    --google-tags 'http-server' `

    --google-machine-image https://www.googleapis.com/compute/v1/projects/ubuntu-os-coud/global/images/family/ubuntu-1604-lts `

    gcp-host



-

Docker 실행 환경 확인을 위해서 아래 명령을 수행

syntax)

$ docker-machine ls




* 웹 앱 전개


-

syntax)

$ docker-machine ssh <name>

이 곳에서 docker 명령들을 수행하면 된다.




* Docker 실행 환경 삭제


-

syntax)

$ docker-machine rm <name>








* 8.3. Docker Machine 을 사용할 실행 환경 구축


* Docker Machine 의 기본 명령


-

Docker Machine 은 Docker for Mac / Windows 에는 미리 설치되어 있다.


주요 명령은...

create : 실행 환경 작성

ls : 실행 환경 목록 표시

status : 실행 환경 상태 표시

url : 실행 환경 url 표시

ssh : 실행 환경에 대한 SSH 연결

start : 실행 환경 시작

stop : 실행 환경 정지

restart : 실행 환경 재시작

scp : 실행 환경에서 파일 다운로드

rm : 실행 환경 삭제

kill : 실행 환경 강제 정지

ip : 실행 환경 ip 주소 확인

inspect : 실행 환경 정보 확인




* 실행 환경 작성(create)


-

syntax)

$ docker-machine create --driver <드라이버명> <작성할 Docker 머신명>


--driver 에서 지정할 수 있는 드라이버는...

amazonec2

azure

digitalocean

exoscale

generic

google

hyper-v

openstack

rackspace

softlayer

virtualbox

vmwarevcloudair

vmwarevsphere


각 driver 에서 이용할 수 있는 추가 옵션들이 있다.

ex)

$ docker-machine create --driver azure --help




* 실행 환경 목록 표시 (ls/status/url)


-

syntax)

$ docker-machine ls [옵션]


주요 옵션은..

--quite, -q : 머신명만 표시

--filter : 표시할 머신 필터



-

syntax)

$ docker-machine status <머신 이름>



-

syntax)

$ docker-machine url <머신 이름>




* 실행 환경에 대한 SSH 연결 (ssh)


-

syntax)

$ docker-machine ssh <머신명>




* 실행 환경 시작/정지/재시작(start/stop/restart)

syntax)

$ docker-machine start <머신명>

$ docker-machine stop <머신명>

$ docker-machine restart <머신명>




* 실행 환경으로부터 파일 다운로드(scp)


-

syntax)

$ docker-machine scp <머신명>:<path> <실행환경 path>


scp 는 ssh 의 기능을 사용하여 파일을 전송하는 명령이다.




* 실행 환경 삭제(rm/kill)

syntax)

$ docker-machine rm -f <머신명> # -f 는 강제삭제

$ docker-machine kill <머신명>




* 실행 환경 정보 확인(ip/inspect)


-

$ docker-machine ip <머신명>

$ docker-machine inspect [옵션] <머신명>



-

Mackerel 은 서버를 감시하기 위한 일본산 SaaS 이다.

클라우드상의 서버 감시와 친화성이 높고, 감시 대상에 에이전트를 설치하기만 하면 손쉽게 감시할 수 있다.

Push 형 아키텍처로 감시 매트릭스를 수집한다.




댓글0