[GCP] GKEでredis-clusterを自力で作ってみた(ボツ)

お世話になっております。
しゃまとんです。

前にredis-clusterを試してみた記事を作成したのですが、今回はGKEでクラスタを作ってみることにしました。というのもWebDB PRESSで特集されていてやってみようと思ったのがきっかけです。

WEB+DB PRESS Vol.99

[Go] Goからredis-clusterにつないでみる
お世話になっております。 しゃまとんです。 今回はredisをクラスタリングしてGoから接続してみるやつです。 個人ではなかなか使う機会が...

という記事なんですが、結局、ボツに至ったものになります。作業ログとして残しておきたいと思います。本自体はとても勉強になりました。

やったこととしては独自のredisコンテナ作成し、起動時に自分の名前に沿ってmaster/slaveを判断して、clusterに参加するといったものです。それではまずredisイメージファイル(Dockerfile)になります。

公式にRedisコンテナに起動スクリプトと設定ファイル(conf)を追加しています。
起動スクリプトと設定ファイルは下記のような感じです。スクリプトにはchmodで実行権限をつけておいてください(chmod +x)

用意できたら、イメージを作成してContainer Registryに追加します。

それではクラスタを作成して、redisクラスタをKubernetes上で作成してみましょう。
配置にひつようなyamlファイルは下記のようになります。(プロジェクトIDは置き換えてください)

これを適用させます。すると各redisのpodが起動スクリプトで自分の役割を把握し必要に応じたredisコマンドを実行していきます。

試しに接続確認してみましょう。podを1つ用意して接続してみます。
Serviceから接続できるはずです。

このようにクラスタが自動で生成されて、接続確認することができました。
ただこの方法だとpodが死んでしまった場合に、redis-cluster側が再配置するのと、kubernetes側のpod再生成で辻褄が合わなくなるのではと思いました。何か対処が必要になる感じだったので、redis-trib.rbを使ったクラスタ生成に変えることにしました。

ファイル自体の定義もちょっとイケてないものだし、特性を活かすには物足りないものだったかなと思います。それでもredis-clusterがどのように構築されるかわかったので良かったと思います。

以上です。

あ、後片付けが必要な方はお忘れなく!

■参考
redis clusterを自力で構築してみた