예전에 Rancher 기반으로 쿠버네티스 서비스를 구성하여 서비스한 적이 있었다. Rancher Master 노드를 HA 구성로 구성할 필요가 있었는데 이를 위해서 Rancher Master/Slave Node가 사용하는 DB(Mysql)를 Replication 해야했다. 당시의 기억을 더듬어 도커로 Mysql 의 Galera Cluster를 구성하는 방법을 정리한다.
Mysql Galera Cluster 구성을 위해서는 최소 3대의 Mysql Instance(서버)가 필요하다.
1. 설치환경
- Host : CentOS 7.x
- Docker : 17.04
- Mysql : 5.7
2. Mysql 도커 이미지 다운로드
- docker pull mysql:5.7.0 (설치 버전은 필요에 따라 변경 가능)
3. Mysql Master 실행
- Host서버 IP : 1.1.1.1
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master01.mysql \ #호스트명
-v /data/mysql:/var/lib/mysql \ # Mysql 데이터 저장 볼륨
-p 3306:3306 \ # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera # 비밀번호
-u root \ # 계정명
--wsrep-cluster-address=gcomm:// \
--wsrep-node-address=1.1.1.1 \ # Master의 호스트 IP
4. Mysql Slave #1 실행
- Host서버 IP : 2.2.2.2
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master02.mysql \ #호스트명
-v /data/mysql:/var/lib/mysql \ # Mysql 데이터 저장 볼륨
-p 3306:3306 \ # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera # 비밀번호
-u root \ # 계정명
--wsrep-cluster-address=gcomm://1.1.1.1 \ # Mysql Master IP
--wsrep-node-address=2.2.2.2 \ # Slave-1의 호스트 IP
5. Mysql Slave #2 실행
- Host서버 IP : 3.3.3.3
docker run -d --restart=always --name rancher-mysql \
-h dsaas-master02.mysql \ #호스트명
-v /data/mysql:/var/lib/mysql \ # Mysql 데이터 저장 볼륨
-p 3306:3306 \ # 포트번호
-p 4567:4567 \
-p 4568:4568 \
-p 4444:4444 \
-e MYSQL_ROOT_PASSWORD=1234 erkules/galera # 비밀번호
-u root \ # 계정명
--wsrep-cluster-address=gcomm://1.1.1.1 \ # Mysql Master IP
--wsrep-node-address=3.3.3.3 \ # Slave-1의 호스트 IP
6. Replication 구성 확인
# 클러스터 상태 확인
docker exec -t node mysql -e 'show status like "swrep_cluster_size"'
주의사항
- Gallera Cluster를 구성해도 자동으로 failover를 지원하지는 않는다.
정리를 차일 피일 미루다 보니 이미 상당한 시간이 지나서야 정리해 본다. 메모장의 낙서들을 빨리 정리해야 겠다.
'Automation > docker' 카테고리의 다른 글
[개발환경] Docker Desktop 설치 (0) | 2022.03.18 |
---|---|
Docker - 설치 (0) | 2020.10.12 |