NoSQLのRedisクラスタ構築——6台のサーバー、3台のメインサーバー、3台のスレーブサーバー
Redisクラスタ構築一、シングルノードRedisサーバによる問題 二、Redisクラスタ紹介 2.1、Redisクラスタの利点 2.2、Redisクラスタの実現方法 2.3、Redis-CRusterデータスライス 2.4、Redis-CRusterのマスターコピーモデル 三、Reidsクラスタ実験 一、単一ノードRedisサーバーによる問題単点故障 大量データ同時データ要求 を処理できない.データ損失 解決策:Redisクラスタを構築する必要があります
二、Redisクラスタの紹介 Redisクラスタは、複数のRedis間ノード間で共有するデータを提供するプログラムセット である. Redisクラスタでは、複数のkeysを処理するコマンドはサポートされていません.これは、異なるノード間でデータを移動する必要があるため、Redisのような性能に達しず、高負荷の場合、予想できないエラーを引き起こす可能性があります. Redisクラスタは、パーティション化によってある程度の可用性を提供する、実際の環境において、あるノードがダウンタイムである場合、またはそれに達しない場合、コマンド の処理を継続することができる.
2.1、Redisクラスタの優勢は、異なるノード上の にデータを自動的に分割する.クラスタ全体の一部のノードが失敗する、または到達できない場合、コマンド の処理を継続することができる.
2.2.Redisクラスタの実現方法クライアントスライス エージェントスライス サーバ側スライス 2.3.Redis-CRusterデータスライス Redisクラスタはコンシステンシhashを用いずハッシュスロット概念 を導入した. Redisクラスタは16384個のハッシュスロット を有する各keyは、CRC 16の検査後に16384を型抜きすることにより、載置溝 を決定する.クラスタの各ノードは、ハッシュスロット の一部を担当する 3ノードからなるクラスタを例1)ノードAは0から5500番のハッシュスロット2を含む)ノードBは5501から11000番のハッシュスロット3を含む)ノードCは11001から16384番のハッシュスロット を含む.は、ノード1の追加または削除をサポートする)削除ノードの追加サービスを停止する必要はない2)例えばA)ノードDを新たに追加するには、ノードA,B,Cの一部のスロットをD上のBに移動する必要がある)ノードAを削除するには、AのスロットをBおよびCノードに移動し、スロットのないAノードをクラスタから を除去する必要がある.
2.4.Redis-CRusterのマスターコピーモデルクラスタにはA,B,Cの3つのノードがあり、ノードBが失敗すると、クラスタ全体に5501-1000という範囲のスロットが欠け、 は使用できない.ノードごとに1つのスレーブノードA 1,B 1,C 1が追加され、クラスタ全体に3つのmasterノードと3つのsalveノードが構成され、ノードBが失敗すると、クラスタはB 1を新しいプライマリノードとして選択して サービスを継続する. BとB 1の両方が失敗すると、クラスタは を使用できなくなる.
三、Reidsクラスター実験
CentOS 7
master1
20.0.0.11
CentOS 7
master2
20.0.0.12
CentOS 7
master3
20.0.0.21
CentOS 7
slave1
20.0.0.22
CentOS 7
slave2
20.0.0.31
CentOS 7
slave3
20.0.0.32導入環境
6台の仮想マシンにRedisをインストールします
ここはRedisをインストールするブログのパスですここで6台のRedisにプロファイルを作成する操作
正常に起動すると、/var/lib/redis/6379/ディレクトリに2つのファイルが追加されます.1つは永続化appendonlyです.aofファイル、もう1つはノードが初めて生成を開始するnodes-6379である.confプロファイル.現在は3台のMasterで行われている操作 クラスタ を作成
二、Redisクラスタの紹介
2.1、Redisクラスタの優勢
2.2.Redisクラスタの実現方法
2.4.Redis-CRusterのマスターコピーモデル
三、Reidsクラスター実験
CentOS 7
master1
20.0.0.11
CentOS 7
master2
20.0.0.12
CentOS 7
master3
20.0.0.21
CentOS 7
slave1
20.0.0.22
CentOS 7
slave2
20.0.0.31
CentOS 7
slave3
20.0.0.32
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# hostnamectl set-hostname master1
[root@master1 ~]# yum install gcc gcc-c++ y
6台の仮想マシンにRedisをインストールします
ここはRedisをインストールするブログのパスです
[root@master1 utils]# vim /etc/redis/6379.conf
70/ # bind 127.0.0.1 #bind
89/ protected-mode no #
93/ port 6379
137/ daemonize yes #
833/ cluster-enabled yes #
841/ cluster-config-file nodes-6379.conf # (841,841 s/# //g)
847/ cluster-node-timeout 15000 #
700/ appendonly yes # aof
## 6 Redis
[root@master1 utils]# /etc/init.d/redis_6379 restart
正常に起動すると、/var/lib/redis/6379/ディレクトリに2つのファイルが追加されます.1つは永続化appendonlyです.aofファイル、もう1つはノードが初めて生成を開始するnodes-6379である.confプロファイル.
key
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
rvm, rvm
tar zvxf rvm-master.tar\(1\).gz
./install
source /etc/profile.d/rvm.sh
Ruby
rvm list known
Ruby2.4.1
rvm install 2.4.1
Ruby2.4.1
rvm use 2.4.1
Ruby2.4.1
ruby -v
Redis
gem install redis
redis-cli --cluster create 20.0.0.11:6379 20.0.0.12:6379 20.0.0.21:6379 20.0.0.22:6379 20.0.0.31:6379 20.0.0.32:6379 --cluster-replicas 1
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 20.0.0.31:6379 to 20.0.0.11:6379
Adding replica 20.0.0.32:6379 to 20.0.0.12:6379
Adding replica 20.0.0.22:6379 to 20.0.0.21:6379