SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Container 가상화를 이용한
Micro Service 설치 및 운영 자동화
(Ansible + Rancher + Docker )
2017.06
freepsw
드디어 서비스 개발이 끝났다!
그럼 이제부터는?
우리가 배포할 서비스는?
다양한 Hadoop Eco와 연동하는 확장 가능한 Micro Service API
• 서비스 장애 복구 자동화
• 서비스 로드밸런싱 제공
• 서비스 확장성(Scale up / down) 제공
• 모듈별 독립적인 배포 (Web + DB)
• 서버(host)의 변경에 따른 영향도 최소화
Micro
Service
Hadoop
Eco
• 대용량 Computing을 위한 용도
• 필요시 MR or Spark job을 실행후 종료
(EMR like)
• 동적인 배포 및 종료기능 제공
• 데이터 보관용이 아님
솔루션 개발 완료 후… 해야할 일들
단계별로 서비스 배포 및 운영에 필요한 작업들이 존재함
운영환경 설정 서비스 모듈 배포 서비스 확장
서비스 업데이트
서버 증설
OS별 library 및 util 설치
- java, python 등
서비스 로드 밸런싱
서비스 자동 복구
서비스 configuration 설정
서비스 재 배포
서비스 설정 변경
처음 배포할 서버가 할당 되면?
모든 서버에 서비스 설치에 필요한 환경 구성 (java, python …)
운영환경
설정
서비스 모듈
배포
서비스 확장
/ 업데이트
SDK 버전 및 경로
“
예상되는
상황들…
“
Human Error 발생
• Java version 별도 관리
• Java home 별도 관리
• Python & ruby도 동일
• 설정파일 copy & paste 오류
• 일부 작업 누락 등
• 에러가 발생하기 전 까지 인지
하지 못함!
서버 대수만큼 작업시간 증가
• Yum을 통한 sw 설치
• USER 생성
• SSH connection 설정
• Bash_profile 변경
서비스를 안정적으로 배포 & 운영 하려면?
독립적인 운영환경을 제공하고, 부하분산 및 자동 Fail over 등이 필요
운영환경
설정
서비스 모듈
배포 및 실행
서비스 확장
/ 업데이트
서버별 상이한 환경
“
예상되는
상황들…
“
부하분산을 위한 설정 필요
• SDK_HOME PATH
• 디렉토리 구조
• 가용 Memory 및 CPU Core
• HAProxy를 이용한 분산
• L4 Switch 등을 이용한 부하분
산 (Infra팀과 사전 협의 필요)
• 부하분산을 위한 정책 필요
서버 대수만큼 작업시간 증가
• 서비스 설치파일 복사
• 압축해제 및 경로 지정
• 설정파일(config) 변경
• 서비스 실행 (의존성에 따라
순차 실행)
Auto Fail-over 방안 필요
• Crontab + shell을 이용하여
process를 모니터링하고,
• 장애시 재시작하는 스크립트
작성 등의 운영관리 정책 필요
서비스 설치 이후에는?
솔루션 업데이트, 서버변경/확장에 따른 배포관리
운영환경
설정
서비스 모듈
배포 및 실행
서비스 확장
/ 업데이트
서비스 업데이트
“
예상되는
상황들…
“
서버 변경/확장
• 기능 추가 및 버그 패치
• 배포된 서버환경에 따라 업데
이트 진행
• 파일 업데이트 > 환경 설정 >
기존 서비스 중지 > 신규서비
스 재시작
• Human Error 가능성 높고,
• 서버 대수에 따라 작업시간 증
가
• 초기 운영환경 설정에 필요한
작업을 반복
앞으로 이런일이 생기지 않을까?
사이트가 증가하고,
서비스 버전이 업데이트되고…
사이트별로 설치/응대 할 담당자가 할당되고…
그런데 우리는 전담 운영조직이 없다.
서비스를 효율적으로
배포하고,
안정적으로 운영할 방법이 필요하다.
그래서, 이런 오픈소스를 활용했다.
최대한 자동화하고
최소의 노력으로 배포/운영할 수 있도록 하자
Ansible은 무엇을 도와주나?
• 서버별로 반복되는 작업을 실수없이 실행
• 서버 대수와 상관없이 한번의 클릭으로 설치하
여 생산성 향상
• 사이트별로 다른 환경설정 관리를 통해 작업자
의 시행착오 최소화
Docker는 무엇을 도와주나?
• 사업별 서버환경과 서비스 배포환경을 분리하
여 단일화된 배포관리로 생산성 향상
• 도커 이미지를 이용하여 서비스 업데이트 절차
단순화 (기존 : 파일복사 à 수정 à 실행)
• 서비스 장애 발생시 문제해결을 위한 접근이
단순함(기존 서버환경과 분리) à 생산성 향상
Rancher는 무엇을 도와주나?
• 서비스 운영을 위한 Load balancing, Fail
over 등을 제공하여 서비스 안정성 강화
• 운영환경 변화(서버 변경/삭제)에 따른 서비스
배포가 단순하여 작업시간 최소화
• 다양한 hadoop eco 클러스터를 클릭한번으로
설치 가능 (작업시간 최소화)
그래서 이렇게 했다.
Ansible로 서버설정을 하고, docker기반의 rancher로 서비스 운영
운영환경 설정 서비스 모듈 배포 서비스 확장
서비스 업데이트
서버 증설
무엇이 개선될까? (초기 설치 자동화)
일부 자동화된 Shell script 방식을 완전 자동화된 방식으로 변경
기존 방식
서버 환경설정
• User & 작업공간 생성
• SSH 설정
• SDK 설치
• User Env 설정
솔루션 설치
• File 복사 및 압축해제
• 솔루션 config 변경
• 솔루션 순차 실행
• 정상 동작여부 확인
서버 대수
만큼 반복
개선
작업 정의
• 서버 환경설정
• 솔루션 배포
작업 실행 (1회)
• 정의된 작업 실행 (등록된 서버 갯수만큼)
무엇이 개선될까? (서비스 안정성 보장)
서비스 부하분산, Fail over, 쉬운 upgrade를 지원해야 한다
기존 방식
Load balancing
• Haproxy 등 설치 및 설정
Fail over
• 솔루션 모니터링을 위한 별도 process 설치
• 서버 중지시 재시작
서버 변경시
설정 변경
개선
Load balancing & Fail over
• Rancher에서 container명칭으로 분산관리
• Container 중지시 자동 재시작
Upgrade
• 정의된 upgrade 작업 실행으로 rolling
upgrade 가능
Upgrade
• File 복사 및 압축해제
• 서비스 config 변경
• 서비스 순차 실행 및 정상 동작여부 확인
서버 대수
만큼 반복
그래서 실제 어떤 작업을 했는지 보자
작업 실행
작업 실행
작업서버 들작업서버 들
우리가 자동화한 작업들은… (1/2)
Ansible로 서버설정을 하고, docker기반 rancher로 서비스 운영
Rancher Server HostsUser
작업 Task.1 작업 실행
작업 실행작업 Task.2
• OS 별 User 및 ssh 설정
• Docker 설치
• 서비스 모듈 복사 및 설정
• Docker image 생성
Rancher server 실행
작업 실행
• Rancher Server 설치
• Rancher-server 와 host
간 ssh 설정
작업 Task.3
• Docker image load
• Rancher host 생성
작업 실행
작업 실행
작업 실행
SSH
SSH
SSH
작업 실행
작업 실행
작업서버 들작업서버 들
우리가 자동화한 작업들은… (2/2)
Ansible로 서버설정을 하고, docker기반 rancher로 서비스 운영
Rancher server HostsUser
서비스 배포 작업 실행
• 웹서비스 배포
• Load balancer 실행
• Mariadb 실행
• 웹서비스 실행
작업 실행
작업 실행
작업 실행
Hadoop 배포 작업 실행
• Namenode 설치
• YARN resource manger
• Job history server
• Data node 설치
작업 실행
RANCHER API
RANCHER API
Ansible을 이용한 작업들
좀 더 자세히 보면, Ansible을 이용해서…
기존 서버환경별로 작성했던 command line들을
서버 대수
만큼 반복
좀 더 자세히 보면, Ansible을 이용해서…
Role 별로 분리하여 자동화할 절차를 관리하고
[SSH 설정] [솔루션 설치파일 및 docker 배포] [Rancher 서버 구동 및 host등록]
좀 더 자세히 보면, Ansible을 이용해서…
각 role에 대한 세부 task를 정의하여 서버별 설치를 자동화 한다
⋅⋅⋅
좀 더 자세히 보면, Ansible을 이용해서…
각 role별로 구성한 ansible 자동화 스크립트 (예시)
[SSH 설정] [솔루션 설치파일 및 docker 배포] [Rancher 서버 구동 및 host등록]
좀 더 자세히 보면, Ansible을 이용해서…
각 role별로 구성한 ansible 자동화 스크립트 실행하기
Docker & Rancher를 이용한 작업들
27
Why Rancher?
https://stackshare.io/stackups/kubernetes-vs-rancher-vs-docker-swarm
28
Why Rancher?
29
Rancher 아키텍처
Rancher supplies the entire software stack needed to manage containers in production.
좀 더 자세히 보면, Rancher을 이용해서…
정의된 서비스 및 Hadoop cluster를 API로 쉽게 구성
Rancher cluster
REST API
API를 이용한 Service 생성 Script
IP
IP
Rancher 에서 service 배포
좀 더 자세히 보면, Rancher을 이용해서…
API 요청에 따라 rancher에서 Service 배포
• Data를 관리하는 MariaDB가 설치되었고, 3306 port를 외부에 오픈
• Mirco Service용으로 구성된 vert.x web service가 2개 배포되었다. (외부에 공개된 port는 없음)
• Load Balancer 서비스를 실행하여 vert.x 서비스로의 부하분산을 처리한다. (7070 port로 오픈)
좀 더 자세히 보면, Rancher을 이용해서…
배포된 서비스의 scale up & down
• “Scale”의 숫자를 수정하여 쉽게 서비스를 확장(scale up) 하거나, 축소(scale down) 가능
서비스 확장
좀 더 자세히 보면, Rancher을 이용해서…
배포된 서비스의 Log를 모니터링
• 현재 동작중인 container의 로그를 바로 확인하여, 프로세스의 상태 및 오류를 체크할 수 있음
서비스 확장
좀 더 자세히 보면, Rancher을 이용해서…
배포된 container에서 사용하는 자원 현황을 모니터링
• CPU, Memory, Network, Storage 등의 container에서 사용중인 자원 현황을 조회 가능
좀 더 자세히 보면, Rancher을 이용해서…
다양한 OSS를 ”Click”만으로 서비스로 배포 가능
좀 더 자세히 보면, Rancher을 이용해서…
Hadoop 설치
• Hadoop 설치에 필요한 기본 설정들을 사용자가 정의
• 다양한 설정을 변경하려면,
• 해당 container의 dockerfile을 확인하고,
• 외부에서 ENV로 설정할 수 있는 configuration에 값을 변경
Click
좀 더 자세히 보면, Rancher을 이용해서…
• Hadoop 설치에 필요한 기본 설정들을 사용자가 정의
• 다양한 설정을 변경하려면,
• 해당 container의 dockerfile을 확인하고,
• 외부에서 ENV로 설정할 수 있는 configuration에 값을 변경
Hadoop cluster가 구성된 결과를 Web에서 확인
• Image를 다운받는 속도를 제외하면, Hadoop cluster 배포에 약 1분 이하면 된다.!!
서비스가 배포된 아키텍처는?
Container간 연결로 외부접근을 차단하고,
필요한 서비스만 노출하여 부하를 분산하는 구조
Rancher server
사용자
Rancher HostsRancher Hosts Rancher Hosts
Web App
#1
Web App
#2
Web App
#3
MariaDB
#1
Load
balancer
Rancher Hosts Rancher Hosts
Namenode
#1
DataNode
#2
DataNode
#1
Service STACK Hadoop STACK
Ansible + Rancher + Docker
생각보다 괜찮다!
무엇이 괜찮았나?
• Ansible로 서비스 배포를 위한 사전환경을 구성하고
• Rancher API로 배포하는데 사용자 작업이 거의 없음
• Rancher의 사용자 친화적인 UI & API를 이용하여, 빠르고 안정
적으로 docker기반 서비스 운영 가능
• Rancher의 Catalog 서비스로 OSS 배포가 가능하여, 작업 생산
성 향상 (Hadoop, Spark 등)
앞으로 어떤걸 더 개선하면 좋을까?
• Jenkins와 같은 CI도구와 연동하여,
• Test를 통과한 Solution package를 rancher를 통해 업그레이드
앞으로 어떤걸 더 개선하면 좋을까?
• 운영자를 위한 web service를 구성하여,
• UI를 통하여 설치 & 배포 à 운영 생산성 향상
Web App
• Ansible 설정값을 Web UI에서 설정
• Web에서 ”Install & Deploy” 실행
• Web에서 넘겨받은 파라미터로
• 서버에 접속하여 설치 자동화
• Service 배포
실제 작업한 코드들은?
Github에 쉽게 따라할 수 있도록 설치가이드 및 코드를 정리
https://github.com/freepsw/ansible-rancher-docker-deploy
END

Contenu connexe

Plus de SANG WON PARK

Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안SANG WON PARK
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)SANG WON PARK
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리SANG WON PARK
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...SANG WON PARK
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)SANG WON PARK
 
코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)SANG WON PARK
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User GuideSANG WON PARK
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5SANG WON PARK
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNNSANG WON PARK
 
Hadoop eco story 이해
Hadoop eco story 이해Hadoop eco story 이해
Hadoop eco story 이해SANG WON PARK
 

Plus de SANG WON PARK (12)

Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
Apache kafka 모니터링을 위한 Metrics 이해 및 최적화 방안
 
boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)boosting 기법 이해 (bagging vs boosting)
boosting 기법 이해 (bagging vs boosting)
 
Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리Machine Learning Foundations (a case study approach) 강의 정리
Machine Learning Foundations (a case study approach) 강의 정리
 
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...Apache kafka performance(throughput) - without data loss and guaranteeing dat...
Apache kafka performance(throughput) - without data loss and guaranteeing dat...
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)내가 이해하는 SVM(왜, 어떻게를 중심으로)
내가 이해하는 SVM(왜, 어떻게를 중심으로)
 
코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)코드로 이해하는 Back_propagation(cs231n)
코드로 이해하는 Back_propagation(cs231n)
 
Rancher Simple User Guide
Rancher Simple User GuideRancher Simple User Guide
Rancher Simple User Guide
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Reinforcement learning v0.5
Reinforcement learning v0.5Reinforcement learning v0.5
Reinforcement learning v0.5
 
Code로 이해하는 RNN
Code로 이해하는 RNNCode로 이해하는 RNN
Code로 이해하는 RNN
 
Hadoop eco story 이해
Hadoop eco story 이해Hadoop eco story 이해
Hadoop eco story 이해
 

Container 가상화를 이용한 Micro Service 설치 및 운영 자동화 (Ansible + Rancher + Docker)

  • 1. Container 가상화를 이용한 Micro Service 설치 및 운영 자동화 (Ansible + Rancher + Docker ) 2017.06 freepsw
  • 2. 드디어 서비스 개발이 끝났다! 그럼 이제부터는?
  • 3. 우리가 배포할 서비스는? 다양한 Hadoop Eco와 연동하는 확장 가능한 Micro Service API • 서비스 장애 복구 자동화 • 서비스 로드밸런싱 제공 • 서비스 확장성(Scale up / down) 제공 • 모듈별 독립적인 배포 (Web + DB) • 서버(host)의 변경에 따른 영향도 최소화 Micro Service Hadoop Eco • 대용량 Computing을 위한 용도 • 필요시 MR or Spark job을 실행후 종료 (EMR like) • 동적인 배포 및 종료기능 제공 • 데이터 보관용이 아님
  • 4. 솔루션 개발 완료 후… 해야할 일들 단계별로 서비스 배포 및 운영에 필요한 작업들이 존재함 운영환경 설정 서비스 모듈 배포 서비스 확장 서비스 업데이트 서버 증설 OS별 library 및 util 설치 - java, python 등 서비스 로드 밸런싱 서비스 자동 복구 서비스 configuration 설정 서비스 재 배포 서비스 설정 변경
  • 5. 처음 배포할 서버가 할당 되면? 모든 서버에 서비스 설치에 필요한 환경 구성 (java, python …) 운영환경 설정 서비스 모듈 배포 서비스 확장 / 업데이트 SDK 버전 및 경로 “ 예상되는 상황들… “ Human Error 발생 • Java version 별도 관리 • Java home 별도 관리 • Python & ruby도 동일 • 설정파일 copy & paste 오류 • 일부 작업 누락 등 • 에러가 발생하기 전 까지 인지 하지 못함! 서버 대수만큼 작업시간 증가 • Yum을 통한 sw 설치 • USER 생성 • SSH connection 설정 • Bash_profile 변경
  • 6. 서비스를 안정적으로 배포 & 운영 하려면? 독립적인 운영환경을 제공하고, 부하분산 및 자동 Fail over 등이 필요 운영환경 설정 서비스 모듈 배포 및 실행 서비스 확장 / 업데이트 서버별 상이한 환경 “ 예상되는 상황들… “ 부하분산을 위한 설정 필요 • SDK_HOME PATH • 디렉토리 구조 • 가용 Memory 및 CPU Core • HAProxy를 이용한 분산 • L4 Switch 등을 이용한 부하분 산 (Infra팀과 사전 협의 필요) • 부하분산을 위한 정책 필요 서버 대수만큼 작업시간 증가 • 서비스 설치파일 복사 • 압축해제 및 경로 지정 • 설정파일(config) 변경 • 서비스 실행 (의존성에 따라 순차 실행) Auto Fail-over 방안 필요 • Crontab + shell을 이용하여 process를 모니터링하고, • 장애시 재시작하는 스크립트 작성 등의 운영관리 정책 필요
  • 7. 서비스 설치 이후에는? 솔루션 업데이트, 서버변경/확장에 따른 배포관리 운영환경 설정 서비스 모듈 배포 및 실행 서비스 확장 / 업데이트 서비스 업데이트 “ 예상되는 상황들… “ 서버 변경/확장 • 기능 추가 및 버그 패치 • 배포된 서버환경에 따라 업데 이트 진행 • 파일 업데이트 > 환경 설정 > 기존 서비스 중지 > 신규서비 스 재시작 • Human Error 가능성 높고, • 서버 대수에 따라 작업시간 증 가 • 초기 운영환경 설정에 필요한 작업을 반복
  • 8. 앞으로 이런일이 생기지 않을까? 사이트가 증가하고, 서비스 버전이 업데이트되고… 사이트별로 설치/응대 할 담당자가 할당되고… 그런데 우리는 전담 운영조직이 없다.
  • 10. 그래서, 이런 오픈소스를 활용했다. 최대한 자동화하고 최소의 노력으로 배포/운영할 수 있도록 하자
  • 11. Ansible은 무엇을 도와주나? • 서버별로 반복되는 작업을 실수없이 실행 • 서버 대수와 상관없이 한번의 클릭으로 설치하 여 생산성 향상 • 사이트별로 다른 환경설정 관리를 통해 작업자 의 시행착오 최소화
  • 12. Docker는 무엇을 도와주나? • 사업별 서버환경과 서비스 배포환경을 분리하 여 단일화된 배포관리로 생산성 향상 • 도커 이미지를 이용하여 서비스 업데이트 절차 단순화 (기존 : 파일복사 à 수정 à 실행) • 서비스 장애 발생시 문제해결을 위한 접근이 단순함(기존 서버환경과 분리) à 생산성 향상
  • 13. Rancher는 무엇을 도와주나? • 서비스 운영을 위한 Load balancing, Fail over 등을 제공하여 서비스 안정성 강화 • 운영환경 변화(서버 변경/삭제)에 따른 서비스 배포가 단순하여 작업시간 최소화 • 다양한 hadoop eco 클러스터를 클릭한번으로 설치 가능 (작업시간 최소화)
  • 14. 그래서 이렇게 했다. Ansible로 서버설정을 하고, docker기반의 rancher로 서비스 운영 운영환경 설정 서비스 모듈 배포 서비스 확장 서비스 업데이트 서버 증설
  • 15. 무엇이 개선될까? (초기 설치 자동화) 일부 자동화된 Shell script 방식을 완전 자동화된 방식으로 변경 기존 방식 서버 환경설정 • User & 작업공간 생성 • SSH 설정 • SDK 설치 • User Env 설정 솔루션 설치 • File 복사 및 압축해제 • 솔루션 config 변경 • 솔루션 순차 실행 • 정상 동작여부 확인 서버 대수 만큼 반복 개선 작업 정의 • 서버 환경설정 • 솔루션 배포 작업 실행 (1회) • 정의된 작업 실행 (등록된 서버 갯수만큼)
  • 16. 무엇이 개선될까? (서비스 안정성 보장) 서비스 부하분산, Fail over, 쉬운 upgrade를 지원해야 한다 기존 방식 Load balancing • Haproxy 등 설치 및 설정 Fail over • 솔루션 모니터링을 위한 별도 process 설치 • 서버 중지시 재시작 서버 변경시 설정 변경 개선 Load balancing & Fail over • Rancher에서 container명칭으로 분산관리 • Container 중지시 자동 재시작 Upgrade • 정의된 upgrade 작업 실행으로 rolling upgrade 가능 Upgrade • File 복사 및 압축해제 • 서비스 config 변경 • 서비스 순차 실행 및 정상 동작여부 확인 서버 대수 만큼 반복
  • 17. 그래서 실제 어떤 작업을 했는지 보자
  • 18. 작업 실행 작업 실행 작업서버 들작업서버 들 우리가 자동화한 작업들은… (1/2) Ansible로 서버설정을 하고, docker기반 rancher로 서비스 운영 Rancher Server HostsUser 작업 Task.1 작업 실행 작업 실행작업 Task.2 • OS 별 User 및 ssh 설정 • Docker 설치 • 서비스 모듈 복사 및 설정 • Docker image 생성 Rancher server 실행 작업 실행 • Rancher Server 설치 • Rancher-server 와 host 간 ssh 설정 작업 Task.3 • Docker image load • Rancher host 생성 작업 실행 작업 실행 작업 실행 SSH SSH SSH
  • 19. 작업 실행 작업 실행 작업서버 들작업서버 들 우리가 자동화한 작업들은… (2/2) Ansible로 서버설정을 하고, docker기반 rancher로 서비스 운영 Rancher server HostsUser 서비스 배포 작업 실행 • 웹서비스 배포 • Load balancer 실행 • Mariadb 실행 • 웹서비스 실행 작업 실행 작업 실행 작업 실행 Hadoop 배포 작업 실행 • Namenode 설치 • YARN resource manger • Job history server • Data node 설치 작업 실행 RANCHER API RANCHER API
  • 21. 좀 더 자세히 보면, Ansible을 이용해서… 기존 서버환경별로 작성했던 command line들을 서버 대수 만큼 반복
  • 22. 좀 더 자세히 보면, Ansible을 이용해서… Role 별로 분리하여 자동화할 절차를 관리하고 [SSH 설정] [솔루션 설치파일 및 docker 배포] [Rancher 서버 구동 및 host등록]
  • 23. 좀 더 자세히 보면, Ansible을 이용해서… 각 role에 대한 세부 task를 정의하여 서버별 설치를 자동화 한다 ⋅⋅⋅
  • 24. 좀 더 자세히 보면, Ansible을 이용해서… 각 role별로 구성한 ansible 자동화 스크립트 (예시) [SSH 설정] [솔루션 설치파일 및 docker 배포] [Rancher 서버 구동 및 host등록]
  • 25. 좀 더 자세히 보면, Ansible을 이용해서… 각 role별로 구성한 ansible 자동화 스크립트 실행하기
  • 26. Docker & Rancher를 이용한 작업들
  • 29. 29 Rancher 아키텍처 Rancher supplies the entire software stack needed to manage containers in production.
  • 30. 좀 더 자세히 보면, Rancher을 이용해서… 정의된 서비스 및 Hadoop cluster를 API로 쉽게 구성 Rancher cluster REST API API를 이용한 Service 생성 Script IP IP Rancher 에서 service 배포
  • 31. 좀 더 자세히 보면, Rancher을 이용해서… API 요청에 따라 rancher에서 Service 배포 • Data를 관리하는 MariaDB가 설치되었고, 3306 port를 외부에 오픈 • Mirco Service용으로 구성된 vert.x web service가 2개 배포되었다. (외부에 공개된 port는 없음) • Load Balancer 서비스를 실행하여 vert.x 서비스로의 부하분산을 처리한다. (7070 port로 오픈)
  • 32. 좀 더 자세히 보면, Rancher을 이용해서… 배포된 서비스의 scale up & down • “Scale”의 숫자를 수정하여 쉽게 서비스를 확장(scale up) 하거나, 축소(scale down) 가능 서비스 확장
  • 33. 좀 더 자세히 보면, Rancher을 이용해서… 배포된 서비스의 Log를 모니터링 • 현재 동작중인 container의 로그를 바로 확인하여, 프로세스의 상태 및 오류를 체크할 수 있음 서비스 확장
  • 34. 좀 더 자세히 보면, Rancher을 이용해서… 배포된 container에서 사용하는 자원 현황을 모니터링 • CPU, Memory, Network, Storage 등의 container에서 사용중인 자원 현황을 조회 가능
  • 35. 좀 더 자세히 보면, Rancher을 이용해서… 다양한 OSS를 ”Click”만으로 서비스로 배포 가능
  • 36. 좀 더 자세히 보면, Rancher을 이용해서… Hadoop 설치 • Hadoop 설치에 필요한 기본 설정들을 사용자가 정의 • 다양한 설정을 변경하려면, • 해당 container의 dockerfile을 확인하고, • 외부에서 ENV로 설정할 수 있는 configuration에 값을 변경 Click
  • 37. 좀 더 자세히 보면, Rancher을 이용해서… • Hadoop 설치에 필요한 기본 설정들을 사용자가 정의 • 다양한 설정을 변경하려면, • 해당 container의 dockerfile을 확인하고, • 외부에서 ENV로 설정할 수 있는 configuration에 값을 변경 Hadoop cluster가 구성된 결과를 Web에서 확인 • Image를 다운받는 속도를 제외하면, Hadoop cluster 배포에 약 1분 이하면 된다.!!
  • 38. 서비스가 배포된 아키텍처는? Container간 연결로 외부접근을 차단하고, 필요한 서비스만 노출하여 부하를 분산하는 구조 Rancher server 사용자 Rancher HostsRancher Hosts Rancher Hosts Web App #1 Web App #2 Web App #3 MariaDB #1 Load balancer Rancher Hosts Rancher Hosts Namenode #1 DataNode #2 DataNode #1 Service STACK Hadoop STACK
  • 39. Ansible + Rancher + Docker 생각보다 괜찮다!
  • 40. 무엇이 괜찮았나? • Ansible로 서비스 배포를 위한 사전환경을 구성하고 • Rancher API로 배포하는데 사용자 작업이 거의 없음 • Rancher의 사용자 친화적인 UI & API를 이용하여, 빠르고 안정 적으로 docker기반 서비스 운영 가능 • Rancher의 Catalog 서비스로 OSS 배포가 가능하여, 작업 생산 성 향상 (Hadoop, Spark 등)
  • 41. 앞으로 어떤걸 더 개선하면 좋을까? • Jenkins와 같은 CI도구와 연동하여, • Test를 통과한 Solution package를 rancher를 통해 업그레이드
  • 42. 앞으로 어떤걸 더 개선하면 좋을까? • 운영자를 위한 web service를 구성하여, • UI를 통하여 설치 & 배포 à 운영 생산성 향상 Web App • Ansible 설정값을 Web UI에서 설정 • Web에서 ”Install & Deploy” 실행 • Web에서 넘겨받은 파라미터로 • 서버에 접속하여 설치 자동화 • Service 배포
  • 43. 실제 작업한 코드들은? Github에 쉽게 따라할 수 있도록 설치가이드 및 코드를 정리 https://github.com/freepsw/ansible-rancher-docker-deploy
  • 44. END