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ファイル.有効ポートを変更できます.
cmdからD:servicesRedis-x 64-3.2.100-1、必ず管理者が実行する
サービス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
6379そのredisはmsiインストールパッケージを使用してインストールされているので、redis-cliは任意のフォルダの場所で実行できます.構成されていない場合は、D:serviceRedis-x 64-3.2.100-1ディレクトリでこれらのコマンドを実行してください.
別の端末を開く
元の端末で得られたaの値は「1233」であり,既に同期されている.
リファレンスコマンド
コンピュータ->管理->サービスとアプリケーション->サービス->サービス名を右クリックして管理します.
管理者権限cmdからディレクトリD:servicesRedis-x 64-3.2.100まで、次のコマンドを使用できます. Installing the Service:--service-install Uninstalling the Service:--service-uninstall Starting the Service:--service-start Stopping the Service:--service-stop Naming the Service: --service-name name set port :--port 10001
redisバージョン、redis-cliバージョンの表示
歩哨配置
歩哨モードはRedisが提供した命令であり、独立プロセス、独立運行、歩哨の役割はredisサーバーの状態に対する監視を実現し、サービスの可用性を保証し、故障切替を実現し、人為的な介入を必要としない.
1.構成項目
これは通過です.msiファイルインストールのredisと.zip解凍後に起動したサービスに違いはありません.E:Program FilesRedissentinelを開きます.confは、なしでこのファイルを作成し、他の2つのredisは、portに対応する値を変更するだけで26739、26740に変更し、構成内容は以下の通りです.
リスナーのプライマリ・サーバを構成します.ここでsentinel monitorはモニタリングを表し、mymasterはサーバの名前を表し、カスタマイズできます.127.0.0.1はモニタリングのプライマリ・サーバを表し、6379はポートを表し、2はプライマリ・サーバが使用できないと判断した2人以上の哨兵だけがfailover操作を行うことを表します.起动哨兵 前提redisサービスが開始されました.
Windowsの下ではデーモンプロセス(バックグラウンドで実行可能なプログラム)がサポートされていないため、コマンドラインが閉じると、哨兵も停止し(Windows does not support daemonize.Start Redis as service)、Windowsの下でサービス(service)と呼ばれ、バックグラウンドでずっと実行することができます.windowsの下でサービスの形式で歩哨を起動します 管理者の実行
このときD:serviceRedis-x 64-3.2.100-1sentinel.conf,歩哨は26379ポートで運転し,歩哨ID(Sentinal ID)を生成する
slaveサービス6380のredis、slave 6381のredis、他の哨兵にも監視でき、それぞれ26380、26381ポートで運行される内容も生成された.
プライマリmaster redisでredisの現在の情報を表示する
ctrl+c終了、redis 6380情報の表示
高可用性テスト
1.メインサーバMasterのシャットダウン
6379サービスの停止
6379のsentinel_log.log、6379 redisサービスが停止した後、このログは、redisがfailover後にエラーが再試行され、switch-masterが6380に切り替えられたことを示しています.
6380 redisのサービスログは、6379のサービスが停止すると6380がプライマリノードとなり、他のノード(6379,6381)がスレーブノードとなり、D:serviceRedis-x 64-3.2.100-1redisが開く.windows-service.conf、以前に構成されていたslaveof 127.0.0.1 6379はもうありません.
6380の情報を表示すると、127.0.0.1の6381ポートに構成されたslaveオンラインが1つしかありません.
2.6379サービス再起動
6379のサービスが開始されると、6379のサービスは6380のスレーブサーバslaveとなり、再びredis-cli-pポートを介してinfo replicationを入力して対応するサービスのノード情報を表示する
3.slave 6381クローズ
6380のinfoを表示すると、ノード6379から1つしか表示されません.
関連リンク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
githubのオープンソースプロジェクトを見て、上は本当に単純にドキュメントを使っているだけで、私のような人(菜鳥)にはあまり友好的ではないかもしれません.
彼がターゲットにしているのはServiceStackだと知っています.Redis、最初はcsredisのみサポートしていました.Netバージョンですが、原作者はメンテナンスを継続せず、著者が使用しています.Netcoreの書き換え後、徐々に進化した1つです.Netcoreバージョンのredisドライバ、
このクラスライブラリを使用すると、c#でredisデータベースに簡単にアクセスできます.
低敷居、高性能、パーティション化の高級遊び方のredis-cli SDK;
私は、公式のドキュメントに従っていくつかの例を書いて、大物は見ないで、ただ方案と学習ノートを統合します.
勉強する前にREADMEを見た.mdの内容はどうしても考え込んで、多くのキーワードは私は何の意味が分からないので、やはり理論から着手して、資料を検索して、入門資料を統合して、後でaspに話します.Netcoreでの統合と使用の例.
歩哨モード
上記では、Redisの哨兵とは何かを説明しました.サービスの高可用性のために、1台のサーバがダウンタイムした場合、自動的に別のサーバに切り替えることができ、手動で介入する必要はありません.Redisの哨兵はRedisサーバの状態を監視するために使用され、masterがダウンタイムした場合、その中の1つのslaveを自動的にmasterに切り替え、サブスクリプションモードをパブリッシュすることで他のサーバから通知します.プロファイルを自動的に変更し、ホストを自動的に切り替えます.
まずローカルでプライマリスレーブredisサービスを構築し、私のローカルwin 10は、redisをインストールし、6379ポートに配置し、これらのドキュメントを見ています.
ダウンロード
Windowsは緑色版Redisをインストールします
マスタースレーブ構成(Windows版)
ローカルRedisマスタースレーブ構成(Windows版)、githubからzip圧縮パッケージをダウンロードし、解凍した後、フォルダを1つのディレクトリに2つコピーし、Redisサーバから2つを構成します.参考にしてください.
簡単なチュートリアル
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まで、次のコマンドを使用できます.
redis-server --service-install redis.windows-service.conf --loglevel verbose
redis-server --service-install redis.windows.conf --service-name redis6380
redis-server --service-uninstall
redis-server --service-start
redis-server --service-stop
redis-server --service-install --service-name redisService1 --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操作を行うことを表します.
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)と呼ばれ、バックグラウンドでずっと実行することができます.
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
...
関連リンク
linux版Redis主従構築
みんなはこの文章を読むことを提案して、私は初めその他を参考にして、windows版を書き終わって、やっとこのリンクを見て、Redisシリーズを深く分析することについて