Orchestrator는 오픈소스 MySQL 복제 토폴로지 관리 및 장애 조치 솔루션입니다. 복잡한 복제 토폴로지를 감지, 쿼리, 리팩터링할 수 있으며 안정적인 장애 감지, 지능형 복구, 승격 기능을 제공합니다.
Orchestrator는 MySQL High Availability 및 복제 관리 도구이며, 서비스로 실행되며 명령 라인 액세스, HTTP API 및 웹 인터페이스를 제공합니다. - GitHub
MySQL의 High Availability를 Orchestrator로 구축합니다.
실습 환경은 아래와 같습니다.
Docker : 20.10.2
Docker Compose : 1.27.4, build 40524192
Orchestrator : 3.2.4
MySQL : 8.0.23
Docker-Compose로 MySQL와 Orchestrator를 아래와 같이 구성 합니다.
mysql-orchestrator
├── docker-compose.yml
├── mysql-01
│ ├── conf
│ │ └── my.cnf
│ ├── data
│ └── log
├── mysql-02
│ ├── conf
│ │ └── my.cnf
│ ├── data
│ └── log
├── mysql-03
│ ├── conf
│ │ └── my.cnf
│ ├── data
│ └── log
├── orchestrator
│ ├── conf
│ │ └── orchestrator.conf.json
├── post_sql.sh
Docker 기반의 MySQL 구성은 이전 글을 참고합니다.
version: "3.7"
services:
mysql-01:
image: mysql:8.0.23
container_name: mysql-01
hostname: mysql-01
ports:
- "3306:3306"
command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: 'root'
volumes:
- "${PWD}/mysql-01/data:/var/lib/mysql"
- "${PWD}/mysql-01/log:/var/log/mysql"
- "${PWD}/mysql-01/conf/my.cnf:/etc/mysql/conf.d/my.cnf"
networks:
- mybridge
mysql-02:
image: mysql:8.0.23
container_name: mysql-02
hostname: mysql-02
ports:
- "13306:3306"
command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: 'root'
volumes:
- "${PWD}/mysql-02/data:/var/lib/mysql"
- "${PWD}/mysql-02/log:/var/log/mysql"
- "${PWD}/mysql-02/conf/my.cnf:/etc/mysql/conf.d/my.cnf"
networks:
- mybridge
mysql-03:
image: mysql:8.0.23
container_name: mysql-03
hostname: mysql-03
ports:
- "23306:3306"
command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
environment:
MYSQL_ROOT_PASSWORD: 'root'
volumes:
- "${PWD}/mysql-03/data:/var/lib/mysql"
- "${PWD}/mysql-03/log:/var/log/mysql"
- "${PWD}/mysql-03/conf/my.cnf:/etc/mysql/conf.d/my.cnf"
networks:
- mybridge
orchestrator:
image: openarkcode/orchestrator:3.2.4
container_name: orchestrator
hostname: orchestrator
ports:
- "3000:3000"
networks:
- mybridge
networks:
mybridge:
external: true
docker-compose를 실행하여 MySQL 및 Orchestrator 서비스를 시작합니다.
#run
docker-compose up -d
#stop
docker-compose stop
MySQL Replication 구성 및 Orchestrator 설정을 위한 아래 스크립트를 실행합니다.
sh post_sql.sh
http://localhost:3000 접속합니다.
최초 접속시 클러스터가 구성되어있지 않습니다.
"Clusters > Discover"를 선택 후 클러스터를 등록합니다.
MySQL Master서버 "mysql-01"를 입력 후 "Submit"을 누룹니다.
"Clusters > Dashboard"를 선택하면 MySQL High Availability가 구성된 부분을 확인할수 있습니다. 사전에 MySQL Replication 구성안으로 토폴리지가 시각화 됩니다.
다음 글에서는 Orchestrator를 이용한 Failure detection & recovery를 살펴보도록 하겠습니다.
코드는 Github에서 확인 가능 합니다.