사이드킥 모델(Sidekick model)

Work & Study/TechTalk 2015.03.31 15:21 posted by k16wire

CoreOS에서 fleet으로 Docker 컨테이너를 실행하면 클러스터에 들어있는 호스트 리소스를 스케쥴링하여 최적 호스트에 컨테이너를 실행해줍니다. 그런데 이렇게 실행된 서비스에 대한 접근 정보(IP와 포트)를 알수 없다는 이슈가 생깁니다. 


이를 위한 대표적인 해결책이 사이드킥 모델(Sidekick model) 입니다. 이 모델은 서비스가 실행되면 자동으로 동반 실행되는 서비스를 하나 더 등록합니다. 이 동반 서비스는 해당 서비스가 실행되고 나면 서비스의 IP와 포트 정보를 etcd에 저장합니다. 서비스가 종료되면 etcd에서 해당 서비스의 키를 삭제합니다.


다음은 nginx 서비스를 fleet으로 실행했을때 ip와 port 정보를 구하는 사이드킥 서비스 예입니다.

[Unit]
Description=Announce nginx1.service
# Binds this unit and nginx1 together. When nginx1 is stopped, this unit will be stopped too.
BindsTo=nginx1.service

[Service]
ExecStart=/bin/sh -c "while true; do etcdctl set /services/website/nginx1 '{ \"host\": \"%H\", \"port\": 8080,
 \"version\": \"52c7248a14\" }' --ttl 60;sleep 45;done" ExecStop=/usr/bin/etcdctl delete /services/website/nginx1 [X-Fleet] # This unit will always be colocated with nginx1.service MachineOf=nginx1.service


참고자료



저작자 표시 비영리 변경 금지
신고

'Work & Study > TechTalk' 카테고리의 다른 글

윈도우 서버에서 도커  (0) 2015.04.20
도커 이미지와 컨테이너 한번에 지우기  (0) 2015.04.09
사이드킥 모델(Sidekick model)  (0) 2015.03.31
VirtualBox 네트워크 이해  (0) 2015.03.29
Docker 리모트 API로 포트 바인딩  (0) 2015.03.17
Docke 발표자료  (0) 2015.03.14