Drocker Swarm(Swarm Mode) 튜토리얼을 만들어 보려고 합니다.
10257 단어 DockerSwarmDockerAWSswarm
뭘 좋아해요?
※ docker.com 공식 발표Swarm Load Balancer.
알 수 없는 일
Rollling Update는 처리 중인 요청이 모두 완료되면 업데이트를 시작할 수 있습니까?
AWS에서 말하는 ELB>Connection Draining의 동작인가요?
누가 알려주세요~m()m
자습서 요약
Getting started with swarm mode 여러 가지 간단한 설명을 하겠습니다.
alias docker='sudo docker'
했어요.포트 열기(Security Groups)
각 서버의 포트를 엽니다.AWS의 Security Groups는 다음과 같습니다.
합의
포트 범위
출처
Remarks
TCP
8080
0.0.0.0/0
Nginx 컨테이너용 공개 포트
TCP
22
0.0.0.0/0
SSH 연결
TCP
2377
{self-group-id}
Swarm 클러스터 관리를 위한 통신
TCP
7946
{self-group-id}
Routing mesh ( Swarm Load Balancer )
UDP
7946
{self-group-id}
Routing mesh ( Swarm Load Balancer )
UDP
4789
{self-group-id}
Routing mesh ( Swarm Load Balancer )
부트 노드(서버)
AWS Constore에서 3개의 인스턴스를 시작합니다.예를 들면 아래의 느낌.
Terminal 3개를 미리 열어두면 SSH로 로그인한 후 단계가 수월합니다.
과업
Unix Hostname
IP
manager
ip-172-30-1-100
172.30.1.100
worker1
ip-172-30-1-200
172.30.1.200
worker2
ip-172-30-1-201
172.30.1.201
Hostname은 알기 쉽게 쓰여졌다.절차상 중요하지 않다
시작 관리자 노드
관리자 노드
172.30.1.100
에서 다음 명령을 실행합니다.$ docker swarm init --advertise-addr 172.30.1.100
Swarm initialized: current node (udhy6l2u7e2tjo3tstmnz6tiu) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-67w211zr8eu6h86cfdy09liwlbc6id4nlxrwr0d8u8fcn1x95u-93n335bihesdnwz6650y2ynmy \
172.30.1.100:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
작업 노드를 관리자 노드로 이동
worker1 노드
172.30.1.200
,worker2 노드172.30.1.201
에서 다음 명령을 실행합니다.저는
--token ...
매번 다르다고 생각해요. 선착순으로 출력된 콘솔을 복사하세요.$ docker swarm join \
--token SWMTKN-1-67w211zr8eu6h86cfdy09liwlbc6id4nlxrwr0d8u8fcn1x95u-93n335bihesdnwz6650y2ynmy \
172.30.1.100:2377
This node joined a swarm as a worker.
Swarm의 노드 상태 확인
다음 명령을 사용하여 Swarm의 노드 상태를 확인할 수 있습니다.worker 노드에서도 현재 있는 노드
*
가 있음을 확인할 수 있습니다.$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
udhy6l2u7e2tjo3tstmnz6tiu * ip-172-30-1-100 Ready Active Leader
zsj8brmyynj67bqlw4qhvpgn9 ip-172-30-1-200 Ready Active
p2jfiueccxcqmtt1wqe4r5kvd ip-172-30-1-201 Ready Active
디자인 서비스
명령
docker service create {イメージ}
을 처리합니다.$ docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \
redis:3.0.6
q9b5a65fkms8oix50bt487j5c
명령docker service ps {サービス名}
에서 확인합니다.세 개의 용기가 각각 다른 노드에서 운행한다.$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
2jwzoi4i2r3d redis.1 redis:3.0.6 ip-172-30-1-100 Running Running about a minute ago
1a402z122056 redis.2 redis:3.0.6 ip-172-30-1-200 Running Running about a minute ago
thhbs8870wnk redis.3 redis:3.0.6 ip-172-30-1-201 Running Running about a minute ago
서비스 제공
명령
docker service update --image {イメージ} {サービス名}
에서 진행Rolling Update.$ docker service update --image redis:3.0.7 redis
redis
낡은 컨테이너가 폐기된 것을 알고 새 컨테이너로 바뀌었다.기본적으로 컨테이너마다 업데이트됩니다.$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
imw1jzgdshta redis.1 redis:3.0.7 ip-172-30-1-100 Running Running 24 seconds ago
2jwzoi4i2r3d \_ redis.1 redis:3.0.6 ip-172-30-1-100 Shutdown Shutdown 25 seconds ago
vr5u12jfpe07 redis.2 redis:3.0.7 ip-172-30-1-200 Running Running 36 seconds ago
1a402z122056 \_ redis.2 redis:3.0.6 ip-172-30-1-200 Shutdown Shutdown 36 seconds ago
py37p0ip7mgs redis.3 redis:3.0.7 ip-172-30-1-201 Running Running 12 seconds ago
thhbs8870wnk \_ redis.3 redis:3.0.6 ip-172-30-1-201 Shutdown Shutdown 13 seconds ago
서비스 삭제
명령
docker service rm {サービス名}
서비스 폐기.$ docker service rm redis
redis
아니에요.$ docker service ps redis
Error: No such service: redis
실제로 컨테이너를 버리는 데 몇 초가 걸리기 때문에 docker ps
로컬 노드의 정지 처리 중인 컨테이너를 확인할 수 있다Routing mesh (Swarm Load Balancer)
Swarm 노드Swarm Load Balancer에서 실행하면 서비스의 공개 포트(전격 호스트 OS의 포트)에 대한 접근이 자동으로 적당한 용기에 분배된다.
※ docker.공식 발표.그림의 IP 주소는 이 기사의 IP 주소와 다릅니다.떳떳하지 못하다
2개의 컨테이너로 Nginx 서비스를 시작합니다.호스트 OS의
:8080
를 공개 포트에 할당합니다.$ docker service create \
--name my-web \
--publish 8080:80 \
--replicas 2 \
nginx
utj6pvxbcw7wjlqhlaylf2wyg
세 노드 중 두 노드(worker1,worker2)가 용기를 분리했다.$ docker service ps my-web
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
rom8aei8b8ye my-web.1 nginx:latest ip-172-30-1-200 Running Running 7 seconds ago
5sd5szh49gvg my-web.2 nginx:latest ip-172-30-1-201 Running Running 7 seconds ago
디버그된 노드 (worker1)의 Nginx에 접근하기 위해 curl
를 사용해 보십시오.$ curl 172.30.1.200:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
용기가 완전히 움직이지 않는 노드 (관리자) 도 마찬가지로 방문하여 반환에 잘 응답합니다!$ curl 172.30.1.100:8080
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
...
Reference
이 문제에 관하여(Drocker Swarm(Swarm Mode) 튜토리얼을 만들어 보려고 합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/megmogmog1965/items/c4421dadc61a3630742c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)