CI,CD/Docker

    [Docker] Prometheus와 Grafana를 통해 실시간 로그 확인

    [Docker] Prometheus와 Grafana를 통해 실시간 로그 확인

    1. Prometheus란? - 관련된 신화 : 신으로부터 불을 훔친 자로써, 형벌로 동생에게 판도라라는 여성을 보내 판도라의 상자 사건이 일어남 - 메트릭 수집, 시각화, 알림, 서비스 디스커버리 기능을 모두 제공하는 오픈 소스 모니터링 시스템이다. - 프로메테우스로 모니터링을 하려면 모니터링 항목 수집을 위해 Exporter라고 하는 Agent가 수행되어야 한다. ex. node_exporter, mysql_exporter, postgre_exporter, redis_exporter, kafka_exporter..... 2. Dockerfile로 mysqld_exporter와 node_exporter가 포함된 MySQL 컨테이너 생성하기 - Prometheus에서 모니터링을 하려면 MySQL 컨테이너..

    [Docker] Proxy Layer 구성하기

    [Docker] Proxy Layer 구성하기

    1. Proxy Layer란 - Proxy Layer : 대리층 - ProxySQL : C++로 짜여진 오픈 소스 Proxy 프로그램으로 총 4개의 database schema를 가지며, Proxy를 컨트롤하고 모니터링할 수 있게 한다. - Proxy Layer를 두는 이유 : 앞서서 Orchestra 설정을 해두면 Master(db001)이 샷다운 되더라도 Slave(db002)이 자동으로 Master로 승격되어 고가용성, 곧 시스템이 지속될 수 있도록 할 수 있었다. 하지만, Application 입장에서는, Application의 자체 설정에 따라 기존의 Master(db001)을 계속해서 바라볼 수 있다. 이를 해결하기 위해 중간층인 Proxy Layer를 둘 수 있는데, MySql은 Proxy ..

    [Docker] Orchestra를 통해 High Availability(HA) 구축하기

    [Docker] Orchestra를 통해 High Availability(HA) 구축하기

    1. 고가용성이란? - 가용성 = Uptime / (uptime + downtime) - 고가용성 = 바람직한 정도로 긴 시간 동안 지속적인 운영이 가능한 시스템 또는 컴포넌트 - 고가용성의 시스템을 구축한다는 건 = 서비스가 다운되는 타임을 최소화하는 시스템을 구축한다는 것 2. HA 수동 설정 [1] Orchestra를 Docker로 생성하기 - Orchestra는 MySQL용 복제 토폴로지 관리자로서, 고가용성 및 복제 관리 툴을 말한다. - GUI/CLI/API를 통해서 상태를 확인하고 작업을 수행할 수 있다. docker run -it --name orchestrator -h orchestrator \ --net mybridge --net-alias=orchestrator \ -p 3000:30..

    [Docker] 브리지를 통해 컨테이너 통신

    1. 브리지 생성 [1] 도커 네트워크 확인 & 브리지 생성 [root@dev opc]# docker network ls NETWORK ID NAME DRIVER SCOPE 697ad12cd5fa bridge bridge local d955f1181bf5 host host local 30e9346c2d17 none null local [root@dev opc]# docker network create --driver bridge mybridge [2] data,log 삭제하고 도커 컨테이너 재생성 docker run -it --name db001 -p 3306:3306 -h db001 \ --net mybridge --net-alias=db001 \ -v /home/opc/db/db001/data:/va..

    [Docker] Master-Slave Replication 구성

    [Docker] Master-Slave Replication 구성

    Master/Slave 구조를 사용하는 이유 서버에 트래픽이 몰려들 때 해결하는 방법으로, 컴퓨터 성능을 1) Scale-up 하거나, 컴퓨터를 여러대 두는 2) Scale-out이 있다. DB로 다수의 트랜잭션이 몰리면 race condition이 발생할 수 있다. Replication(복제)으로 Master/Slave 구조를 형성하면 DB에 가해지는 부하를 분산하여 이러한 race condition을 미연에 방지할 수 있다. 일반적으로 Master에서 write(쓰기)를 하도록 하고, Slave에서는 read(읽기)를 하도록 하여, 부하를 분산한다. MySQL에서 Master/Slave가 동작하는 방식은 아래와 같다. [1] Insert/Update/Delete 트랜잭션이 들어오면 Master에서 이..

    [Docker] 호스트OS에 log, config 연결 (+my.cnf)

    [Docker] 호스트OS에 log, config 연결 (+my.cnf)

    호스트 OS에 log/config를 연결하기 위한 순서 [1] 호스트 OS에서 log,conf 파일 경로를 먼저 생성 [2] mysql 기본 설정 파일(my.cnf)을 호스트 OS의 conf 경로에 저장 * 주의 ) 이 때, my.cnf 파일의 설정값은 컨테이너를 기준으로 한다. 예를 들어, basedir=/var/lib/mysql 로 설정한다면, 이는 컨테이너의 /var/lib/mysql 경로를 의미한다. [3] 컨테이너를 재생성하며 -v 옵션을 통해 호스트 OS의 log/conf 경로와 컨테이너 log/conf 경로를 연결 * my.cnf 에서 설정했던 log 경로가 곧 컨테이너 log 경로이다. 컨테이너 conf 경로는 my.cnf이 저장되는 아무 경로로 설정하면 된다. 호스트 OS에 log/con..

    [Docker] Docker란? Docker로 Mysql 설치해보기

    [Docker] Docker란? Docker로 Mysql 설치해보기

    Docker와 VM의 차이 * VM : Virtual Machine 가상 머신으로, 분할 공간의 가상 환경을 제공한다. * 호스트 OS : 서버 OS * 게스트 OS : VM이 서버 OS위에 올리는 가상 OS * 하이퍼바이저 : 게스트 OS를 구동하고 모니터링하는 소프트웨어 -> 유형 1 : Native/Bare-Metal 하이퍼바이저, 호스트 OS 없이 게스트 OS들만 존재 ex. VMware의 ESXi, Citrix의 Xen, Microsoft의 Hyper-V -> 유형 2 : Hosted 하이퍼바이저, 호스트 OS 위에 게스트 OS들을 둔다. ex. VmWare의 Workstation, Oracle의 VirtualBox 가상 머신(VM)의 경우, 하이퍼바이저를 통해 호스트 OS 위에 게스트 OS들을..