[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
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 형 아키텍처로 감시 매트릭스를 수집한다.
'프로그래밍 놀이터 > Settings' 카테고리의 다른 글
[Docker] 클라우드를 사용한 Docker 실행 환경의 운용 관리 (0) | 2020.03.29 |
---|---|
[Docker] 클라우드를 사용한 Docker 실행 환경 구축 (0) | 2020.03.28 |
[Docker] 여러 컨테이너의 운용 관리 (0) | 2020.03.26 |
[Docker] Docker 이미지 공개 (0) | 2020.03.25 |
[Docker] Dockerfile 을 사용한 코드에 의한 서버 구축 (0) | 2020.03.24 |
댓글