· ストレージとデータベース  · 4 min read

Cloud Memorystore: Redis キャッシュの設定と利用法

Google CloudのマネージドRedisサービス、Cloud Memorystoreの導入から運用までを解説します

Google CloudのマネージドRedisサービス、Cloud Memorystoreの導入から運用までを解説します

Cloud Memorystoreとは

Cloud Memorystoreは、Googleがフルマネージドで提供するRedisサービスです。アプリケーションのパフォーマンスを向上させるための高速なインメモリキャッシュとして利用できます。

セットアップと基本設定

インスタンスの作成

  1. Google Cloud Consoleにアクセス
  2. Cloud Memorystoreのページに移動
  3. 「インスタンスを作成」をクリック
  4. 以下の基本設定を実施:
    • インスタンスID
    • 容量
    • Redisのバージョン
    • リージョン/ゾーン

セキュリティ設定

認証設定

from google.cloud import redis_v1
client = redis_v1.CloudRedisClient()

ネットワーク設定

VPCネットワークとの接続設定が重要です:

  1. 専用のVPCを作成
  2. サブネットの設定
  3. ファイアウォールルールの追加

パフォーマンスチューニング

キャッシュ戦略

  • TTL(Time To Live)の設定
  • エビクションポリシーの選択
  • メモリ使用率の監視

トラブルシューティング

接続の問題

1. 接続タイムアウトエラー

  • 症状: Connection timed out エラーが発生
  • 一般的な原因:
    • VPCネットワークの設定ミス
    • ファイアウォールルールの不備
    • アプリケーションとMemorystoreインスタンスが異なるリージョンに存在
# 接続テストのサンプルコード
import redis
try:
    r = redis.Redis(
        host='INSTANCE_IP_ADDRESS',
        port=6379,
        socket_timeout=5
    )
    r.ping()
except redis.TimeoutError:
    print("Connection timed out")

2. 認証エラー

  • 症状: NOAUTH Authentication required エラー
  • 解決手順:
    1. IAMの権限を確認
    2. 認証情報の再設定
    3. サービスアカウントの設定確認

パフォーマンスの問題

1. レイテンシーの増加

  • 監視すべきメトリクス:

    • redis_commands_latency
    • redis_commands_duration
    • ネットワークレイテンシー
  • 対処方法:

    1. インスタンスのサイズアップ
    2. コネクションプールの最適化
    3. キャッシュヒット率の改善

2. メモリ使用率の問題

  • 症状:

    • OOM (Out of Memory) エラー
    • パフォーマンス低下
  • 解決策:

# メモリ使用率の確認
info = redis_client.info()
used_memory = info['used_memory_human']
maxmemory = info['maxmemory_human']
  1. メモリポリシーの見直し:

    CONFIG SET maxmemory-policy allkeys-lru
    
  2. キー有効期限の設定:

    EXPIRE mykey 3600  # 1時間後に期限切れ
    

複製の問題

1. レプリケーションラグ

  • モニタリング方法:

    • redis_replication_offset メトリクスの監視
    • レプリケーションヘルスチェック
  • 対処手順:

    1. ネットワーク帯域幅の確認
    2. レプリケーション設定の見直し
    3. 必要に応じてインスタンスタイプのアップグレード

2. フェイルオーバーの問題

  • 自動フェイルオーバーの確認:
    gcloud redis instances describe INSTANCE_ID \
      --region=REGION
    

システムメンテナンス

1. バックアップとリストア

  • バックアップの失敗:
    • ストレージ容量の確認
    • IAM権限の確認
    • バックアップ設定の見直し

2. バージョンアップグレード

  • アップグレード時の注意点:
    1. メンテナンスウィンドウの設定
    2. アプリケーション互換性の確認
    3. ロールバックプランの準備

モニタリングとアラート

  • 重要なメトリクス:

    • メモリ使用率
    • 接続数
    • キャッシュヒット率
    • レイテンシー
  • アラート設定:

    # Cloud Monitoring APIを使用したアラート設定
    from google.cloud import monitoring_v3
    
    client = monitoring_v3.AlertPolicyServiceClient()
    
    # メモリ使用率が90%を超えた場合のアラート
    condition = monitoring_v3.AlertPolicy.Condition(
        display_name="High Memory Usage",
        condition_threshold={
            "filter": 'metric.type="redis.googleapis.com/memory/usage"',
            "comparison": "COMPARISON_GT",
            "threshold_value": 90.0,
        }
    )
    

ベストプラクティスとTips

  1. 定期的なヘルスチェック実装:

    def health_check():
        try:
            return redis_client.ping()
        except redis.ConnectionError:
            return False
    
  2. エラーハンドリング:

    from redis.exceptions import ConnectionError, TimeoutError
    
    try:
        redis_client.set('key', 'value')
    except ConnectionError:
        # フォールバックメカニズムの実装
        pass
    except TimeoutError:
        # リトライロジックの実装
        pass
    
  3. パフォーマンス最適化:

    • パイプライン処理の活用
    • バッチ処理の実装
    • 適切なデータ構造の選択

より詳しい運用管理については、以下の書籍が参考になります:

『図解即戦力 Google Cloudのしくみと技術がこれ1冊でしっかりわかる教科書』 https://amzn.to/4djqPb0

参考資料

Back to Blog

Related Posts