機械の故障、容量のボトルネック、QPSボトルネック
マスタ・スレーブ、複数のマスタ
別々の読み取りおよび書き込みを行います
データのコピーを作成します
拡張データのパフォーマンス
maskterは、複数のスレーブを持つことができます
スレーブは1つのマスタのみを持つことができます
データフローは、マスタからスレーブへの一方向であります
二つのレプリケーション構成
2.1スレーブコマンド
6380から、6379卿 6389実行上の スレーブの 127.0.0.1 6379 #非同期 slaveof誰#はコピーをキャンセルし、データが前にクリアされていません
2.2コンフィギュレーションファイル
ポートIP slaveof #構成ノードのIPアドレスとポートから はい読み取り専用スレーブ#ノードからは読み取り専用、読み書きのデータが混乱になりますので、 ' 『』 ます。mkdir -p redis1 / redis1 confに/データredis2 / redis2 confに/データredis3 / redis3 confに/データ Vimのredis.conf デーモン化NOへ PidFileオプションがredis.pid バインド0.0.0.0を 保護-MODE NO ポート6379 タイムアウト0 ログファイルredis.log dbfilename dump.rdb DIR /データ slaveof 10.0.0.101 6379 スレーブ読むオンリーはい CPのredis.conf /ホーム/ redis2 / confに/ 6379 -pドッキングウィンドウの実行:6379 --name redis_6379 -v /home/redis1/conf/redis.conf:/etc/redis/redis.conf -v /ホーム/ redis1 /データ:/データ-dのRedisのRedisサーバ/など/ Redisの/ redis.conf ドッカ6378 -pを実行:6379 --name redis_6378 -v /home/redis2/conf/redis.conf:/etc/redis/redis.conf -v /ホーム/ redis2 /データ:/データ-dのRedisのRedisサーバ/etc/redis/redis.confの 6377 -pドッキングウィンドウの実行:6379 --name redis_6377 -v -v /home/redis3/conf/redis.conf:/etc/redis/redis.conf /ホーム/ redis3 /データ:/データ-dのRedisのRedisサーバ/etc/redis/redis.confの 情報の複製 ''」
四つのトラブルシューティング
スレーブ失敗
マスターの失敗
ファイブコピーよくあるご質問
1個別の読み取りと書き込み
問題が発生することがありますコピーデータ待ち時間を、ノード障害からの古いデータを読み込みます
マスター構成の不一致から2
maxmemory矛盾:欠落したデータ
データ構造の最適化パラメータ:マスターノードが最適化されているが、最適化がノードから提供されていない、いくつかの問題があるでしょう
複製の全額を回避するために3
不可避第フルボリュームコピー、小マスタノード、低ピーク(夜間)
マスタノードの再起動(ID変更ランニング):ノードIDは、操作に一致しません
コピーには不十分なバッファを絞る:コピーバッファサイズ、rel_backlog_sizeを増やします
4回避レプリケーションの嵐
#マスター・スレーブレプリケーションの問題:
#1マスタースレーブレプリケーション、プライマリノードに障害が発生し、フェイルオーバーのニーズが行われるように、手動で転送することができます発生します。マスターとなり、スレーブの一つ聞かせて
#2マスター・スレーブ複製、マスターできるだけの書き込みデータ、および書き込み限られたストレージ容量
診断を行うことができます障害、フェイルオーバー、(実際には、プロセスである)をクライアントに通知、直接センチネルに接続されたクライアントアドレス
以上の1つのセンチネルは、問題の発見とマスターを確認しました
2リーダーとしてセンチネル選挙に触れて
スレーブとして3は、新しいマスターを選択します
4スレーブの残りの部分は、スレーブの新しいマスターになる知らせます
5からの主な変更をクライアントに通知します
6古いマスターの復活を待っていると、スレーブの新しいマスターになるために
3つの取り付け構成
1 メインスレーブノード開くように構成された 2は、主センチネルノード構成(特殊センチネルRedisの)を監視するためにオンされる 。3 であるべきである複数のマシン #構成オープンセンチネルノードモニターメイン MKDIR -p redis4 / confにredis4 /データ redis5 / confにredis5 /データredis6 / redis6データ/ confに VI sentinel.conf ポート 26379 NOをデーモン化する DIR / データが 保護された - MODE NO バインド 0.0.0.0 ログファイル" redis_sentinel.log " センチネルモニターmymaster 10.0.0.1 6379 2 センチネルダウン -after-30000ミリ秒はmymaster センチネル平行に -syncs mymaster 1 センチネルフェイルオーバー -timeout mymaster 180000 ]ドッキングウィンドウの実行 -p 26379:26379 --name redis_26379 -v /home/redis4/conf/sentinel.conf:/etc/redis/sentinel.conf -v /ホーム/ redis4 /データ:/データ-dのRedis Redisの-センチネルの/ etc / Redisの/ sentinel.conf ドッキングウィンドウの実行 26378 -p:26379 --name redis_26378 -v -v /home/redis5/conf/sentinel.conf:/etc/redis/sentinel.conf /ホーム/ redis5 /データ:/データ-dのRedis Redisの-センチネルの/ etc / Redisの/ sentinel.conf ドッカ実行 -p 26377:26379 --name redis_26377 -v /home/redis6/conf/sentinel.conf:/etc /redis/sentinel.conf -v /ホーム/ redis6 /データ:/データ-dのRedis Redisの-センチネルの/ etc / Redisの/ sentinel.conf のRedis- センチネルsentinel.conf 情報の 設定が自動検出スレーブを上書きします
四クライアント接続
インポートのRedis から redis.sentinel インポートセンチネル #の接続のSentinelサーバ(ホスト名をドメインとすることができる) #10.0.0.101:26379 センチネルセンチネル=((' 10.0.0.101 '、26379 )、 (' 10.0.0.101 '、26378 )、 (' 10.0.0.101 '、26377 ) ]、 SOCKET_TIMEOUT =。5 ) プリント(センチネル) #マスターサーバーアドレスの取得 (マスター= sentinel.discover_masterを' Mymaster ' ) 印刷(マスター) #サーバのアドレスから取得した スレーブ= sentinel.discover_slaves(' mymaster ' ) 印刷(スレーブ) #マスターサーバーを得るには、書き込み #1 '(= sentinel.master_forマスターmymaster 'SOCKET_TIMEOUT = 0.5) #w_ret = master.set(' foo 'で、'バー') # # # # # スレーブ= sentinel.slave_for(' mymaster 'SOCKET_TIMEOUT = 0.5) #r_ret = slave.get(' FOO 「) #の印刷(r_ret)
ファイブ実装の原則