csredis-in-asp.Netcore理論実戦-主従配置、哨兵モード

14849 ワード

csredis
  • GitHub https://github.com/2881099/csredis

  • githubのオープンソースプロジェクトを見て、上は本当に単純にドキュメントを使っているだけで、私のような人(菜鳥)にはあまり友好的ではないかもしれません.
    彼がターゲットにしているのはServiceStackだと知っています.Redis、最初はcsredisのみサポートしていました.Netバージョンですが、原作者はメンテナンスを継続せず、著者が使用しています.Netcoreの書き換え後、徐々に進化した1つです.Netcoreバージョンのredisドライバ、
    このクラスライブラリを使用すると、c#でredisデータベースに簡単にアクセスできます.
    低敷居、高性能、パーティション化の高級遊び方のredis-cli SDK;
    私は、公式のドキュメントに従っていくつかの例を書いて、大物は見ないで、ただ方案と学習ノートを統合します.
  • https://github.com/luoyunchong/dotnetcore-examples/blob/master/dotnet-core-redis/

  • 勉強する前にREADMEを見た.mdの内容はどうしても考え込んで、多くのキーワードは私は何の意味が分からないので、やはり理論から着手して、資料を検索して、入門資料を統合して、後でaspに話します.Netcoreでの統合と使用の例.
    歩哨モード
  • Redis哨兵(Sentine)モードhttps://www.jianshu.com/p/06ab9daf921d

  • 上記では、Redisの哨兵とは何かを説明しました.サービスの高可用性のために、1台のサーバがダウンタイムした場合、自動的に別のサーバに切り替えることができ、手動で介入する必要はありません.Redisの哨兵はRedisサーバの状態を監視するために使用され、masterがダウンタイムした場合、その中の1つのslaveを自動的にmasterに切り替え、サブスクリプションモードをパブリッシュすることで他のサーバから通知します.プロファイルを自動的に変更し、ホストを自動的に切り替えます.
    まずローカルでプライマリスレーブredisサービスを構築し、私のローカルwin 10は、redisをインストールし、6379ポートに配置し、これらのドキュメントを見ています.
    ダウンロード
    Windowsは緑色版Redisをインストールします
  • https://blog.csdn.net/ml863606/article/details/87456239

  • マスタースレーブ構成(Windows版)
    ローカルRedisマスタースレーブ構成(Windows版)、githubからzip圧縮パッケージをダウンロードし、解凍した後、フォルダを1つのディレクトリに2つコピーし、Redisサーバから2つを構成します.参考にしてください.
  • https://www.cnblogs.com/cang12138/p/9132288.html#_label0

  • 簡単なチュートリアル
    D:servicesRedis-x 64-3.2.100ディレクトリには「Windows Service Documentation.docx」というディレクトリがあります.windows-service.confファイル.有効ポートを変更できます.
    port 6380

    cmdからD:servicesRedis-x 64-3.2.100-1、必ず管理者が実行する
    #    
    redis-server --service-install redis.windows-service.conf  --service-name redis6380
    #    
    net start redis6380  

    サービスredis 6380を起動できない場合は、このサービスを削除し、再度実行します.下の参照コマンドを参照して、サービスを削除してください.
    ローカルに3つのreidsがインストールされ、彼らは異なるポートで3人の哨兵を実行しています.
    サービス・タイプ
    IP
    port
    Master Redisサービス
    localhost
    6379
    slave Redisサーバ
    localhost
    6380
    slave Redisサーバ
    localhost
    6381
    sentinel
    localhost
    26381
    sentinel
    localhost
    26379
    sentinel
    localhost
    26380
    slaveof $host $port         , redis-cli     ,    redis   host port     ,$       
    
    slaveof no one #    
    
       windows-server.conf     

    6379そのredisはmsiインストールパッケージを使用してインストールされているので、redis-cliは任意のフォルダの場所で実行できます.構成されていない場合は、D:serviceRedis-x 64-3.2.100-1ディレクトリでこれらのコマンドを実行してください.
    C:\Users\Computer>redis-cli -p 6380
    127.0.0.1:6381> slaveof 127.0.0.1 6379
    OK
    ctrl+c       。
    C:\Users\Computer>redis-cli -p 6381
    127.0.0.1:6381> slaveof 127.0.0.1 6379
    OK

    別の端末を開く
    C:\Users\Computer>redis-cli -p 6379
    127.0.0.1:6379> set a 1233
    OK
    127.0.0.1:6379> get a
    "1233"

    元の端末で得られたaの値は「1233」であり,既に同期されている.
    127.0.0.1:6381> get a
    "1233"

    リファレンスコマンド
    コンピュータ->管理->サービスとアプリケーション->サービス->サービス名を右クリックして管理します.
    #    
    net start redis6380  
    #    
    net stop redis6380  
    #    :              
    sc delete redis6380  

    管理者権限cmdからディレクトリD:servicesRedis-x 64-3.2.100まで、次のコマンドを使用できます.
  • Installing the Service:--service-install
  • redis-server --service-install redis.windows-service.conf --loglevel verbose
    redis-server --service-install redis.windows.conf  --service-name redis6380
  • Uninstalling the Service:--service-uninstall
  • redis-server --service-uninstall
  • Starting the Service:--service-start
  • redis-server --service-start
  • Stopping the Service:--service-stop
  • redis-server --service-stop
  • Naming the Service: --service-name name
  • redis-server --service-install --service-name redisService1 --port 10001
  • set port :--port 10001

  • redisバージョン、redis-cliバージョンの表示
    PS D:\service\Redis-x64-3.2.100-1> redis-server -v
    Redis server v=3.2.100 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=dd26f1f93c5130ee
    PS D:\service\Redis-x64-3.2.100-1> redis-cli -v
    redis-cli 3.2.100

    歩哨配置
    歩哨モードはRedisが提供した命令であり、独立プロセス、独立運行、歩哨の役割はredisサーバーの状態に対する監視を実現し、サービスの可用性を保証し、故障切替を実現し、人為的な介入を必要としない.
    1.構成項目
    これは通過です.msiファイルインストールのredisと.zip解凍後に起動したサービスに違いはありません.E:Program FilesRedissentinelを開きます.confは、なしでこのファイルを作成し、他の2つのredisは、portに対応する値を変更するだけで26739、26740に変更し、構成内容は以下の通りです.
    #  Sentinel       
    port 26381
    # 3s mymaster   ,   mymaster   
    sentinel monitor mymaster 127.0.0.1 6379 2
    #  10  ,mysater      ,   failover
    sentinel down-after-milliseconds mymaster 3000
    #        ,    1                  
    sentinel failover-timeout mymaster 10000

    リスナーのプライマリ・サーバを構成します.ここでsentinel monitorはモニタリングを表し、mymasterはサーバの名前を表し、カスタマイズできます.127.0.0.1はモニタリングのプライマリ・サーバを表し、6379はポートを表し、2はプライマリ・サーバが使用できないと判断した2人以上の哨兵だけがfailover操作を行うことを表します.
  • 起动哨兵
  • 前提redisサービスが開始されました.
    PS E:\Program Files\Redis> .\redis-server.exe .\sentinel.conf --sentinel
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 3.2.100 (00000000/0) 64 bit
      .-`` .-```.  ```\/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in sentinel mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26381
     |    `-._   `._    /     _.-'    |     PID: 22452
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               
    
    [22452] 07 Jul 11:47:00.111 # Sentinel ID is fc076362c0a5cc71d3c72f71c00a15b2726b2bf8
    [22452] 07 Jul 11:47:00.111 # +monitor master mymaster 127.0.0.1 6379 quorum 2
    [22452] 07 Jul 11:47:00.114 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379

    Windowsの下ではデーモンプロセス(バックグラウンドで実行可能なプログラム)がサポートされていないため、コマンドラインが閉じると、哨兵も停止し(Windows does not support daemonize.Start Redis as service)、Windowsの下でサービス(service)と呼ばれ、バックグラウンドでずっと実行することができます.
  • windowsの下でサービスの形式で歩哨を起動します
  • 管理者の実行
    E:\Program Files\Redis>redis-server --service-install --service-name sentinel sentinel.conf --sentinel
    
    D:\service\Redis-x64-3.2.100-1>redis-server --service-install --service-name sentinel-1 sentinel.conf --sentinel
    [20700] 07 Jul 12:01:21.297 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "D:\service\Redis-x64-3.2.100-1" "D:\service\Redis-x64-3.2.100-1\"
    [20700] 07 Jul 12:01:21.300 # Redis successfully installed as a service.
    
    D:\service\Redis-x64-3.2.100-2>redis-server --service-install --service-name sentinel-2 sentinel.conf --sentinel
    [15772] 07 Jul 12:01:33.942 # Granting read/write access to 'NT AUTHORITY\NetworkService' on: "D:\service\Redis-x64-3.2.100-2" "D:\service\Redis-x64-3.2.100-2\"
    [15772] 07 Jul 12:01:33.944 # Redis successfully installed as a service.

    このときD:serviceRedis-x 64-3.2.100-1sentinel.conf,歩哨は26379ポートで運転し,歩哨ID(Sentinal ID)を生成する
    sentinel myid a2e75eedaf161357fe03df490a14b4158ad3ba88

    slaveサービス6380のredis、slave 6381のredis、他の哨兵にも監視でき、それぞれ26380、26381ポートで運行される内容も生成された.
    # Generated by CONFIG REWRITE
    dir "D:\\service\\Redis-x64-3.2.100-1"
    sentinel config-epoch mymaster 0
    sentinel leader-epoch mymaster 0
    sentinel known-slave mymaster 127.0.0.1 6380
    sentinel known-slave mymaster 127.0.0.1 6381
    sentinel known-sentinel mymaster 127.0.0.1 26380 a2e75eedaf161357fe03df490a14b4158ad3ba88
    sentinel known-sentinel mymaster 127.0.0.1 26381 fc076362c0a5cc71d3c72f71c00a15b2726b2bf8
    sentinel current-epoch 0
    

    プライマリmaster redisでredisの現在の情報を表示する
    PS E:\Program Files\Redis> redis-cli -p 6379
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6381,state=online,offset=141627,lag=1
    slave1:ip=127.0.0.1,port=6380,state=online,offset=141627,lag=0
    ...

    ctrl+c終了、redis 6380情報の表示
    PS E:\Program Files\Redis> redis-cli -p 6380
    127.0.0.1:6380> info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:161451
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    ...

    高可用性テスト
    1.メインサーバMasterのシャットダウン
    6379サービスの停止
    C:\WINDOWS\system32>redis-cli -p 6379
    127.0.0.1:6379> shutdown
    not connected> 
     
    C:\WINDOWS\system32>net stop redis

    6379のsentinel_log.log、6379 redisサービスが停止した後、このログは、redisがfailover後にエラーが再試行され、switch-masterが6380に切り替えられたことを示しています.
    [240] 07 Jul 12:16:15.015 # +sdown master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.086 # +odown master mymaster 127.0.0.1 6379 #quorum 2/2
    [240] 07 Jul 12:16:15.086 # +new-epoch 1
    [240] 07 Jul 12:16:15.086 # +try-failover master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.088 # +vote-for-leader 207bd9abfe9283e32b6e0de3635e126bfdbba3b4 1
    [240] 07 Jul 12:16:15.090 # a2e75eedaf161357fe03df490a14b4158ad3ba88 voted for 207bd9abfe9283e32b6e0de3635e126bfdbba3b4 1
    [240] 07 Jul 12:16:15.091 # 14c6428bae2afc1d92b5159b0788dbba753ee85b voted for 207bd9abfe9283e32b6e0de3635e126bfdbba3b4 1
    [240] 07 Jul 12:16:15.188 # +elected-leader master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.188 # +failover-state-select-slave master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.255 # +selected-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.255 * +failover-state-send-slaveof-noone slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.338 * +failover-state-wait-promotion slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.718 # +promoted-slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.718 # +failover-state-reconf-slaves master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:15.800 * +slave-reconf-sent slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:16.217 # -odown master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:16.757 * +slave-reconf-inprog slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:16.758 * +slave-reconf-done slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:16.834 # +failover-end master mymaster 127.0.0.1 6379
    [240] 07 Jul 12:16:16.834 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
    [240] 07 Jul 12:16:16.835 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
    [240] 07 Jul 12:16:16.835 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
    [240] 07 Jul 12:16:19.853 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380

    6380 redisのサービスログは、6379のサービスが停止すると6380がプライマリノードとなり、他のノード(6379,6381)がスレーブノードとなり、D:serviceRedis-x 64-3.2.100-1redisが開く.windows-service.conf、以前に構成されていたslaveof 127.0.0.1 6379はもうありません.
    [9404] 07 Jul 12:16:15.037 # +sdown master mymaster 127.0.0.1 6379
    [9404] 07 Jul 12:16:15.089 # +new-epoch 1
    [9404] 07 Jul 12:16:15.090 # +vote-for-leader 207bd9abfe9283e32b6e0de3635e126bfdbba3b4 1
    [9404] 07 Jul 12:16:15.104 # +odown master mymaster 127.0.0.1 6379 #quorum 3/2
    [9404] 07 Jul 12:16:15.104 # Next failover delay: I will not start a failover before Sun Jul 07 12:16:35 2019
    [9404] 07 Jul 12:16:15.801 # +config-update-from sentinel 207bd9abfe9283e32b6e0de3635e126bfdbba3b4 127.0.0.1 26381 @ mymaster 127.0.0.1 6379
    [9404] 07 Jul 12:16:15.801 # +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380
    [9404] 07 Jul 12:16:15.802 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380
    [9404] 07 Jul 12:16:15.802 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380
    [9404] 07 Jul 12:16:18.812 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380

    6380の情報を表示すると、127.0.0.1の6381ポートに構成されたslaveオンラインが1つしかありません.
    redis-cli -p 6380
    127.0.0.1:6380> info replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6381,state=online,offset=119281,lag=1
    master_repl_offset:119547
    ...

    2.6379サービス再起動
    6379のサービスが開始されると、6379のサービスは6380のスレーブサーバslaveとなり、再びredis-cli-pポートを介してinfo replicationを入力して対応するサービスのノード情報を表示する
    PS E:\Program Files\Redis> redis-server --service-start
     
    C:\WINDOWS\system32>net start redis
    
    PS E:\Program Files\Redis> redis-cli -p 6380
    127.0.0.1:6380> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6379,state=online,offset=339593,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=339593,lag=1
    ...

    3.slave 6381クローズ
    6380のinfoを表示すると、ノード6379から1つしか表示されません.
    C:\WINDOWS\system32>net stop redis6381
    role:master
    connected_slaves:1
    
    PS E:\Program Files\Redis> redis-cli -p 6380
    127.0.0.1:6380> info replication
    role:master
    connected_slaves:1
    slave0:ip=127.0.0.1,port=6379,state=online,offset=329392,lag=1
    master_repl_offset:329525
    ...

    関連リンク
  • Redis哨兵(Sentine)モードhttps://www.jianshu.com/p/06ab9daf921d
  • windowsインストールグリーン版Redis-https://blog.csdn.net/ml863606/article/details/87456239
  • マスタースレーブ構成(Windows版)https://www.cnblogs.com/cang12138/p/9132288.html#_label0
  • csredis https://github.com/2881099/csredis
  • Cross-platform GUI management tool for Redis https://github.com/uglide/RedisDesktopManager
  • Redis in Windowsの3.xバージョンhttps://github.com/MicrosoftArchive/redis
  • Redis in Windowsの4.xバージョンhttps://github.com/tporadowski/redis
  • Redis in linux https://github.com/antirez/redis
  • Redis高可用性クラスタ-歩哨モード構築構成チュートリアル【Windows環境】https://aflyun.blog.csdn.net/article/details/79430105

  • linux版Redis主従構築
    みんなはこの文章を読むことを提案して、私は初めその他を参考にして、windows版を書き終わって、やっとこのリンクを見て、Redisシリーズを深く分析することについて
  • https://juejin.im/post/5b76e732f265da4376203849