eks+Vitess動作検証
-
HAL大阪ロボット学科3年の西岡和輝と申します。インフラコースのインターンに4日間参加させていただいきました。今回のインターンではeks上でVitessを動作させ、mysqlのデータを移行する検証を行いました。
コロナ禍ということもありオンラインでの実施でしたが、その中でしてきたことをまとめようかと思います!
Vitessとは
YouTubeが開発した水平スケーリング可能な、MySqlクラスタのための管理ソフトウェアになります。https://vitess.io/
単純にテーブル単位で分割だけではなく、レコード単位で分割することが可能です。
各種ツールのインストール
awscli
$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
eksctl
$ curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
$ sudo mv /tmp/eksctl /usr/local/bin
kubectl(1.16.12)
$ curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/linux/amd64/kubectl
$ curl -o kubectl.sha256 https://amazon-eks.s3.us-west-2.amazonaws.com/1.16.12/2020-07-08/bin/linux/amd64/kubectl.sha256
$ chmod +x ./kubectl
$ mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
$ echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
Vitess
$ git clone https://github.com/vitessio/vitess.git
↑から入手してきてpassの通ったところに配置
vtclient
$ curl -OL https://github.com/vitessio/vitess/releases/download/v6.0.20-20200624/vitess-6.0.20-20200624-9438d77.tar.gz
$ tar xzf vitess-6.0.20-20200624-9438d77.tar.gz
$ sudo mv itess-6.0.20-20200624-9438d77/bin/vtctlclient /usr/bin/
mysql-client
$ sudo apt install -y mysql-client
Vitessクラスタの構築
・初期化
$ kubectl create ns vitess
$ cd vitess/examples/helm/
$ helm install vitess --namespace vitess ../../helm/vitess -f 101_initial_cluster.yaml
$ helm upgrade vitess ../..helm/vitess -f 201_customer_tablets.yaml
$ helm upgrade vitess ../../helm/vitess -f 202_move_tables.yaml
$ helm upgrade vitess ../../helm/vitess -f 203_switch_reads.yaml
$ helm upgrade vitess ../../helm/vitess -f 204_switch_writes.yaml
$ helm upgrade vitess ../../helm/vitess -f 205_clean_commerce.yaml
・水平シャーディングの有効化
$ helm upgrade vitess ../../helm/vitess/ -f 301_customer_sharded.yaml
$ helm upgrade vitess ../../helm/vitess/ -f 302_new_shards.yaml
$ helm upgrade vitess ../../helm/vitess/ -f 303_reshard.yaml
$ helm upgrade vitess ../../helm/vitess/ -f 304_switch_reads.yaml
$ helm upgrade vitess ../../helm/vitess/ -f 305_switch_writes.yaml
・クリーンアップ
$ helm upgrade vitess ../../helm/vitess/ -f 306_down_shard_0.yaml
$ helm upgrade vitess ../../helm/vitess/ -f 307_delete_shard_0.yaml
感想
単純な知識不足や自身の理解力の低さをより知りました。ただメンターの方のサポートや前回の参加者の成果物も参考に、ほぼ0だったインフラの知見を得ることが出来ました。実際の会議を拝見させてもらうなど、現場を少しでも知ることが出来たことも大きな成果でした。
まとめ
参加前までeks、Vitess共に触れたことがなかったので、今回のインターンに参加でき非常に良かったです。
達成できなかった要件もあるので、ぜひ個人で検証してみたいと思います。
このような機会を設けていただき、ありがとうございました!