道路のJavaのアーキテクチャ - センチネルとクラスタからメイン(Redisのトピック)のRedis

  私たちは絶対にRedisの単一の場合はダウンして、スペアが存在しない、スタンドアローン、Redisのを使用して高可用性を行うことができない、私たちは、高可用性の操作ことを保証するために、クラスタのアプローチを採用することができます。

マスター・スレーブ・アーキテクチャ

  

  マスターノード2つのノードが一般的なものである(典型的には二つとすることができるA)

マスターからの作品

   あなたが習得するスレーブを設定した場合にかかわらず、これが初めてのスレーブ接続のマスターであるかどうかの、それはデータのマスターコピーにSYNCコマンド(コマンドredis2.8バージョンの前に)要求を送信します。マスターSYNCコマンドが受信された後、それが持続中に、bgsaveを介してデータの永続化RDBスナップショットファイルの最新世代になります、バックグラウンドでのマスタが受信し続けるクライアントの要求を、それがデータセットを変更することがあり、これらの要求は、メモリにキャッシュされます。永続が完了すると、マスタは、ファイルRDBスレーブに設定し、このデータを送信し、スレーブはRDBを生成した永続データを受信した後、メモリにロードされます。コマンドがスレーブに送信される前に続いて、その後メモリにキャッシュマスタの。マスタとスレーブとの間の接続が何らかの理由で切断されると、それは自動的に、次に、スレーブマスタ複数の同時接続回だけ持続リクエストではなく、一度接続を受信した場合、スレーブマスターを再接続することができこれは、スレーブの同時接続の複数の送信永続的データです。マスタとスレーブは切断し、再接続する場合は、通常、全体のデータのコピー。しかしredis2.8バージョン、マスターとスレーブの後に切断し、サポート部分レプリケーションを再接続します。

  私たちは、上記のテキストで描画することができ、我々はマスターSYNCコマンドを持って、彼らはまた、我々のクライアントのコマンドを受信し続けるんだろうか、初めてコピーの合計のための私達の奴隷は、第二は、もはや全体の量を必要とする一方であることコピーした後、私たちのデータ複製の一部に言及

データ複製部

  スタート、スレーブとマスタのバージョン2.8は、いくつかのデータコピーのネットワークに接続することができる切断して再接続することです。マスターがバッファキューデータは最新のデータをキャッシュし、そのメモリにコピーされます作成し、ネットワーク接続が失われた場合、マスターとスレーブは、インデックスのすべてのプロセスIDは、したがって、データとマスター・レプリケーションをオフセット維持します後に、スレーブのマスタ要求が記録されているインデックスデータから始め、未完成のコピーを継続します。マスター・プロセスIDが変更された場合、またはノードのデータインデックスからのバッファキューの古すぎる、もはやマスターをオフセット、それはデータの完全なコピーになります。

  それでは、私たちは実際に私たちのRedisのマスター・スレーブ・アーキテクチャを構築します。

1.まず、我々は3つの良いRedisのサーバーのインストールを準備している、小さなパートナーのインストールは、どのような私の未来のブログ見に戻って超詳述しないhttps://www.cnblogs.com/cxiaocai/p/11674716.html

2.私たちは、各テストの前に、当社のプライマリサイトから始まる、0.0.0.0をバインドするように変更127.0.0.1を結合し、おそらくライン88には、yesに何のプロテクトモードを変更し、私たちのマスターとスレーブノードの構成を変更しませんサーバー・ノードは、私たちのマスターノードに接続できるかどうか、$のRedis-CLI -h入力します(私はあなたのファイアウォールを開くことが怖い)  マスターノードIP   -p  マスターノードRedisのポートを。

[iZm5ec3zn3tzdvp7ttnnosZのRedisの-5.0.5 @ルート] ./src/redis-cli -h 47.104.129.103 -p 6379 
47.104.129.103:6379>

注意:私たちは、マスターノードとスレーブノードが通信できることを確認する必要があります

3.あなたは、私たちがノードを構成し、我々は検索接続できることを確認してくださいグローバルレプリカ読み取り専用の代わりにレプリカ読み取り専用はいおよそ326行で表し、(レプリカ読み取り専用はいに独自の検索を書くよりも少ないです)読み取り専用のノードから書き込みません。レプリカ読み取り専用はいreplicaof 47.104.129.103 6379以上に設定しました。

管理/危険なコマンド。
replicaof 47.104.129.103 6379 
レプリカ -read- のみはい
 #のレプリケーションSYNC戦略:ディスクまたはソケット。

4.スタート、マスターノードは、ノードからのデータかどうかを確認するために、スレーブノードを書き込みます。

 コンフィギュレーション、〜の上に!

センチネルアーキテクチャ

  実際には、私たちの唯一のマスター・スレーブアーキテクチャ、データの整合性を確保するが、それでも私たちの利用可能性を解決することはできません、私たちのマスターノードがダウンし、当社のサービスは利用できません。いいえ選挙メカニズムん飼育係、私たちはセンチネルアーキテクチャを見てみましょう。

Sentinelは、私たちのマスターとしてノードを選出マスターがダウンした後にするとき、彼が主導権を握るだろう、私たちのマスターはダウンタイムはありませんようにすることです。


  Sentinelは、特別なセンチネルRedisのサービスで読み書きするサービスを提供していない、主にRedisのインスタンスのノードを監視するために使用されます。マスターノードのRedisから次の歩哨歩哨アーキテクチャを見つけるための最初の時間のためのクライアント側、ダイレクトアクセスプライマリノードのRedisの上のフォローアップをすることになるとは限らないマスターノードセンチネル代理アクセスのRedisによるとき、マスタノードのRedisの変更、センチネル意志初めて認識され、クライアントに割り当てられた新しいマスター・ノードのRedisをお知らせいたします(クライアント側に公開購読ニュースセンチネルリンパ節の変更は、一般的に実現サブスクリプションがあるのRedis)

  設定するには、非常に単純である、または私たちの最後のマスター・スレーブ・アーキテクチャ、そして私たちのセンチネルクラスタを追加します。

1.私達はちょうどマスター・スレーブ・アーキテクチャを構築し終えた準備

2.三台の以上のサーバーを準備し、私たちのRedisのインストール(サーバの奇数、内部選挙を推奨)、サーバと上記マスタースレーブ間のすべての通信を必要とします

3.当社sentinel.confファイルを変更します。

はいデーモン化するために#がバックグラウンド化許可 
192.168.0.60 6379 2 mymasterセンチネルモニター私たちのRedisからの接続を設定するには、サーバーがマスター2/2の数が1を丸め表し習得を

SRC / Redisの-センチネルは、私たちのプログラムを起動sentinel.conf入力します、そして私たちのポートは26379です。注意:ここで開始すると、もはやSRC / Redisのサーバーではありません。

5.クライアントへのsrc / Redisの-CLIを入力して、情報を入力して、あなたは私たちのセンチネルの情報をチェックアウトすることができます。

  マスタースレーブに基づいて設定さもセンチネル非常にシンプルモードでは、ダウンタイムは、Redisのはダウンになり、何の選挙は行われません場合には、主の前に私たちのアーキテクチャから、私たちのマスターを構築しました私達のマスターがダウンしたときメカニズムが、私たちの警備員は、選挙の仕組みを持って、私たちの警備員は、クラスタマスターを選出するためのイニシアチブをとるし、新しいマスターである私たちのクライアントを、お知らせいたします。我々は、再起動のマスターを持っている場合でも、それはマスターノードに戻り、唯一のスレーブノードとしてではないでしょう(Redisのクラスター詳細この選挙ます)

Redisのクラスタアーキテクチャ

   私たちのセンチネルアーキテクチャは、ほとんど私たちの高可用性を実現するために行われますが、歩哨の選挙はまだ時間がかかりますが、真ん中には、クライアントの要求をブロックします私たちの選挙消費1秒(実際には、おそらく数秒、そして高い場合クライアントの要求に1秒の時間は、その要求が利用できない、と私たちは実際のノードまたは単一ノードを読んで、その後、私たちはより良い解決策を持っている数十秒)、私たちのRedisのクラスタアーキテクチャ、そして今のRedisのクラスタアーキテクチャをやっているにも非常に成熟しています。

   それが私たちの主なRedisのクラスタが少し(少し1000未満の公式は、マスタ・スレーブを推奨)の組み合わせから実際にされて、どんな小さなマスターとスレーブが私たちのRedisのデータの断片化され、私たちのRedisのクラスタになりました、マスタから各小データストレージが同じではない、内部は自身の計算規則のセットです。設定方法を見てみましょうが、簡単な私は上記のああ上に直接言及しました。

  1.コーデックをダウンロードし、相互運用性を確保するため、9サーバーを準備します。

  2.私たちはredis.confファイルを編集します。

    (1)デーモン化はい#は、おそらく136行で、開始するための背景を設定します

    (2)クラスタ対応はい#クラスタモードは、おそらく832行で、オンになっています

    (3)対応するポートで最高と800Xクラスタ設定ファイルノード-8001.conf位クラスタノード情報ファイルを見つけるためにポストを容易にします。おそらく、ライン840で

    (4)クラスタノードタイムアウト5000#タイムアウトノードは、おそらくライン846で、オフラインで5000ミリ秒です

    (5)バインド0.0.0.0#のIPは、おそらくライン69には、バインドバインドされたアクセス情報を削除します

    おそらくライン88(6)プロテクトモードなし#近い保護モード、

    (7)appendonlyはい#オープンAOF、おそらく699行

    (8)requirepass xiaocai#Redisのアクセスパスワードは、おそらく507行で、設定されています

    ルーム(9)masterauth xiaocai#おそらく293行では、上記と一致し、クラスタノードにアクセスするためのパスワードを設定

  3. 配置完成全部启动./src/redis-server redis.conf 检查是否启动成ps -ef|grep redis。我们会看到这样的信息

 这里显示cluster,说到这我们只差最后一步了。

  4.我们在任意服务器输入./src/redis-cli -a xiaocai --cluster create --cluster-replicas 2 172.31.179.185:6379 172.31.179.178:6379 172.31.179.184:6379 172.31.179.183:6379 172.31.179.180:6379 172.31.179.181:6379 172.31.179.182:6379 172.31.179.179:6379 172.31.179.177:6379命令,意思是要组建我们的集群环境了,-a后面是密码xiaocai,--cluster-replicas 2这个数字2表示我们每个主节点有几个从节点,一般来说前三个IP会设置为master,输入之后会有确认信息。我们会看到这样的信息,我们输入yes继续

   静静等待一会(时间也不会太久,时间太久的,你去检查一下网络之间互通吗),当我们出现【ok】的画面也就是成功了。

    5.我们随便找一个客户端输入./src/redis-cli -a xiaocai,进入我们的客户端,输入cluster info,就可以查看到节点信息

 我们看到cluster_known_nodes:9就是我们一共拥有多少节点,cluster_size:3就是我们拥有多少组主从架构。配置完成~!

扩展:输入cluster nodes还可以查看我们的节点关联信息。

  私達はちょうど私たちのクラスタ情報を入力したとき、私たちは、実際には、Redisのエリアクラスタを16384を見て、我々は、単一のノードで実行するコマンドを設定し、必ずしも成功しないだろう、あなたはこの別のキーを試してみてくださいすることができますストレージの私達のRedisのポイントエリアがあり、あなたはそれが店の残りの部分から小さなマスターを保存すること領域に属するキーを繰り返す必要はありません。クラスタノードを入力する場合、当社の情報エリアに戻ります。エリアは16383まで、0から測定されます。

  ここでは、今日、私たちはRedisの下で動作するJavaコードを言って次回を停止します。

 

ほとんどが公共の数、漬物技術に入る、誰もが参加することを歓迎しています

おすすめ

転載: www.cnblogs.com/cxiaocai/p/11711377.html