eks+Vitess動作検証

-

  •   Kazuki Nishioka

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共に触れたことがなかったので、今回のインターンに参加でき非常に良かったです。

達成できなかった要件もあるので、ぜひ個人で検証してみたいと思います。

このような機会を設けていただき、ありがとうございました!