이전 글에서는 Replication에 대해서 작성했습니다. 이번에는 orchestrator를 이용한 HA 구성에 대해서 작성을 하려고 합니다.
이전에 작성된 글을 보면 단순히 Master-Slave 구조로만 이루어져 있습니다. 하지만 서비스를 운영을 하다보면 트래픽으로 DB부화, 다운등 다양한 이슈를 처리하게 됩니다. 마스터 DB가 죽으면 어떻게 해야될까요?
바로 Slave를 Master로 승격하여 바로 대체하는 작업을 통해서 Fail Over를 최소화를 하는 것이 적절하다고 생각합니다.
이때 Orchestrator
를 주로 사용합니다. Orchestrator
란 MySQL용 복제 토폴로지 관리자로서 고가용성 및 복제 관리 툴이라고 Google에 나와있지만 간단하게 이야기하면 GUI환경에서 드래그 앱 드롭, Dashboard를 통해 Replication구조를 빠르게 확인할 수 있고 사용자의 설정에 따른 마스터 승격 프로세스에 따라 장애 복구를 하는 관리 툴 입니다.
docker run -i -t --name orchestrator -h orchestrator \
--net mybridge --net-alias=orchestrator \
-p 3000:3000 \
--platform linux/amd64 \
openarkcode/orchestrator:latest
➜ ~ docker network inspect mybridge
.... 생략
"Containers": {
"028f3d2bc77893e242250cf5663385049896ebec22de6d1a5320cc43a42becd3": {
"Name": "orchestrator",
"EndpointID": "6504b4e8b7d03514835465b579a89b0f30f626c06695767be582486e86ad63a7",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"4a4aa3717f8390d60e424f192c5c98a3bc4c153719c10e3a839706f5f828b2ce": {
"Name": "db002",
"EndpointID": "e1a35d925d417b5d581a961a5ae73fbf56ed49d87fcb0384d4ed7b2ce6e22793",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
"64b1d6e1bfe58378d048b3cee5b8b36a681c0e78b06d4d8de38c01dd0b808b19": {
"Name": "db003",
"EndpointID": "d30589c82f613938907c749b89650c87eee777a2b4ede7f662c4a960dd09f1d4",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
},
{
"Name": "db001",
"EndpointID": "d30589c82f613938907c749b89650c87eee777a2b4ede7f662c4a960dd09f1d4",
"MacAddress": "",
"IPv4Address": "",
"IPv6Address": ""
}
http://localhost:3000/web/clusters
를 통하여 Orchestrator에 접근합니다.docker exec -it orchestrator /bin/bash
cd etc/
vi orchestrator.conf.json
"RecoverMasterClusterFilters": [
"*"
],
"PromotionIgnoreHostnameFilters": ["db003"],
목적: 마스터 복구 시 적용되는 클러스터 필터링 설정
"*" 사용 시: 모든 클러스터에 복구 작업 적용
특정 패턴 지정 가능
jsonCopy"RecoverMasterClusterFilters": [
"db00*",
"db001*"
]
목적: 특정 호스트 제외하여 마스터 승격 방지
예시 설정: ["db003"]
복수 호스트 제외 가능
jsonCopy"PromotionIgnoreHostnameFilters": [
"db003",
"backup_node",
"dr_replica"
]
추가적으로 장애 복구 설정이나, 보안 접근제어에 대한 부분은 AutoPseudoGTID, DetectClusterAliasQuery, ApplyConfig, PreventCrossDataCenterReplication, HTTPAuthUser, AuthenticationMethod등 다양한 메서드를 제공하기 때문에 관련 자료를 살펴보면 도움이 될 것이다.
docker restart
를 하고 Dashboard를 살펴보면 다음과 같은 하트가 생성된 것을 확인할 수 있다.