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のどのフィールドがインデックスに適しているかについての簡単な説明

推薦する

CSS属性のマージンの理解について話す

1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...

スキン効果を実現するJavaScript(背景の変更)

この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...

Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御

目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...

jQueryはHTML要素の非表示と表示を実装します

商品を検索するときに、すべてのブランドまたは一部のブランドを表示するTaobaoの機能を真似してみま...

CentOS8.0 で FTP サーバーをインストールして設定する方法

CentOS8.0-1905 のリリース後、FTP サーバーを CentOS の新しいバージョンに移...

MySQL における ESCAPE キーワードの使用法の詳細な説明

MySQL エスケープエスケープとは、エスケープ文字の本来の意味を意味します。エスケープ文字の目的は...

MySQL 学習のまとめ: InnoDB ストレージ エンジンのアーキテクチャ設計の予備的な理解

1. ストレージエンジン前のセクションでは、SQL 実行プランは、エグゼキュータ コンポーネントがス...

SSDストレージを有効にしたMySQLインスタンスの詳細な説明

SSDストレージを有効にしたMySQLインスタンスの詳細な説明特に OS と MySQL が同じディ...

Linux 環境に mysql5.7.36 データベースをインストールするチュートリアル

ダウンロードアドレス: https://dev.mysql.com/downloads/mysql/...

仕事の効率を上げるJS略語スキル20選

目次複数の変数を同時に宣言する場合は、1 行に短縮できます。分割代入は複数の変数に同時に値を割り当て...

https暗号化アクセス用にnginxを設定するための詳細なチュートリアル

環境: 1 CentOS Linux リリース 7.5.1804 (コア)ファイアウォールと sel...

mysql ローカルログインでポート番号を使用してログインできない問題の解決策

最近、Linux を使用してローカルにログインしていたところ、正常にログインできず、次のエラー メッ...

JavaベースのMySQLバックアップテーブル操作

コアはmysqldumpとランタイムです操作は実際にはそれほど難しくありません。バックアップ操作を実...

Blazor における CSS 分離の問題

1. 環境VS 2019 16.9.0 プレビュー 1.0 .NET SDK 5.0.100 2. ...

docker run後にコンテナがExited (0)と表示される問題を解決する

Centos7 上で openresty 用の Dockerfile を作成し、ビルドしました。 d...