MemoryStore for Redisを起動するとIPアドレスが発行されます。
クラウド使ってる勢からすると障害が起きて切り替わるようなDBへのアクセスはFQDNがいいわけです。 アプリケーション側でIP切り替えるの嫌ですからね。
で、MemoryStore for RedisでFQDNが使えるのか?(internal DNSで)を確認したところ「FQDNは使えないが、発行されたIPアドレスは常に固定だよ」という回答をGoogleからいただくことができました。
ただし以下の場合はIPが変わるようです。
- インスタンスを削除した場合
- 接続モードを切り替える時
要するにメンテナンスによる フェイルオーバー等では同じIPで再接続できます。
※コンソールで確認できるIPは RedisのIPではなく、内部ロードバランサーのIPとのこと
ちなみにここでFQDN使わせてくれーという要望が2019年にすでに上がってる模様。 https://issuetracker.google.com/issues/136084984
この辺AWSと違うなあと感じました(終)
※AWSならほぼFQDN指定だし、顧客要望あげたらすぐ作られそう
試してみる
keyにaaaという値を入れた状態でコマンド実行し、裏ではgcloud redis instances failover example-1 --data-protection-mode=force-data-loss
でRedisを強制フェールオーバーする。
すると結果は以下の通り
$ while true; do echo "$(date "+%M:%S") $(redis-cli -h 192.168.0.4 get key)";sleep 1; done 24:26 aaa 24:27 aaa 24:28 aaa 24:29 aaa 24:30 aaa 24:31 aaa 24:32 aaa 24:33 aaa 24:34 aaa 24:50 aaa 24:51 aaa 👈 処理が止まった 25:07 aaa 👈 処理が再開された 25:08 aaa 25:09 aaa 25:10 aaa 25:11 aaa
16秒ほどダウンタイムがありますがフェールオーバーしても同一IPのまま通信ができることがわかりました。