요리 지식 더구나 프랑스 요리 지식에 대한 정보가 없어서 몇번을 읽다가 말다가를 반복하다가,


세부 내용 보다는 소설의 큰 흐름만 파악하기로하고 읽다보니 어느새 반나절만에 정독을 하게 되었다.


마치 게임 문명이나 육성 시뮬레이션 게임처럼 주인공이 하나하나 요리에 대한 지식과 실력이 쌓이고,


조리학교를 키워나가게 되고 이런 과정이 정말 흥미진진하게 펼쳐진다.


개인적으로 음식은 대부분 배가 고프니 한끼를 때우는 경우가 많았는데,


가끙은 이 책에 나오는 것 처럼 요리의 맛을 제대로 음미하고 즐기면서 먹어봐야겠다는 생각이 들었다.

저작자 표시
신고
Posted by 쏠라구구

* Docker Swarm Tutorial 1대의 PC에서 실습

   

1. Swarm mode overview

> Docker Engine v1.12.0 부터 Swarm mode가 추가됨

> Swarm 은 Docker Engine 의 Cluster 를 관리함

   

* Feature highlight

> Cluster management integrated with Docker Engine

> Decentralized design

> Declarative service model

> Scaling :

> Desired state reconciliation

> Multi-host networking : 컨테이너간 통신을 위해서 자동으로 Overlay 통신

> Service discovery :

> Load balancing :

> Secure by default :

> Rolling updates :

   

* Swarm mode key concepts

> Swarm :

> Node : Swarm 에 참여하는 Docker Engine 의 instance(서버), Manager node 와 Worker node 구분

> Service and tasks : Service, replicated services, global services, task

> Load balancing : ingress load balancing, PublishedPort or 지정포트, internal DNS 로 internal LB

   

   

2. Getting started with Swarm mode

> Swarm mode 의 Docker engine Cluster 초기화

> Swarm 에 nodes 추가

> Swarm 에 application services 배포

> Swarm managing

   

  

hostname

IP(eth0)

VM1

pc

192.168.18.100

VM2

pc1

192.168.18.101

VM3

pc2

192.168.18.102

VM4

pc3

192.168.18.103

   

   

2.1 Set up

> 4대 PC 준비, Docker Engine v1.12 이상 설치, manager machine 에 IP 설정, hosts 간 포트 오픈

> 4대 PC : pc(Manager Node 192.168.18.100), pc1~3(Worker Nodes 192.168.18.101~103)

   

* hosts 간 사용 포트

TCP port 2377

클러스터 관리용 통신

TCP & UDP port 8946

Nodes 간 통신

TCP & UDP port 4789

Overlay 네트워크 트래픽

   

   

2.2 Create a Swarm

> Manager Node 에 Swarm 설정 및 광고~

> Worker Node 에서는 아래 --token 포함된 명령어도 Swarm join 시킨다

docker swarm init --advertise-addr <MANAGER-IP>

docker swarm init --advertise-addr 192.168.18.100

   

> 아래 처럼 Manager 과 Worker 로 참여 할때의 token 다른 것을 알 수 있음

docker swarm join-token manager

docker swarm join-token worker

   

> Swarm의 현재 정보 확인

docker info : "Is Manager: True"

docker node ls : Node에 *은 현재 접속 node 임

   

   

   

2.3 Add nodes to the Swarm

> Worker node 에서 Swarm에 join 시키자, 3대의 Worker Node를 Swarm에 join 함

docker swarm join --token [키값] 192.168.18.100:2377

   

> docker node 확인

   

   

2.4 Deploy a service to the Swarm

> Swarm 을 통한 서비스 배포(=컨테이너 실행)

>> 'helloworld' 라는 서비스를 생성, 1개(=replicas)의 instance(=컨테이너) 실행

>> Alpine 리눅스 이미지를 사용하며, 이미지 로딩 후 ping docker.com 실행

docker service create --replicas 1 --name helloworld alpine ping docker.com

   

>> 1대의 컨테이너가 실행되었으며, 실행된 Node는 PC(=192.168.18.100)임-master node 임

docker service ls

docker service ps helloworld

docker ps : COMMAND 에서 ping docker.com 확인

   

> inspect 로 Swarm service 에 대해서 상세히 확인

docker service inspect --pretty helloworld

docker service inspect helloworld

   

   

   

2.5 Scale the service in the Swarm

> Scale 명령으로 실행 컨테이너 갯수를 조정, 5개로 늘려보자

docker service scale helloworld=5

docker service ls : REPLICAS 에 5/5 확인

   

docker service ps helloworld : NAME에 .1~.5로 늘어남, pc3 node에 2대의 컨테이너가 실행됨을 확인

   

pc3 node 에서 docker ps 로 실행 중인 컨테이너 2대 확인

   

   

2.6 Delete the service running on the Swarm

> Swarm 실행한 Service 삭제하기, node에 실행되는 모든 컨테이너가 삭제됨

docker service rm helloworld

docker service ps helloworld

docker ps

   

   

2.7 Apply rolling updates to a service

> 서비스 중단을 최소화한 순차적인 업데이트, Redis 3.0.6 에서 Redis 3.0.7 으로 롤링업데이트 해보자

>> redis v3.0.6 3개 컨테이너를 실행하고 update-dely 는 10초를 지정

docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.6

docker service ls

docker service ps redis

   

   

docker service inspect --pretty redis : UpdateConfig 에 Delay 10초 확인

   

   

> redis 3.0.7 업그레이드 실행 : 순차적으로 1대 컨테이너 종료 후 3.0.7 컨테이너 실행 확인 되면 Delay 후((=10초)

>> 다른 redis 컨테이너 작업 진행됨, 실패 시 'FAILED' 상태가 되고 원인(로그) 확인 조취 후 다시 실행하자~

docker service update --image redis:3.0.7 redis

docker service ps redis

   

> 작업 완료 후 확인(Update status),

docker service inspect --pretty redis

docker service ps redis : 완료 후 v3.0.6(shutdown) -> v3.0.7(Running) 확인

   

   

   

2.8 Drain a node on the Swarm

> 특정 Node를 작업하거나 할때 운영중인 컨테이너를 자동으로 다른 Node에서 실행되게함

> 현재는 PC, PC1, PC2에 각각 1대의 redis 컨테이너가 구동 중

   

> PC1을 작업한다고 가정하고 drain 상태로 만들면 해당 Node는 Drain 으로 변경되고,

> 다른 Node에서 컨테이너가 자동으로 실행됨

   

> PC1 작업 완료 후 다시 Active 상태로 변경

>> 하지만 PC1으로 다시 컨테이너가 실행 되지는 않음

   

   

2.9 Global Services

> 모든 Node에서 컨테이너를 구동 하자

docker service create --mode=global --name prometheus prom/prometheus

   

   

* 참고링크

https://docs.docker.com/engine/swarm/

https://docs.docker.com/engine/swarm/swarm-tutorial/

http://docker-public.oss-cn-shanghai.aliyuncs.com/Docker%2FWhat%20is%20New%20in%20Docker.pdf : 강추!

신고
Posted by 쏠라구구

오픈스택 Mitaka 환경에서 1대의 Instance(=VM)에서 외부와 통신 과정(vlan mode) 대한 상세한 분석 해보았습니다.

정리한 내용 입니다.


 

(1) OVS 이름이나 bridge 이름 과거와 일부 변경이 있었습니다. : br-prv

 

(2) OVS쪽은 패킷 켭처가 되지 않으니 장애 처리 까다로울듯 합니다. (ovs-ofctl dump-flow 등으로 확인)

 

(3) tag vlan 가장 혼동되었으나, 결론은 tag 1대의 노드(=서버)내부에서 구분으로만 사용하며,

 실제 외부 통신과 중요한 부분은 br-prv(OVS) 빠져 나갈때 할당되는 vlan id 입니다

 해당 vlan id 실제 물리 SW 연결되면 통신하기 때문입니다.

 

(4) qrX qgY 사이에 IPtables 동작하며, NAT 동작합니다, 패킷 캡쳐 비교로 확인함

 qrX qgY 구분을 위해서 내부에서 tag 다르게 할당합니다

 

(5) linex veth pair 연결 상태 확인하는 명령어나 방법을 찾지 못하였습니다; 혹시 찾으신분 답변을 ~


(6) Floating IP 부여 IPtables 1:1 NAT 정책 추가됨



* 참고

http://docs.openstack.org/mitaka/networking-guide/scenario-classic-ovs.html

http://docs.openstack.org/ops-guide/ops-network-troubleshooting.html

http://www.opencloudblog.com/?p=66

http://sola99.tistory.com/214

http://docs.openstack.org/mitaka/






저작자 표시
신고
Posted by 쏠라구구


티스토리 툴바