Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Rancher

Rancher는 컨테이너를 배포하고 관리하기 위한 오픈 소스 소프트웨어다. 특히 컨테이너의 생명주기를 관리하는 기능이 있어서 이녀석을 사용해 보기로 했다.

환경 구성

 Rancher

3개의 노드를 준비했다. 두 개 노드에는 Rancher Agent가 설치되고, 한 노드에는 Rancher Server가 설치된다.
  • Rancher Agent : Rancher Server의 명령을 받아서, 컨테이너를 실행하고 관리 & 모니터링 하는 일을 한다.
  • Rancher Server : 모든 Rancher Agent를 관리하며, 이들에 컨테이너 실행 및 관리 명령을 내린다. 또한 컨테이너 관리를 위한 웹 UI를 제공한다.
  • 운영체제 : Ubuntu Server 14.04
  • VirtualBox
모든 Node에 docker를 설치했다. 설치는 Get Docker for Ubuntu 문서를 참고했다. (2017년 5월)현재 Docker 버전은 17.03.1-ce다.

Rancher Server 설치

Node-03에 Rancher 서버를 설치했다.
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server
설치 후 8080포트로 접근해보자. 아래와 같은 관리 페이지를 볼 수 있다.

다양한 기능들은 나중에 천천히 확인하고 Node-01과 Node-02에 Rancher Agent를 설치하자.

Rancher Agent 설치

Rancher Server Web에서 INFRASTRUCTURE 메뉴를 선택하고 Add Host를 클릭한다.

그러면 Rancher Agent를 위한 스크립트가 만들어지는데(빨간 박스 부분), 이걸 Node-01, Node-02에서 실행하면 된다. 모두 실행하면, 아래와 같이 등록된 노드들과 노드에서 실행 중인 컨테이너들이 보일 것이다.

Rancher agent를 설치하면, healthcheck, network-services, ipsec 등 컨테이너를 관리하기 위한 몇개 유틸리티 컨테이너들이 실행되는 걸 확인 할 수 있을 것이다.

컨테이너 실행

이제 관리자는 컨테이너 이미지를 만들어서 Rancher Server에 등록하고 실행하면 된다. CATALOG메뉴에 가면, 현재 실행 할 수 있는 카탈로그(일종의 SaaS라고 보면 되겠다.)를 확인 할 수 있다. Rancher Server 설치 즉시 사용 할 수 있는 다양한 카탈로그들이 보일 것이다.

카탈로그 목록에 보면 wordpress가 있는데, 이녀석을 설치해보자. wordpress를 선택한다음 세부 설정을 보면, docker-compose.ymlrancher-compose.yml을 볼 수 있다. 카탈로그는 이 두개의 파일을 이용해서 컨테이너를 실행한다. wordpress의 compose 파일을 보면 wordpress 이미지와 mariadb 이미지를 이용하는 걸 확인 할 수 있다.

docker-compose.yml 파일과 rancher-compose.yml 파일을 분석해 보자.
# cat docker-compose.yml
wordpress:
  image: wordpress
  links:
    - db:mysql
  ports:
    - ${public_port}:80

db:
  image: mariadb
  environment:
    MYSQL_ROOT_PASSWORD: example
  • worldpress 이미지를 이용한다.
  • mysql db를 링크한다.
  • 호스트의 80번 포트를, 컨테이너의 80번 포트로 포워딩한다
  • db는 mariadb를 전개한다.
  • db에 접근하기 위한 기본 패스워드를 설정했다.
아래는 rancher-compose.yml이다.
.catalog:
  name: "Wordpress"
  version: "v0.1-educaas1"
  description: "Blog tool, publishing platform and CMS"
  uuid: Wordpress-0
  minimum_rancher_version: v0.51.0
  questions:    
    - variable: public_port
      description: "public port to access the wordpress site"
      label: "Public Port"
      required: true
      default: "80"
      type: "int"
wordpress:
  • .catalog는 애플리케이션의 메타 정보가 들어간다. 애플리케이션의 설명이라고 보면 되겠다.
  • wordpress: 실행할 애플리케이션이 wordpress 라는 걸 알려준다.
rancher는 rancher-compose.yml을 읽어서 wordpress 애플리케이션을 실행한다. 그러면 docker-compose.yml을 읽어서 데이터베이스를 실행하고, 워드 프레스를 실행한다.

Launcher를 클릭하면 compose 설정내용에 따라서 컨테이너가 실행된다. INFRASTRUCTURE를 보면, wordpress와 mariadb 컨테이너가 등록된 Node들에 분산 설치된 모습을 볼 수 있다.