ベースのドッキングウィンドウのビルドのRedis、センチネルクラスター

1.概要

Redisのクラスタは、高可用性とノード間のグループのRedisのシャーディングを達成することができます。クラスタ内のマスタと複数のスレーブノードがあります。マスターノードに障害が発生すると、スレーブノードは、新しいマスタとして選出されなければなりません。(そのクライアントの多くを含む)ただしRedisの自身が自動的に故障し、スタンバイスイッチング機能、自動フェイルオーバーを実現するために外部の監視ソリューションの必要性を検出しません。

RedisのSentinelは、高可用性ソリューションの公式推奨です。これは、Redisのクラスタノードを監視、通知、自動フェイルオーバーおよびクライアント構成ディスカバリーサービスを提供することができ、監視および管理ツールです。

2、問題が発生しました

1、ドッキングウィンドウのホストネットワーク

ドッキングウィンドウの窓のホストのネットワークを使用する場合は、MACは、(解決策を見つけることができませんでした)に有効になり、そして最終的にはCentOSの展開クラスタを使用してWindowsをあきらめていません。

図2に示すように、ホストネットワーク接続の問題を使用しないセンチネル

仮想IPにマスタから取得したネットワークのホストを使用せずに、あなたが通常の接続口となるようセンチネルノードクラスタマスターユニコムを指定できますが、プライマリノードに障害が発生したときセンチネルノードは、クラスタ内のコンテナ結果のIPが正しく接続されていないことができます。

3、ビルドプロセス

1、ディレクトリ構造

2、センチネルプロフィール

1 sentinel1.conf

#端口号
port 26379
dir /tmp
# mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败
sentinel monitor mymaster <ip> <port> 2
# 指的是超过5000秒,且没有回复,则判定主节点不可达
sentinel down-after-milliseconds mymaster 5000
# 表示在故障转移的时候最多有numslaves在同步更新新的master
sentinel parallel-syncs mymaster 1
# 故障转移超时时间
sentinel failover-timeout mymaster 5000

复制代码

2 sentinel2.conf

#端口号
port 26380
dir /tmp
# mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败
sentinel monitor mymaster <ip> <port> 2
# 指的是超过5000秒,且没有回复,则判定主节点不可达
sentinel down-after-milliseconds mymaster 5000
# 表示在故障转移的时候最多有numslaves在同步更新新的master
sentinel parallel-syncs mymaster 1
# 故障转移超时时间
sentinel failover-timeout mymaster 5000

复制代码

3 sentinel3.conf

#端口号
port 26381
dir /tmp
# mymaster:自定义集群名,2:投票数量必须2个sentinel才能判断主节点是否失败
sentinel monitor mymaster <ip> <port> 2
# 指的是超过5000秒,且没有回复,则判定主节点不可达
sentinel down-after-milliseconds mymaster 5000
# 表示在故障转移的时候最多有numslaves在同步更新新的master
sentinel parallel-syncs mymaster 1
# 故障转移超时时间
sentinel failover-timeout mymaster 5000

复制代码

3、ドッキングウィンドウ-compose.yml

version: '2'
services:
  master:
    image: redis:4.0
    restart: always
    container_name: redis-master
    #使用主机网络
    network_mode: "host"
    command: redis-server --port 16379  
   
  slave1:
    image: redis:4.0
    restart: always
    container_name: redis-slave-1
    network_mode: "host"
    # 指定端口并指定master ip 端口
    command: redis-server --port 16380 --slaveof <master ip> 16379
   
  slave2:
    image: redis:4.0
    restart: always
    container_name: redis-slave-2
    network_mode: "host"    
    command: redis-server --port 16381 --slaveof <master ip> 16379
    
  sentinel1:
    image: redis:4.0
    restart: always
    container_name: redis-sentinel-1
    network_mode: "host"
    # 指定sentinel文件位置
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    # 使用数据卷映射文件到指定sentinel位置
    volumes:
      - ./sentinel/sentinel1.conf:/usr/local/etc/redis/sentinel.conf
   
  sentinel2:
    image: redis:4.0
    restart: always
    container_name: redis-sentinel-2
    network_mode: "host"    
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel/sentinel2.conf:/usr/local/etc/redis/sentinel.conf
   
  sentinel3:
    image: redis:4.0
    restart: always
    container_name: redis-sentinel-3
    network_mode: "host"    
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    volumes:
      - ./sentinel/sentinel3.conf:/usr/local/etc/redis/sentinel.conf  
    
复制代码

4、CentOSのクラスタテスト結果を展開使用

図1に示すように、テストクラスタはsentinel1を介して接続されています

2、テストデータ同期マスタノードのサブノード

3、近景スタンバイ切り替えマスタ

センチネル通常ユニコム
16379から16381までマスターノードスイッチ

エンディング

あなたは、ホストがちょうどいくつかの完璧なウィンドウ上でテストのCentOSに入れて達成することはできません見て、昨日スタンバイスイッチのクラスタノードの後に​​起因するドッカ原因の問題は接続できないセンチネルネットワークモデルクラスタを、設定する前にドラゴンは、後に怠惰な一週間を盗みました取得。

ます。https://juejin.im/post/5d07ac98e51d4577583ddcccで再現

おすすめ

転載: blog.csdn.net/weixin_33695082/article/details/93181757