• Docker Swarm 구성환경 :
- Manager Node 호스트 3개
- Worker Node 2개

 

  • Docker Swarm 구성요소

- Swarm 클러스터는 Manager Node 와 Worker Node 두 종류가 존재.

 

Manager Node

- Swarm과 사용자 간의 Interface로써 Swarm 방식으로 처리되는 모든 기능에 대해 사용자의 명령을 받는 통로 역활 수행

- 자신을 비롯한 모든 Node의 등록과 탈퇴를 처리하고 상태정보 관리를 통하여 가용자원의 상태를 관리

- Task Scheduler로써 사용자가 지시한 일을 여러 Worker가 적절히 수행할 수 있도록 Service의 생명주기 관리를 주관

- 다수의 Manager 간 클러스터 정보를 동기화하고 전체 Swarm클러스터의 가용성을 관리

 

Worker Node

- Manager Node의 지시를 받아 container를 구동하는 노드.

 

  • Docker Swarm 구성방법 :
- docker swarm init --advertise-addr [ip]
(docker swarm 을 구성하기 위한 초기화 명령어 / worker 노드를 추가하는 token 값이 생성된다.) 
- docker swarm join-token worker
(해당 명령어 입력시 Worker 노드를 추가하는 token 값이 생성되며, Worker 노드에 가입을 원하는 호스트에서 결과값 실행시 가입완료) 
- docker swarm join-token manager
(해당 명령어 입력시 아래 결과값처럼 Manager 노드를 추가하는 token 값이 생성되며, Manager 노드에 가입을 원하는 호스트에서 결과값 실행시 가입완료.) 
To add a manager to this swarm, run the following command: docker swarm join --token SWMTKN-1-0ysvt743g5e8gi5n3zmetdgqa449tdp2zgbxbaimmlkhghq9za-6w26kqxyn70ujmphtuw6o5tqr 10.230.102.13:2377

 

 

  • 유지보수 관리 모드
- docker node update --availability drain [node name]
(유지보수 모드로 변경(drain)하게 되면 앞으로 모든 컨테이너는 해당 서버에 할당이 되지 않으며, 현재 구동중인 모든 컨테이너들이 다른 쪽으로 넘어가게됨)

 

  • 유지보수 관리 모드 취소
- docker node update --availability active [node name]
(유지보수 모드를 취소하는 명령어로, 앞으로 해당호스트에도 컨테이너 할당이 가능하게되며, 취소했다고 해도 기존에 해당호스트에서 실행되던 컨테이너들은 다시 넘어오지 않는다.)

 

  • Manager Node로 승격
- docker node promote [WorkerNode Name]
(Worker Node를 Manager Node로 승격)

 

  • Worker Node로 강등
- docker node demote [ManagerNode Name]
(Manager Node를 Worker Node로 강등)

 

  • node 제거
- docker swarm rm [node name]
(Manager 노드에서 해당명령어로 노드를 제거시킬수 있음)

 

  • Cluster 탈퇴방법

- docker swarm leave
(Worker Node가 cluster를 떠날때 사용한다.)

- docker swarm leave --force
(Manager node가 cluster를 떠날때 사용한다.)

 

  • 장애시험
- 매니저 노드 2개를 구성하여 일반 Manager노드 1개가 장애가 날경우 (정상작동) 
- 매니저 노드 2개를 구성하여 리더 Manager노드 1개가 장애가 날경우 (장애)
(The swarm does not have a leader. It’s possible that too few managers are online. Make sure more than half of the managers are online. 의 에러가 발생하며 모든 서버가 마비가 된다.)
- 매니저 노드 3개를 구성하여 일반 Manager노드 1개가 장애가 날경우 (정상작동)
- 매니저 노드 3개를 구성하여 리더 Manager노드 1개가 장애가 날경우 (정상작동) 

 위처럼 장애시험을 통해 얻은 결과는 총 Manager노드 개수의 반 이상이 정상인 상태여야 정상작동을 한다는 것이다. 위 같은 이유로 보통 Manager Node 의 개수는 3, 5, 7 처럼 홀수개의 갯수로 구성해야 가용성이 보장된다.

Posted by 실력키우기

[docker-compose 이용하여 서버 리소스 모니터링 툴 구축]


- 도커를 이용하여 grafana 와 influxdb를 올려 서버 리소스 모니터링 구축하기


- 설치환경  grafana 및 influxdb 를 docker pull로 다운받은 후 작업진행



[ docker-compose ]


  - 도커 컴포즈란 컨테이너 여럿을 띄우는 도커 애플리케이션을 정의하고 실행하는 도구

  - 컨테이너 실행에 필요한 옵션을 docker-compose.yml 이라는 파일에 적어둘 수 있고, 컨테이너 간 의종성도 관리할수 있는 장점이 있음



1) docker-compose 패키지 설치 확인


   dpkg -l docker-*


2) 미설치 시 설치 진행


   dpkg -i docker-compose


3) docker-compose.yml 파일 생성 후 내용 작성


 - 프로젝트 루트에 파일을 생성을 해야 함


# Define a Grafana service

   grafana:

    image: grafana/grafana

    volumes:

      - ./it/grafana:/var/lib/grafana

    environment:

      GF_SECURITY_ADMIN_PASSWD: secret

      INFLUXDB_URL: http://influxdb:8086

      KAPACITOR_URL: http://kapacitor:9092

    ports:

      - "3000:3000"

    links:

      - influxdb

      - kapacitor

  # Define an InfluxDB service

   influxdb:

    image: influxdb:1.5.4

    volumes:

      - ./it/influxdb:/var/lib/influxdb

    ports:

      - "8086:8086"

  # Define a Chronograf service

   chronograf:

    image: chronograf:1.5.0

    environment:

      INFLUXDB_URL: http://influxdb:8086

      KAPACITOR_URL: http://kapacitor:9092

    ports:

      - "8888:8888"

    links:

      - influxdb

      - kapacitor

  # Define a Kapacitor service

   kapacitor:

    image: kapacitor:1.4.1

    environment:

      KAPACITOR_HOSTNAME: kapacitor

      KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:8086

    links:

      - influxdb

    ports:

      - "9092:9092"

  # Define a service for using the telegraf CLI tool.

  # docker-compose run telegraf-cli

'Linux Server > Docker' 카테고리의 다른 글

[Docker] Docker Swarm 구축  (0) 2020.11.30
[Docker] 도커 명령어  (0) 2019.02.24
Posted by 실력키우기

[도커 자주사용하는 명령어]


docker ps    현재 구동되고 있는 컨테이너 정보확인


docker ps -a  모든 컨테이너 정보확인


docker images  해당 서버에 저장되어 있는 이미지 목록


docker pull [image]   원하는 이미지를 docker hub에서 다운


docker exec -it [구동중인 container name] /bin/bash   현재 구동중인 컨테이너에 쉘로 접속


docker stop [container name]   컨테이너 중지


docker start [container name]   컨테이너 실행


docker rm [container name]   컨테이너 삭제 명령어


docker rmi [이미지 네임]   이미지 삭제 명령어


docker run --name [원하는 컨테이너네임] -d -p [local_port]:[container_port] -v [localmount point]:[dockermount point] [이미지명]    기본적인 컨테이너 실행 명령어


docker commit [이미지 id] [해당 이미지 네임:원하는Tag]       현재 구동중인 도커 이미지로 내리는 명령어


docker save -o [원하는 이름.tar] [해당이미지네임:Tag]       이미지를 파일로 내리는 명령어


docker load -i [파일로 내린 이미지명]     →  파일로 내린 이미지를 도커 이미지로 올리는 명령어

Posted by 실력키우기
이전버튼 1 이전버튼

블로그 이미지
공 부 하 는 직 장 인
실력키우기

태그목록

공지사항

Yesterday
Today
Total

최근에 달린 댓글