【Cloud Memorystore】Cloud Memorystore を試してみた
Cloud Memorystore のベータ版が公開されたので、GKEで試してみました。
※プロジェクトIDなど、一部伏せています。
Cloud Memorystore と GKE に関する公式ドキュメント
https://cloud.google.com/memorystore/docs/redis/quickstart-gcloud https://cloud.google.com/memorystore/docs/redis/connecting-redis-instance https://cloud.google.com/memorystore/docs/redis/connect-redis-instance-gke
redis インスタンス作成
$ gcloud beta redis instances create test --region=us-west1 --zone=us-west1-a Create request issued for: [test] Waiting for operation [operation-1525936841433-56bd4db622386-64b67dd7-c246f13c] to complete...done. Created instance [test].
- k8s クラスタと同じリージョン
- Basic Tierで作成。本番では Standard Tier を使うべき
作成した redis インスタンスの詳細
$ gcloud beta redis instances describe test --region=us-west1 authorizedNetwork: projects/XXXXXXX/global/networks/default createTime: '2018-05-10T07:20:41.651108Z' currentLocationId: us-west1-a host: 10.0.0.3 locationId: us-west1-a memorySizeGb: 1 name: projects/XXXXXXX/locations/us-west1/instances/test port: 6379 redisVersion: REDIS_3_2 reservedIpRange: 10.0.0.0/29 state: READY tier: BASIC
IPエイリアスの設定
k8s のクラスタのIPエイリアスが有効でなかったので、対応しました。
1.8以降ではデフォルトで有効になるらしいです。
IPエイリアスが無効の場合の対応
https://github.com/bowei/k8s-custom-iptables
$ git clone https://github.com/bowei/k8s-custom-iptables.git Cloning into 'k8s-custom-iptables'... remote: Counting objects: 51, done. remote: Total 51 (delta 0), reused 0 (delta 0), pack-reused 51 Unpacking objects: 100% (51/51), done. $ cd k8s-custom-iptables/ $ TARGETS="10.0.0.0/29" ./install.sh daemonset "k8s-custom-iptables" created configmap "k8s-custom-iptables" created configmap "k8s-custom-iptables" configured
ConfigMap と DaemonSet が作成されていた
$ kubectl get ConfigMap NAME DATA AGE k8s-custom-iptables 1 7s $ kubectl get DaemonSet NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE k8s-custom-iptables 3 3 3 3 3 <none> 11s
動作確認
redis-cli の pod 立てて、確認してみる
$ kubectl run -i --tty redisbox --image=gcr.io/google_containers/redis:v1 -- sh # redis-cli -h 10.0.0.3 10.0.0.3:6379> set hoge bar OK 10.0.0.3:6379> keys * 1) "hoge"
いけた。ローカルPCから redis の中身を見たいときはこの方法で良いかと思う。 cloud-sql-proxy のようにサービスアカウントを発行する必要ないかと。 Stack Overflowで質問されてた。まだ回答はなかった
モニタリング
Stackdriver でモニタリングできていた
Resources -> Metrics Explorer
Standard Tier の容量変更時にダウンダイムがあるか検証
事前準備
Cloud memorystore の standard-test インスタンスと、redis-cli pod を用意
redis-cli pod で1秒ごとに standard-test インスタンスへコマンドを実行させる
while true; do redis-cli -h 10.0.0.12 keys "*"; sleep 1; done
standard-test インスタンスの容量変更を実行する
gcloud beta redis instances update standard-test --region=us-west1 --size=2
結果
容量変更におよそ10分要したが、redis-cli -h 10.0.0.12 keys "*"
の結果が返ってこないという結果はみられなかった。つまり、ダウンタイムはなかった。
まとめ
GCP の redis のマネージドサービス、非常にありがたい。。。