데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
데브시스터즈의 Cookie Run: OvenBreak 에 적용된 Kubernetes 기반 다중 개발 서버 환경 구축 시스템에 대한 발표입니다.
Container orchestration 기반 개발 환경 구축 시스템의 필요성과, 왜 Kubernetes를 선택했는지, Kubernetes의 개념과 유용한 기능들을 다룹니다. 아울러 구축한 시스템에 대한 데모와, 작업했던 항목들에 대해 리뷰합니다.
*NDC17 발표에서는 데모 동영상을 사용했으나, 슬라이드 캡쳐로 대신합니다.
도커부터 시작하여 쿠버네티스까지 각 서비스의 기능 및 구성요소에 대해 자세히 소개해 드립니다 | Learn more about the features and components of each service, starting with a Docker and ending with Kubernetes.
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Docker Seoul Meetup #2에서 발표한 자료입니다.
CoreOS에서 confd와 sidekick service를 이용한 서비스 배포에 대한 내용입니다.
http://www.youtube.com/watch?v=5ixJCM6pAcg
영상과 함께 보시면 더 좋습니다 :)
도커부터 시작하여 쿠버네티스까지 각 서비스의 기능 및 구성요소에 대해 자세히 소개해 드립니다 | Learn more about the features and components of each service, starting with a Docker and ending with Kubernetes.
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Docker Seoul Meetup #2에서 발표한 자료입니다.
CoreOS에서 confd와 sidekick service를 이용한 서비스 배포에 대한 내용입니다.
http://www.youtube.com/watch?v=5ixJCM6pAcg
영상과 함께 보시면 더 좋습니다 :)
Fastcatsearch's next major version search/index structure concept.
## Push documents and search right away.
* No full indexing
* Add document any time even when searching
* No indexing node, but master node
* Master node index document first and toss docs to other nodes
* Every node index their documents independently
* Master node checks other nodes indexing integrity in a cluster
RabbitMQ/ActiveMQ 와 같은 비동기 메시징 미들웨어를 이용하여 다량의 서버를 orchestration(command & control) 할 수 있는 mcollective에 대한 한글 ppt 자료입니다. 상세한 내용은 http://wiki.tunelinux.pe.kr/x/LQAy 를 참고하시면 됩니다.
[17.01.19] docker introduction (Korean Version)Ildoo Kim
Docker(도커) 소개를 위해 사용했던 자료입니다.
제가 속한 개발팀에서는 도커 컨테이너를 기반으로 개발부터 배포까지 가능한 환경 및 인프라를 구축하여 개발팀에서 대다수의 오퍼레이션까지 관여하면서 Devops 형태로 운영합니다.
Docker(도커)를 처음 사용하거나 개념적으로 익숙하지 않은 초보를 위해 만든 자료입니다.
슬라이드에서 사용된 스크립트/코드는 아래에 있습니다.
https://github.com/ildoonet/docker_introduction
----
김일두, Software Engineer @ Kakao
Github : https://github.com/ildoonet
Linkedin : https://www.linkedin.com/in/ildoo-kim-56962034/
INTEGRATED PLATFORM FOR DATA AND CONTAINERS
Mesosphere Enterprise DC/OS includes everything you need to elastically run containerized apps and data services in production.
4. Docker
• 오픈소스 컨테이너
– 여러개의 App을 단일 호스트에서 구동하기 위한
개념
– chroot와 가상화의 중간정도의 개념
– 가상화와 비슷하지만, Guest 운영체제가 필요없
는 가벼운 대안제시.
– 이식성 - 가상머신, 클라우드, PC 어디서든 실행
가능.
• Immutable Infrastructure 구현
– 한 번 설정한 운영 환경은 변경하지 않는다
– 호스트 OS와 운영환경 분리
– 운영환경만 이미지화하여 재사용
10. Mesos 소개
• 분산 시스템 커널
– 리눅스 커널과 동일하며, 단지 추상화 레벨만
다르다.
• 모든 머신에서 동작하며, 실행 어플리케이션에
대해 리소스관리와 스케쥴링 API를 제공.
• Mesosphere : Mesos 서비스 제공
• Mesos 프레임워크 : Marathon, Chronos,
Aurora..
• Marathon은 작업(컨테이너)관리담당이며,
Chronos는 작업스케쥴러이다.
11. Mesos 소개
• 아파치 Top Level 프로젝트
• 트위터, 에어비앤비, 미소스피어가 사용
• GCE 기반의 Mesos 서비스
(https://google.mesosphere.com/)
• 운영시 10000대 노드까지 확장가능
• 패키지와 서포트는 미소스피어 담당
• 기본적으로 Docker지원
• 튜토리얼 코스
http://docs.mesosphere.com/intro-course/
24. 시스템 구성도
Garuda master
Master Node
Docker
Registry
DB
Garuda console
Load balancer
ProxyDMZ
REST API
Web UI
Firewall
Internet
Master
Slave
Master Master
Slave Slave ...
Cluster
ZK
Internal Firewall
Admin
http://<appId>.mydomain.com
* 색이 칠해진 박스는 하나의 VM Instance를 나타낸다.
App Store
25. Master Node
Garuda master
Garuda console
• 웹 어드민을 제공하는 데몬
• Listening on 80 port
• 웹 UI 제공
• Running on Tomcat, Jetty or JBoss
• 실제 모든 작업은 Manager 데몬으로 REST API
를 호출함으로서 수행된다.
• 시스템관리와 클러스터 컨트롤을 제공하는 데몬
• REST API listening on 8080 port
• 내부컴포넌트는 API Listener와 Console, Cloud
Controller, Cloud Watch등이 있다.
• REST API listening on 8080 port (Embedded)
Management
Cloud Controller
REST API
Jetty *:8080
Garuda master
• 전체시스템관리
• APP 메타데이터 관리
• 사용자 관리
• 클러스터 관리 / 컨트롤
• Mesos 통신
• Scale-in/out 담당
Master Node
Cloud Watch
• App 사용량을 감지하여 Scale-in/out 결정
26. Cluster
• Marathon Slave의 역할로 실제 사용자 어플리
케이션이 실행되는 서버
• 최소 1개이상으로 계속 추가가능
• Marathon Master의 역할로 작업분배를 담당
• HA를 위해 3개로 구성하여 Zookeeper와 통신
• Leader로 선정된 Master 하나만 Active이며 나머지 2
개서버는 Standby.
Master
Slave
Master Master
Slave Slave ...
Mesos-slave
HAProxy
Mesos-master
Marathon
zookeeper
• Marathon framework 기반의 작업을 실행
• Master, Slave, Garuda master와 통신한다.
Docker Daemon • Docker 작업이 실행가능하도록 daemon 설치
Slave
Cluster
Master
• Marathon에서 자동설정해주는 프록시
HAProxy
• Marathon에서 자동설정해주는 프록시
• 로드밸런서가 직접 Slave를 바라보므로, 사용할일은 없음.
• Master에 설치되는 Daemon들은 모두 HA가 가능하므로,
같은 인스턴스에 함께 설치하여 노드를 절약하도록 한다.
27. Clusters
• 클러스터는 App을 실행하는 환경을 제공하며, App을 제
어한다.
• Mesos + Marathon을 사용한다.
• Master 구성
– Mesos-master
– Marathon
– Zookeeper
– HAProxy
• Slave 구성
– Mesos-slave
• Mesos는 ZK Quorum을 위해 3대가 소요되며, Active-
Standby 로 사용된다.
• Controller와의 통신은 Mesos와 Marathon의 고유 REST
API를 사용한다.
29. Load Balancer
• 서브도메인에 App ID가 입력되므로, App별로 분기해준다.
Load balancer
HAProxy
mesos-marathon-bridge
Cron
• 로드밸러서는 Public IP를 부여받으며 외부에서 인터넷에서
접속이 가능하며 DMZ 영역에 위치한다.
• 로드밸런싱과 프록시 기능을 동시에 수행한다.
• 주기적으로 Marathon의 작업정보를 확인하여 변경사항이
있다면 HAProxy 설정파일을 업데이트하고 리로드한다.
• mesos-marathon-bridge스크립트를 주기적으로 실행한다.
frontend http-in *:80
acl hello8 hdr_end(host) -i hello8.fastcatsearch.com
use_backend hello8_server if hello8
acl tomcat4 hdr_end(host) -i tomcat4.fastcatsearch.com
use_backend tomcat4_server if tomcat4
#default_backend tomcat4_server
backend hello8_server
balance leastconn
server hello8_1 104.236.89.167:31009 check maxconn 1000
backend tomcat4_server
balance leastconn
server tomcat4_1 104.236.89.167:31324 check maxconn 1000
haproxy.cfg 예시
30. 가루다 - 클러스터 - App Store
Garuda
App Store - A
Node
AWS Cluster ( Service A )
Node Node ...
Node
Openstack Cluster ( Service B )
Node Node ...
Node
AWS Cluster ( Service C )
Node Node ...
Node
Openstack Cluster ( Service D )
Node Node ...
App Store - B
App Store - C
App Store - D
...
관리
Admin