2018년 11월 2일 금요일

도커 스웜 정리

1. 서버 오케스트레이션


여러 서버와 여러 서비스를 편리하게 관리해주는 작업
스케줄링, 클러스터링, 서비스 디스커버리, 로깅, 모니터링

오케스트레이션 툴
- kubernetes
- mesos
- ecs
- docker swarm

- 로드밸런싱
분산을 위해 가상 IP를 통해 여러 서버에 접속하도록 분배하는 기능
- 클러스팅
여러 개의 컴퓨터를 병렬로 연결해서 하나의 컴퓨터처럼 사용
- 라운드 로빈 스케줄링
프로세스들 사이에 우선순위를 두지 않고 순서대로 cpu 할당

2. 도커 스웜


스웜 - 클러스터
노드 - 서버의 단위

- docker compose


하나의 애플리케이션으로 구동되는 경우 각각 컨테이너를 관리하기 힘듬
-> 여러개의 컨테이너를 효율적으로 관리

웹서버 컨테이너 + 디비 컨테이너
웹 + 웹 + 디비


- docker stack

분산처리의 최상위 계층
종속성을 공유하는 연관된 서비스의 그룹
단일 스택은 전체 응용 프로그램의 기능을 정의하고 오캐스트레이션 할 수 있음
swarm 을 시작하고 stack 으로 compose를 등록하면 swarm 등록된 컴퓨터에 분산시켜 compose를 실행

 

-docker machine

내부적으로 VM 사용
클라우드를 포함한 원격지에 docker node를 구성
가상 호스트에 docker 엔진을 설치하고 docker machine 명령으로 호스트를 생성과 관리할 수 있는 도구
다양한 리눅스 환경애서 여러개의 원격 docker호스트를 프로비저닝 할 수 있다.


docker swarm init
분산 처리를 시작함 ( 인프라만 구축)
docker service
분산 처리에서 서비스할 것들 ( 실제 서비스 구축)




11/8
도커 스웜으로 로드밸런싱 할 때 DB를 어케해야할지 모르겠음 고민중임
docker-compose로 연결해야되는데 그게 잘 안도니ㅗ다.
해결 -> web 쪽에 depends_on 을 넣어줘야함









docker build . -t ehddnjs0728/t:1.0

docker stack deploy -c docker-compose.yml test
docker stack rm test

version: "3"
services:
  web:
    # replace username/repo:tag with your name and image details
    image: ehddnjs0728/portfolio:1.5
    #container_name: server
    #build: ./files
    deploy:
      replicas: 2
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    environment:
            - DB_HOST=mongo
            - DB=test
    links:
      - mongo
    depends_on:
      - mongo       
    networks:
      - webnet
  mongo:
    image: mongo # alpine 이미지는 용량이 적어 사용하기 좋다.
    ports:
      - "27017:27017"
    volumes:
       - ./mongo:/data/db
    deploy:
      placement:
        constraints: [node.role == manager]
      restart_policy:
        condition: on-failure
  
    networks:
      - webnet
     
         
               

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet:




flutter 기본 개념 1

  Scaffold  - 화면 뼈대 역할  - 기본적으로 AppBar body floatingActionButton 같은걸 배치해줌  return Scaffold (       appBar : AppBar ( title : const Text ...