記事のディレクトリ
Redisの3種の方法を群れ、愚かな教えていません!
redis集群有三种方式:主从复制,哨兵,集群(master-cluster)
本明細書での便宜のために、ウィンドウプレゼンテーション、シミュレートされたクラスタモードの例を開くための機械で実施、構成にほとんど差があると純粋動作の態様のために、Linux上に配置されました。
ノートにマスタースレーブ構成ポイントをRedisの
首先不管哪一种的方式,版本必须一致。
存储数据方式需要一致
1 Redisのマスタースレーブモードの設定
序文
主従関係、それは単に状況からの主な内容から基本的に同じことを達成するように、メインライブラリー、ライブラリコンテンツの非同期レプリケーション・マスター・データベースの対象となります。
前者が後者には、ノード(スレーブ)から呼び出され、マスターノード(マスター)と呼ばれ、複製されたデータは、ノードからマスタによってノードに一方向です。
数据库分为两类,Master数据库和Slave数据库。
Redisのからマスターモードの設定
解凍インストーラは、(私が持っている、Linuxの基本的に、窓のため、ここでの例と同じ複数のサーバー、代わりにマルチマスタとスレーブマシンの一台のマシン上でシミュレートされた複数のインスタンス)の複製の2つ以上のコピーをRedisのありません
6380これは、6381ノードであるマスタノードであります
まず、設定ファイル(redis.windows.conf)を変更
名所は6380ポートを変更することで6381ノードからであるマスターノードであり、
-
PIDファイルへの新しいパスを指定します(ない窓の下)
pidファイル/var/run/redis/redis_6380.pid
- 新しいポート番号を指定します(変更します)
ポート6380
- 新しいログファイルのパスを指定します。
ログファイル/var/log/redis/redis_6380.log
- 新しいファイルのパスを指定します。
dbfilename dump_6380.rdb
あなたは、ログとデータベースファイルを配置することはできません設定することができます
設定マスタ - スレーブ構成(redis.windows.conf)
次のようにノードから6389は、設定します
slaveof 127.0.0.1 6380
IPとポートのマスターノード
masterauth admin
configureにマスターノードのパスワード、無ではないのconfigure
テストの保存を開始
その他の設定パラメータ:
*slaveof *masterauth slave-serve-stale-data yes 主节点出问题时,是否使用本机数据提供服务 slave-read-only yes 从节点是 只读的 *repl-diskless-sync no 快照先存于磁盘,再发送给从节点 no, Disk-backed, Diskless 新的从节点或某较长时间未能与主节点进行同步的从节点重新与主节点通信,需要做“full synchronization".复制代码
起動遅延時間をコピーする前に、
repl-diskless-sync-delay 5 repl-ping-slave-period 10 *repl-timeout 60 repl-disable-tcp-nodelay no repl-backlog-size 1mb复制代码
デフォルトの優先度
スレーブ優先度100
優先コピークラスタは、プライマリノードに障害が発生し、予備選挙センチネルノード・アプリケーション・シナリオを使用して、優先順位低い数値が高いほど、0手段が選挙に参加しません。
min-slaves-to-write 3:主节点仅允许其能够通信的从节点数量大于等于此处的值时接受写操作; min-slaves-max-lag 10:从节点延迟时长超出此处指定的时长时,主节点会拒绝写入操作;复制代码
図2は、(両方のマスターセンチネルから)センチネルモデルのRedis
序文
障害が発生した場合、マスタ・スレーブモード、プライマリ・データベースでは、ライブラリは、メインライブラリから転送することができ、我々はRedisのモニターに必要なこの時間は、あなたはセンチネル機構のRedisを使用する必要があります。
センチネルは、マスタースレーブモードに基づいて構築されています
センチネルモードはRedisのある2.x
、リリースを3.x
私たちは通常、Redisのクラスタを使用する時のバージョンcluster
大概配置步骤如下图
Redisのセンチネルモード
センチネルモード
ここでは、(から)マスターノード(マスター)と1子を使用します
マスターノードモードからセンチネルノードの使用を監視し、メインハングアップした場合、ライブラリは自動的にメインライブラリーが回復を待って、マスターノードからのアップグレード、自動的にライブラリからの主なライブラリとなります。
ノードベースのライブラリーからのアップグレードあなたがハングアップした場合でも、この時間は、マスターノードから、この時間になると、この問題は、我々は一般的に、マスター・スレーブ構成を使用する主なライブラリは変更されませんライブラリは見張りモードを実行され、互いに高可用性を実現するために、互いを監視。
哨兵是用来监控主从数据库的,当master挂掉后选择一个salve当做master。
設定センチネル
redis 主 port6380 Sentinel(哨兵端口)26380
RedisのWindows版としてではないSentinel.conf
、それをファイルのRedisにファイルを作成します
マスター・サービス6380
からのセンチネルノードモニタ6381
# 当前Sentinel服务运行的端口port 26380#mastersentinel monitor master 127.0.0.1 6381 1sentinel down-after-milliseconds master 5000sentinel failover-timeout master 180000sentinel parallel-syncs master 1复制代码
ノードからの6381
主なサービスをリッスンセンチネル6380
# 当前Sentinel服务运行的端口port 26381# Sentinel去监视一个名为mymaster的主redis实例,# 这个主实例的IP地址为本机地址127.0.0.1,端口号为6379,# 而将这个主实例判断为失效至少需要2个 Sentinel进程的同意,# 只要同意Sentinel的数量不达标,自动failover就不会执行 # 这个一定设置为 no 或者这里不设置 需要在哨兵中关闭保护模式。# protected-mode no# 指定了Sentinel认为Redis实例已经失效所需的毫秒数。# 当 实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。# 只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才会被标记为客观下线,这时自动故障迁移才会执行sentinel monitor mymaster 127.0.0.1 6380 1# 指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长sentinel down-after-milliseconds mymaster 5000# 如果在该时间(ms)内未能完成failover操作,则认为该failover失败sentinel failover-timeout mymaster 10000 复制代码
スタートのRedis
redis-server.exe redis.windows.conf -h 127.0.0.1 -p 6379
スタートセンチネル
redis-server.exe sentinel.conf --sentinel
ストップ6380マスターノードチェックは、マスターノードのノード6381の台頭から見ることができます
6381センチネルで見ることができます
マスターノードを開始した6380では、ノードから6380に、マスタノード6380を見ることができます
センチネル6380で見ることができます
一主一从两哨兵的目的是
主库挂了从升级为主库,原来主库恢复了之后成为从库
3 Redisのクラスター・エディション
レディ
ダウンロードしてインストールRedisの
成功したインストールファイルのRedisの後
Redis只有3.0之后的版本才有集群
redis的哨兵模式基本已经可以实现高可用,读写分离 ,但是在这种模式下每台redis服务器都存储相同的数据,很浪费内存,所以在redis3.0上加入了cluster模式,实现的redis的分布式存储,也就是说每台redis节点上存储不同的内容。
コンフィギュレーション・ファイルredis.windows.confを変更
変更内容
port 7001//修改为与当前文件夹名字一样的端口号appendonly yes //指定是否在每次更新操作后进行日志记录,Redis在默认情况下是异步的把数据写入磁盘,如果不开启,可能会在断电时导致一段时间内的数据丢失。yes表示:存储方式,aof,将写操作记录保存到日志中cluster-enabled yes //开启集群模式cluster-config-file nodes-7001.conf //保存节点配置,自动创建,自动更新(建议命名时加上端口号)cluster-node-timeout 15000 //集群超时时间,节点超过这个时间没反应就断定是宕机复制代码
そして、7001 Redisのファイル、あらゆる種類7002 7006 7003 ----コピーにコピーします!
Redis集群至少需要3个master节点,所以现在总共有6个节点,就只能是1master对应1slave这种方式。
次に、各7001開く - redis.windows.confファイルポートと、クラスタ設定ファイルのファイルビットの7006を、ここでは対応するポート7001のための直接交換をオープンすることをお勧めします(グローバル各redis.windows.confファイルを置き換えます)
そして、ブートbatファイルの下で、各ノードのファイルを作成します
startbat.bat
title redis redis-server.exe redis.windows.conf复制代码
如下图所示
その後、各クリックで起動します
ルビーをダウンロードしてインストール
ダウンロード:ダウンロードした後、インストールdl.bintray.com/oneclick/ru ...次へ]をダブルクリックして[すべて選択をフック。
RubyのドライバRedisの-xx.gemをRedisのダウンロードとインストール
お使いのバージョンのRedisに応じてダウンロード
Rubyのインストールディレクトリにダウンロードした後、
コマンドボックスを開くためにcmdをコマンドを実行しgem install --local C:\Ruby22-x64\redis-3.2.2.gem
、以下の情報を説明した構成が成功した表示されます
クラスタスクリプトのRedis-トリビュタリをインストールするには
ダウンロードはraw.githubusercontent.com/antirez/red ...
またはBaiduのクラウドへのリンク:pan.baidu.com/s/1kOZs9f7o ...抽出コード:vdhf
ルートディレクトリのクラスタのRedisにファイルをダウンロードした後、
クラスタを起動
最初の
7001--7006すべてのRedisを起動します(または、すべてのクラスタノードにSTART.BATを起動しない)に関係なく、あなただけのRedisを開始することができますどのような方法ここに。
それから
ビルドスクリプトの実行CMDクラスタのオープンクラスタの作成を開始するのRedisを-trib.rb
ルビーはRedisの-trib.rb 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --replicas作成します
复制代码
replicas 1
1
マスタから比データを示し、割合を表し、ここで三主三从
、それは1
中の各クラスタの説明
あなたは、yesと入力し、より詳細な情報を印刷するかどうかを尋ねられたときに、クラスタの中央上の開始は、その後のRedis-TRIBは、各ノードが相互に通信を開始できるようにするには、このクラスタ構成の間になるとスクリプトを作成します。
多くのログプリントアウト中途半端
テスト
7001のテストデータライブラリを追加し、その上に他のライブラリのクエリデータの同期は成功を示しています。
アロケーション戦略
Redisのクラスタデータ配分方針
データに割り当てられたハッシュ(ハッシュ・スロット)と呼ばれる溝の方法により、デフォルトで割り当てられたクラスタ16384スロット、3つのノードが想定されるスロット間隔であるRedisの
アロケーション戦略
Redisのクラスタデータ配分方針
データに割り当てられたハッシュ(ハッシュ・スロット)と呼ばれる溝の方法により、デフォルトで割り当てられたクラスタ16384スロット、3つのノードが想定されるスロット間隔であるRedisの
4 Redisのクラスタノードを動的に追加または削除
クラスタが動的にノードを増やすか、削除するのRedis
序文
まず、我々は7007と7008(上記のように構成されてい7001-- 7006クラスタポート)を追加するには、ここに新しいノードを追加する必要があります
プロファイル情報の一部を変更し、クラスタ構成を参照してください。
次いで、対応するノードを起動します
クラスタにノードを追加します。
127.0.0.1:7007は、新しいノードであります
127.0.0.1:7001は既に新しいクラスタノード(これは容易に知られているクラスタ・ノードを作成することができていますip : port
)
redis-trib.rb add-node 127.0.0.1:7007 127.0.0.1:7001
7007は、クラスタに追加します
新しいノードを見ます
redis-cli -c -p 7001 cluster nodes
新しいノードの追加により、新しいノードがマスターノードまたはスレーブノードになることができます。
スロットを分配ハッシュ(マスタノードとなります)
新しいノードの内部にいくつかのハッシュスロットクラスタを移動する使用Redisの-トリビュタリプログラムは、新しいノードが本当のマスターノードになります
redis-trib.rb reshard 127.0.0.1:7001
このシステムは、移動するために私たちを促し、ここで200を移動するハッシュスロット番号情報を返します。
次に、これらのハッシュスロットを指定する必要がどの節転移へ
もちろん、それは新しいノードに転送されます
私達はちょうど新しいノードIDを入力しました
選択モードの選択溝
入力はall
、すべてのマスターノードから転送されたランダムを表す丸いスロット200と、ハッシュを入力してyes
、ハッシュRedisのクラスタは、溝を分配始めます。
入力は、done
新しいノードにプライマリノードに割り当てられた割り当てられたスロットを表し..
ランダムに選択されたスロットを印刷
割り当てられたyesrを入力します。
新しいプライマリノードを見ます
割り当て成功
スレーブノードを追加します
クラスタに追加する7008
redis-trib.rb add-node 127.0.0.1:7008 127.0.0.1:7006
ビュー
7008は、ノードから7007になった追加
7008クライアントログイン
ディストリビューションノードを実行します
cluster replicate fccadebeb5b769bd084369e5cbe391979fb53b40
fccadebeb5b769bd084369e5cbe391979fb53b40
7007は、ノードIDであります
チェックノード構成
[ノードの削除
マスターノードを削除します。
まず、ハッシュスロットがノード内の他のノードに転送しなければならない、次のコマンド
redis-trib.rb reshard 127.0.0.1:7007
私たちが移動する必要があるハッシュスロットの先端数?
输入数字即可
IDが受け入れタンクノードを選択しますか?
找一个主节点接受哈希槽即可
データソースのスロットを選択しますか?
输入需要清除的节点ID即可
最後の入力 done
削除分布
ビューのノード情報
7007には、ハッシュスロットを有していません
最後のノードを削除するには、[削除]を使用します
redis-trib.rb del-node 127.0.0.1:7007 ID
IDが7007のノードIDであります
ビューのノード情報
7007已经被成功删除
ノードから削除
redis-trib.rb del-node 127.0.0.1:7008 ID
IDが7008のノードIDであります
ビューノード
7008ノードからのNO有します
私の関心
押して、二次元コード
あなたがこの記事を楽しんだら、のような、楽しみ、見ています。