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

推薦する

JDBC 接続 (MySQL への接続) の 6 ステップのサンプル コード

JDBC の 6 つのステップ: 1. ドライバーを登録する2. データベース接続を取得する3. デ...

Vue で wangeditor リッチテキスト編集を使用する際の問題

wangEditor は、JavaScript と CSS に基づいて開発された Web リッチ テ...

Windows Server 2016 リモート デスクトップ サービスの構成とライセンスのアクティブ化 (2 ユーザー)

Server 2016 のリモート デスクトップ接続のデフォルト数は 2 ユーザーです。2 人以上...

知らないかもしれない奇妙で興味深いDockerコマンド

はじめに使えるかもしれないが、あまり使われていない、シンプルで実用的なDockerコマンドをいくつか...

CentOS8でルートパスワードを素早く変更する方法

Centos8仮想マシンを起動し、上下キーを押して図1のインターフェースの最初の行を選択します。図1...

LED を使って Linux カーネルを使い始める方法を探る

目次序文LEDトリガー探索を始めるLEDデバイス登録LEDディレクトリ類推によって理解するクラスディ...

CocosCreator ユニバーサルフレームワークデザインネットワーク

目次序文Websocketの使用Websocketオブジェクトの構築Websocket ステータスW...

MySQL 8.0.15 圧縮版インストール グラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15圧縮版のインストール方法を紹介します。具体的な内容は...

MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.15 winx64 圧縮パッケージのインストールと設定方法を参考ま...

XHTML チュートリアル: 初心者のための XHTML の基礎

<br />当サイトのオリジナルコンテンツですので、転載の際は出典を123WORDPRE...

CSSのclip-pathプロパティを使用して不規則なグラフィックを表示する

clip-path CSS プロパティはクリッピングを使用して要素の表示可能領域を作成します。領域内...

Nginx で WordPress を設定する方法

以前、私は自分で WordPress を構築していましたが、当時はサードパーティの仮想ホストを使用し...

uniappのグローバル変数実装の詳細な説明

序文この記事では、uniapp グローバル変数の実装方法をいくつかまとめています。詳細な知識は、uV...

jsは水平および垂直スライダーを実現します

最近、練習プロジェクトをしていたときにスライダーを使う必要があったので、調べてみました。まず、水平ス...

複数人チャットルームを実現する js コード

この記事の例では、多人数チャットルームを実装するためのjsコードの具体的なコードを参考までに共有して...