Redis入門:Dockerを利用した Redisのレプリケーション環境を構築する

スポンサーリンク
Redis入門:Dockerを利用した Redisのレプリケーション環境を構築する 環境構築
Redis入門:Dockerを利用した Redisのレプリケーション環境を構築する
この記事は約5分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、Dockerを利用してRedisのレプリケーション環境を構築した方法についてご紹介します。

スポンサーリンク

背景

Redisでレプリケーション環境を構築する機会があったので、ローカルで検証用に構築したときの方法を備忘として残しました。

ファイル構成

下記のファイルを用意しました。

.
├── compose.yml
├── redis-replica
│   └── Dockerfile
└── redis-source
    └── Dockerfile

redis-source/Dockerfile

FROM redis:7.2.0-alpine

redis-replica/Dockerfile

FROM redis:7.2.0-alpine

compose.yml

version: '3.7'

services:

  redis-source:
    build: ./redis-source
    container_name: redis-source
    hostname: redis-source
    ports:
      - '6379:6379'
    networks:
      - net

  redis-replica:
    build: ./redis-replica
    container_name: redis-replica
    hostname: redis-replica
    ports:
      - '6380:6379'
    command: redis-server --slaveof redis-source 6379
    networks:
      - net
    depends_on:
      - redis-source

  redis-commander:
    image: rediscommander/redis-commander
    container_name: redis-commander
    environment:
      - REDIS_HOSTS=source:redis-source:6379,replica:redis-replica:6379
    ports:
      - "8081:8081"
    networks:
      - net

networks:
  net:

動作確認

下記のコマンドを実施します。

# ビルド
docker compose build
# 起動
docker compose up -d

下記のコマンドを実施します。

% docker compose exec -it redis-source redis-cli -p 6379 GET test_key
(nil)

% docker compose exec -it redis-source redis-cli -p 6379 SET test_key 1
OK

% docker compose exec -it redis-source redis-cli -p 6379 GET test_key  
"1"

ブラウザで「http://localhost:8081/」にアクセスすると、replicaにtest_keyが存在することが確認できれば成功です。

解説

このDocker Composeファイルは、複数のDockerコンテナを使用してRedisデータベースのソースとレプリカをセットアップするためのものです。以下でコードのセクションごとに説明します。

  1. version: '3.7': Docker Composeファイルのバージョンを指定しています。このファイルはDocker Composeバージョン3.7で記述されています。
  2. services: このセクションでは、各個別のDockerコンテナを定義しています。
    • redis-source: これはRedisのソースデータベースを表すコンテナです。./redis-sourceディレクトリからビルドされるイメージを使用します。コンテナ名やホスト名が指定され、ポート6379をコンテナの6379ポートにマッピングして外部からアクセスできるようにします。同じネットワーク(net)に接続されます。
    • redis-replica: これはRedisのレプリカデータベースを表すコンテナです。ソースデータベースをレプリケーションするため、redis-server --slaveof redis-source 6379 コマンドが実行されます。ソースコンテナに依存しており、依存関係が満たされると起動します。ポート6380をコンテナの6379ポートにマッピングして外部からアクセスできるようにします。
    • redis-commander: これはRedisデータベースを可視化するためのRedis Commanderというツールのコンテナです。公式のイメージを使用します。REDIS_HOSTS環境変数にソースデータベースとレプリカデータベースの情報を指定しています。ポート8081をコンテナの8081ポートにマッピングして外部からアクセスできるようにします。
  3. networks: このセクションでは、Dockerコンテナ間のネットワークを定義します。
    • net: ネットワークの名前をnetとしています。すべてのコンテナがこのネットワークに接続され、同じネットワーク内で通信できるようになります。

このコード全体では、ソースデータベースとレプリカデータベースを起動し、Redis Commanderを使用してこれらのデータベースを可視化するための環境を構築しています。コンテナ同士の通信は同じネットワークを介して行われます。

おわりに

今日は、Dockerを利用してRedisのレプリケーション環境を構築した方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました