Vitess를 사용하여 컨테이너로 확장 가능한 데이터베이스 구축
5066 단어 MySQLkubernetesVitess도커gce
참고
Vitess란 무엇입니까?
Vitess 은 확장 가능한 MySQL을 실현하는 것으로 다음과 같은 특징을 가지고 있습니다.
Scalability MySQL 기능에 샤딩 추가
성능 데이터 성능에 부정적인 영향을 미치는 쿼리 다시 쓰기
Connection pooling MySQL 연결의 메모리 오버 헤드를 줄입니다
관리 가능성 장애 조치 및 백업 기능
아키텍처
(그림은 ht tp // ゔ ぃ 탓 s. 이오 / 오 r ゔ ぃ 에 w / # 아 보다 차용)
Topology 실행중인 서버 정보, 샤딩 체계, 복제 그래프 등을 저장하는 메타 데이터 저장소
vtgate 응용 프로그램의 쿼리를 올바른 vttablet로 나누고 vttablet의 결과를 함께 응용 프로그램으로 반환하는 경량 프록시 서버
vttablet MySQL 처리량을 극대화하기 위해 MySQL 앞에 설치된 프록시 서버
vtctl Vitess 클러스터를 관리하는 CLI 도구
vtctld GUI에서 Vitess 클러스터를 관리하기위한 HTTP 서버
설치 on Google Cloud Platform
환경
구축 절차
vtctlclient 설치
$ go get github.com/youtube/vitess/go/cmd/vtctlclient
Google Cloud Platform 설정 * 결제 대상이므로 주의
$ gcloud auth login
$ gcloud config set project [プロジェクト名]
$ gcloud components update kubectl
$ gcloud config set compute/zone asia-east1-a
$ gcloud beta container clusters create example --machine-type n1-standard-4 --num-nodes 5 --scopes storage-rw
$ gsutil mb gs://my-backup-bucket # バックアップ用バケットを作成
Vitess 클러스터 설정
$ cd $GOPATH/src/github.com/youtube/vitess/examples/kubernetes
$ ./configure.sh
### example output:
# Backup Storage (file, gcs) [gcs]: [gcsを選ぶ]
# Google Developers Console Project [my-project]: [プロジェクト名]
# Google Cloud Storage bucket for Vitess backups: [バックアップ用バケット名]
# Saving config.sh...
Topology (etcd) 만들기
$ ./etcd-up.sh
$ kubectl get pods # 全てRunningになるまで待つ
vtctld 만들기
$ ./vtctld-up.sh
$ kubectl proxy --port=8001
http://localhost:8001/api/v1/proxy/namespaces/default/services/vtctld:web/ 에서 웹 관리 화면에 액세스 가능. 또, 커멘드 라인으로부터는
./kvtctl.sh
로 각종 실행 가능vttablet 만들기
$ ./vttablet-up.sh
4개의 컨테이너가 가능하며, 각 컨테이너에 MySQL과 vttablet이 움직입니다.
$ ./kvtctl.sh ListAllTablets test
### example output:
# test-0000000100 test_keyspace 0 spare 10.64.1.6:15002 10.64.1.6:3306 []
# test-0000000101 test_keyspace 0 spare 10.64.2.5:15002 10.64.2.5:3306 []
# test-0000000102 test_keyspace 0 spare 10.64.0.7:15002 10.64.0.7:3306 []
# test-0000000103 test_keyspace 0 spare 10.64.1.7:15002 10.64.1.7:3306 []
# test-0000000104 test_keyspace 0 spare 10.64.2.6:15002 10.64.2.6:3306 []
MySQL 초기화
$ ./kvtctl.sh RebuildKeyspaceGraph test_keyspace
$ ./kvtctl.sh InitShardMaster -force test_keyspace/0 test-0000000100
$ ./kvtctl.sh ListAllTablets test
### example output:
# test-0000000100 test_keyspace 0 master 10.64.1.6:15002 10.64.1.6:3306 []
# test-0000000101 test_keyspace 0 replica 10.64.2.5:15002 10.64.2.5:3306 []
# test-0000000102 test_keyspace 0 replica 10.64.0.7:15002 10.64.0.7:3306 []
# test-0000000103 test_keyspace 0 rdonly 10.64.1.7:15002 10.64.1.7:3306 []
# test-0000000104 test_keyspace 0 rdonly 10.64.2.6:15002 10.64.2.6:3306 []
./kvtctl.sh ListAllTablets test
에서 확인하면 각 vttablet 컨테이너에 역할 (마스터/복제본/읽기 전용)이 붙습니다.테이블 만들기
$ ./kvtctl.sh ApplySchema -sql "$(cat create_test_table.sql)" test_keyspace
vtgate 만들기
$ ./vtgate-up.sh
샘플 애플리케이션 실행
FW 설정 *외에서 80포트에 액세스 가능하게 되므로 주의
$ gcloud compute firewall-rules create guestbook --allow tcp:80
방명록 실행
$ ./guestbook-up.sh
kubectl get -o yaml service guestbook | grep ip
에서 로드 밸런서의 IP 주소를 확인하고 브라우저에서 액세스후 정리
$ gcloud container clusters delete example
$ gcloud compute firewall-rules delete guestbook
Reference
이 문제에 관하여(Vitess를 사용하여 컨테이너로 확장 가능한 데이터베이스 구축), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/noralife/items/da74dc55f0909d8508c4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)