Docker で Redis センチネル モードを構成する方法 (複数のサーバー上)

Docker で Redis センチネル モードを構成する方法 (複数のサーバー上)

序文

以前学んだ Redis は常に単一のサーバー上で実行され、サーバーに直接デプロイされていました。 Docker を使用すると設定プロセスが簡単になるという話を聞きました(実際はそうではありません)。今回は、Docker をベースにマスター 1 つ、スレーブ 1 つ、センチネル 3 つで Redis を設定しました。この記事では、データ ノード、つまりマスター ノード 1 つとスレーブ ノード 1 つの 2 つのノードを構成する方法について説明します。

状態

3 台のサーバー (セキュリティを確保するには少なくとも 3 台のセンチネルが必要) [Alibaba Cloud で数時間レンタル可能]

  • サーバー 1: 8.131.78.18
  • サーバー2: 8.131.69.106
  • サーバー3: 8.131.71.196
  • セキュリティグループ(Alibaba Cloud)でポート番号7000と17000が解放されました
  • 環境: centos8.0

Dockerをインストールする

以下の命令を1行ずつ実行します。

# 1. コンパイル環境を更新する yum -y install gcc

# 2. 上記と同じ yum -y install gcc-c++

# 3. Dockerをインストールする
# 3.1 古いバージョンをアンインストールする yum remove docker \
   dockerクライアント\
   docker-client-最新 \
   docker-common \
   docker-最新 \
   docker-最新-logrotate \
   docker-logrotate \
   dockerエンジン
# 3.2 必要なインストールパッケージをインストールする yum install -y yum-utils
# 3.3 ミラーウェアハウスを設定します。より高速な国内ミラーを使用することをお勧めします。yum-config-manager \
 --リポジトリを追加\
 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 3.4 yum パッケージ インデックスを更新します。この機能は、パッケージをローカルにキャッシュします。yum makecache 
# 3.5 docker に関連する docker-ce コミュニティバージョンをインストールします yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
# 3.6 インストール yum install docker-ce docker-ce-cli containerd.io
# 3.7 Dockerを起動する
systemctl ドッカーを起動する
# 3.8 バックグラウンドで起動するように設定する systemctl enable docker 
# 3.9 dockerバージョンを使用して成功したかどうかを確認します
# 3.10 テスト(オプション)
docker で hello-world を実行する
# 3.11 アンインストールと削除(参考のため、今回は実行していません)
yum 削除 docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker

# 4. アクセラレータを構成する sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "レジストリミラー": ["https://qdxc3615.mirror.aliyuncs.com"]
}
終了
sudo systemctlデーモンリロード
sudo systemctl dockerを再起動します

Redisのマスターノードとスレーブノードを構成する

使用するサーバーはサーバー 1 とサーバー 3 です (元々はマスターが 1 つ、スレーブが 2 つありましたが、サーバー 2 をシャットダウンしました)。

ヒント: xshell の場合、送信キーを右クリックして選択すると、すべてのセッションに入力できるため、2 回設定する必要はありません。または、scp ステートメントを使用して、構成されたファイルを他のサーバーと共有します。

# scp ローカルファイル リモートユーザー名@リモートIP:リモートフォルダ
scp redis.conf ルート@58.131.71.196:/blue/redis02

1. まず、フォルダーを作成します。ホーム パスに配置しないように注意してください。そうしないと、アクセス許可の問題によりコンテナーの実行に失敗する可能性があります。私が作成したディレクトリは /blue/redis02 で、手順は比較的簡単です。

CD /
mkdir 青 && cd 青
mkdir redis02 && cd redis02

2. 必要な環境をロードするために使用する Dockerfile を作成します。

vi Dockerファイル

# Dockerfile の内容は次のとおりです。
# ベースイメージ redis から継承する FROM redis
メンテナー blue<[email protected]>

# Dockerfile があるディレクトリ内のファイルをコンテナの /usr/local/etc/redis ディレクトリにコピーします。 COPY redis.conf /usr/local/etc/redis/redis.conf

# いくつかの環境をインストールする RUN apt-get update
apt-get install -y vimを実行します。
apt-get install procps --assume-yesを実行します。

ボリューム ["/data"]

ワークディレクトリ /etc/redis

# ポート7000を開く
エクスポーズ7000

# 設定ファイル [ "redis-server", "/usr/local/etc/redis/redis.conf"] を使用して CMD を起動します

3. 公式サイトから redis.conf をダウンロードし、次の変更を加えます。 redis.conf には、いくつかの redis 設定が含まれています。これは基本的に、マスター 1 台、スレーブ 1 台、センチネル 3 台を持つ単一マシンの redis 設定と同じです。

# bind 127.0.0.1 をコメントアウトする 
# 127.0.0.1 をバインド

ポート 7000

# ここで「はい」の場合、デーモンを起動するための設定ファイルの使用に影響します。

pidファイル /var/run/redis_7000.pid

# 次の 2 つのパスワードを設定する必要があります。パスワードは一貫している必要があります。 requirepass testmaster123
マスター認証テストマスター123

# 保護モードを変更します。これが yes の場合、外部サーバーにアクセスできなくなります。protected-mode no

# サーバー 3 については、サーバー 1 のスレーブ サーバーであることを示す文を追加する必要があります # slaveof host.machine.IP port slaveof 8.131.78.18 7000

4. 上記の設定を保存したら、次のステートメントを使用してイメージを作成できます。このプロセスには長い時間がかかるため、しばらく待つ必要があります。

# docker build -t myredis を使用する必要があります。これはより認識しやすいですが、テストしたときに成功したため、変更したくありません。この文は、Dockerfile に基づいて新しいイメージを作成します。次回直接プルできるように、倉庫にプッシュすることができます。
docker build -t テスト。

5. 次のステートメントを使用してコンテナを起動します。

# コンテナを起動します docker run -d -p 7000:7000 --name redis-test test

# 次の文は実行中のコンテナを表示します docker ps

#コンテナに入る docker exec -it redis-test /bin/bash

6. コンテナ内で次のステートメントを使用して、実行中のスレッドを表示できます。

# 実行中のスレッドを表示する ps -ef

# redisクライアントを使用してポート7000にアクセスします redis-cli -p 7000

# パスワードを入力してください auth testmaster123

# 情報の表示情報レプリケーション

# 以下はノードから返される情報です # レプリケーション
役割:スレーブ
マスターホスト:8.131.78.18
マスターポート:7000
マスターリンクステータス:アップ
マスター_最終_io_秒数_前:10
マスター同期進行中:0
スレーブ_repl_オフセット:28
スレーブ優先度:100
スレーブ読み取り専用:1
接続されたスレーブ:0
マスター返信ID:438c700922a30ebbc66ee5c89a176c426924b2a7
マスター返信ID2:0000000000000000000000000000000000000000000
マスター_repl_オフセット:28
秒_repl_offset:-1
repl_backlog_active:1
レプリケーションバックログサイズ:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:28

この時点で、マスター ノードとスレーブ ノードは正常に構成されています。

これで、Docker 構成 redis センチネル モード (複数サーバー) に関するこの記事は終了です。Docker 構成 redis センチネル モードの詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Dockerを使用してRedisクラスターを構築する方法
  • Docker ベースの Redis マスタースレーブ クラスタの実装
  • Docker 上で Redis クラスターを構築する
  • Docker を使用してスタンドアロン Pulsar とクラスター化された Redis をデプロイする方法 (開発アーティファクト)
  • Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する
  • Docker で Redis クラスターを素早く構築する方法の例
  • docker redis5.0 clusterの実装 クラスタ構築
  • Docker ベースの Redis 1 マスター、2 スレーブ、3 センチネルの実装
  • 5分でDockerを使ってRedisのクラスターモードとセンチネルモードを構築する方法を教えます

<<:  Vueカウンターの実装

>>:  MySQLのどのフィールドがインデックスに適しているかについての簡単な説明

推薦する

Win10 + Ubuntu20.04 LTS デュアルシステムブートインターフェースの美化

エフェクト表示組み込みのブートインターフェースがあまりにも醜いので、テーマをダウンロードして美しくし...

Unicodeの一般的な記号

Unicode は、世界中のすべてのテキストと記号に対応できる国際組織によって開発された文字エンコー...

nestjs における例外フィルター Exceptionfilter の具体的な使用法

Nestjs 例外フィルターといえば、非常に強力な .Net のグローバル フィルターについて触れな...

MySQL の null と not null、null と空の値の違いの詳細な説明 ''''

MySQL を長い間使用してきた多くの人は、これら 2 つのフィールド属性の概念をまだよく理解して...

Mysql5.7 で中国語の文字化けの問題を解決する

MySQL 5.7 を使用すると、Web ターミナル経由でデータベースに中国語の文字を書き込むと文字...

MySQL thread_stack 接続スレッドの最適化

MySQL は、ネットワーク経由だけでなく、名前付きパイプ経由でも接続できます。MySQL への接続...

MySQLの不合理なMaxIdleConnsにより接続が短くなる

1 背景最近、Shimo Document のオンライン ビジネスでパフォーマンスの問題が発生しまし...

Node.jsとDenoの比較

目次序文Denoとは何ですか? Node.jsとの比較建築ESモジュール依存関係の管理TypeScr...

CSSを使用して円形の波効果を実現する

モバイル デバイスでは、金額を表示するために円形の波グラフィックがよく使用されます。最初は、この効果...

JavaScriptアップロードファイル制限パラメータケースの詳細な説明

プロジェクトシナリオ: 1. アップロードファイルの制限関数: 1. フロントエンド操作による異常な...

Docker-Composeコマンドの使い方の詳しい説明

Docker コンテナはさまざまな方法で管理およびデプロイできます。 Docker コマンドを直接使...

Docker ベースの Redis 1 マスター、2 スレーブ、3 センチネルの実装

現在、Redis とコンテナについて学習中なので、Docker を使用して Redis マスタースレ...

Jira リバース プロキシを実装するための nginx について

概要: nginx リバース プロキシ jira を構成し、https を実装します。Tomcat ...

Vue プロジェクトでの支払い機能の実装 (WeChat 支払いと Alipay 支払い)

目次プロジェクトにおける一般的な支払い方法Alipay決済微信ペイプロジェクトにおける一般的な支払い...

MySQL 5.7 MGR シングルマスター決定マスターノード方式の詳細説明

当銀行のMGRは年末に開始されます。公式文書を読んだり、毎日テストを受けたりしなければなりません。毎...