Redisクラスタ構築およびPython操作クラスタ
8785 ワード
redis書籍を強くお勧めします<>
一.概要
1.スタンドアロンredis配備https://www.jianshu.com/p/acd3281d9074
2.redisクラスタの紹介
Redis ClusterはRedisの分散ソリューションであり、3.0リリースで正式にリリースされ、Redisの分散に関するニーズを効果的に解決しました.シングルマシンメモリ、コンカレント、トラフィックなどのボトルネックに遭遇した場合、Clusterアーキテクチャ方式を採用して負荷均衡の目的を達成することができる.
3.クラスタの原理はredisの開発と運行とメンテナンスを参照して、著者の言うのはとても良くて、見るとすぐ知っています
4.redisクラスタ機能制限
Redisクラスタは単機に対して機能的にいくつかの制限があり,開発者が事前に理解し,使用時に回避する必要がある.制限は次のとおりです. key一括操作のサポートは限られています.mset、mgetのように、現在は同じslot値を持つkeyによる一括操作のみがサポートされています.異なるslot値にマッピングされたkeyは、mget、mgetなどの操作が複数のノードに存在する可能性があるためサポートされない. keyトランザクション操作のサポートは限られています.同じ理屈では、同じノード上の複数のkeyのトランザクション操作のみがサポートされ、複数のkeyが異なるノードに分散されている場合、トランザクション機能は使用できません. keyはデータパーティションの最小粒度であるため、hash、listなどの大きなキー値オブジェクトを異なるノードにマッピングすることはできない. では、マルチデータベーススペースはサポートされていません.スタンドアロンのRedisは16個のデータベースをサポートし、クラスタモードでは1つのデータベース空間、すなわちdb 0しか使用できません. レプリケーション構造は1層のみサポート、ノードからプライマリノードのみコピー、ネストツリーレプリケーション構造 はサポートされていない.
二.redisクラスタ構築
1.ノードの準備ソースパケット を取得する.解凍 コンパイル コピー/usr/local/redis/bin下 Redisクラスタは一般に複数のノードから構成され、ノード数は少なくとも6個であり、完全で高可用性のクラスタを構成することを保証することができる.各ノードはcluster-enabled yesの構成をオンにし、Redisをクラスタモードで 実行する必要がある.まず7000ノードディレクトリを作成し、プロファイルを変更し、7001 7002 7003 7004 7005にコピーし、 を一括変更します.は7000ディレクトリに入り、プロファイル を変更します.プロファイルを変更する必要があるのは、次の です.は、7000を他の5つのディレクトリ にコピーする.ディレクトリ構造は、以下の である.は6個のノード を開く.
2.redis-tribでrbクラスタの構築
redis-trib.rbはRubyによるRedisクラスタ管理ツールである.内部では、Cluster関連コマンドを使用してクラスタの作成、チェック、スロットの移行、等化などの一般的なメンテナンス操作を簡素化し、使用前にRuby依存環境をインストールする必要があります. ruby をインストールは環境変数 に加わる. rubyインストールredisパッケージ公式サイトhttps://rubygems.org/検索redis本宝インストール3.2.1バージョン ruby環境準備完了、redis-tribを使用rb構築クラスタ表示ヘルプ redis-tribを使用する.rb create構築 構築プロセスは次のとおりです. yesが同意した後、構築実行は以下のように表示されます: 構築完了、クラスタ整合性検査
すべてのスロットがノードに割り当てられますこれでredisクラスタの構築が完了し、redisクラスタの詳細については、本宝が推奨する書籍(3回目の推奨、ハハ) を参照してください.ディレクトリ構造は、以下の である.
三.pythonオペレーションredisクラスタ操作単機redis、redis-pyインストールpip install redis推奨github 参照はクラスタを操作し、redis-py-clusterインストールpip install redis-py-clusterの使用を推奨します.http://readthedocs.org/projects/redis-py-cluster/
一.概要
1.スタンドアロンredis配備https://www.jianshu.com/p/acd3281d9074
2.redisクラスタの紹介
Redis ClusterはRedisの分散ソリューションであり、3.0リリースで正式にリリースされ、Redisの分散に関するニーズを効果的に解決しました.シングルマシンメモリ、コンカレント、トラフィックなどのボトルネックに遭遇した場合、Clusterアーキテクチャ方式を採用して負荷均衡の目的を達成することができる.
3.クラスタの原理はredisの開発と運行とメンテナンスを参照して、著者の言うのはとても良くて、見るとすぐ知っています
4.redisクラスタ機能制限
Redisクラスタは単機に対して機能的にいくつかの制限があり,開発者が事前に理解し,使用時に回避する必要がある.制限は次のとおりです.
二.redisクラスタ構築
1.ノードの準備
wget http://download.redis.io/releases/redis-3.2.11.tar.gz
tar -zxf redis-3.2.11.tar.gz
cd redis-3.2.11 && make
は、srcディレクトリの下に実行可能なファイルを作成します.redis-benchmark redis-check-aof redis-check-rdb
redis-cli redis-sentinel redis-server redis-trib.rb
mkdir -p /usr/local/redis/bin
mkdir -p /usr/local/redis/cluster
mkdir -p /usr/local/redis/cluster/7000
cd src
#
cp redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server redis-trib.rb /usr/local/redis/bin/
#
cd .. && cp redis.conf /usr/local/redis/7000
# /usr/local/redis/bin
vim /etc/profile
PATH=/usr/local/redis/bin:$PATH
source /etc/profile
cd /usr/local/redis/cluster
#
vim 7000/redis.conf
# ( )
bind 0.0.0.0
#
port 7000
#
daemonize yes
# pid
pidfile /var/run/redis_7000.pid
#
logfile "/usr/local/redis/cluster/7000/redis.log"
#
dir "/usr/local/redis/cluster/7000"
#
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
cd /usr/local/redis/cluster
cp -r 7000 7001
cp -r 7000 7002
cp -r 7000 7003
cp -r 7000 7004
cp -r 7000 7005
# sed , 7000
sed -i 's/7000/7001/g' 7001/redis.conf
sed -i 's/7000/7002/g' 7002/redis.conf
sed -i 's/7000/7003/g' 7003/redis.conf
sed -i 's/7000/7004/g' 7004/redis.conf
sed -i 's/7000/7005/g' 7005/redis.conf
yum install tree -y
[root@instance-kbjefgng cluster]# tree
.
├── 7000
│ ├── redis.conf
├── 7001
│ ├── redis.conf
├── 7002
│ ├── redis.conf
├── 7003
│ ├── redis.conf
├── 7004
│ ├── redis.conf
└── 7005
├── redis.conf
[root@instance-kbjefgng redis]# tree bin
bin
├── redis-benchmark
├── redis-check-aof
├── redis-check-rdb
├── redis-cli
├── redis-sentinel
├── redis-server
└── redis-trib.rb
redis-server 7000/redis.conf
redis-server 7001/redis.conf
redis-server 7002/redis.conf
redis-server 7003/redis.conf
redis-server 7004/redis.conf
redis-server 7005/redis.conf
2.redis-tribでrbクラスタの構築
redis-trib.rbはRubyによるRedisクラスタ管理ツールである.内部では、Cluster関連コマンドを使用してクラスタの作成、チェック、スロットの移行、等化などの一般的なメンテナンス操作を簡素化し、使用前にRuby依存環境をインストールする必要があります.
# ruby
# http://www.ruby-lang.org/en/downloads/
# , 2.4.5
wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.5.tar.gz
#
tar -zxf ruby-2.4.5.tar.gz
cd ruby-2.4.5/
./configure --prefix=/usr/local/ruby
make && make install
vim /etc/profile
PATH=/usr/local/ruby/bin:$PATH
source
# ruby gem redis
gem install redis -v 3.2.1
[root@instance-kbjefgng redis]# redis-trib.rb help
Usage: redis-trib
create host1:port1 ... hostN:portN
--replicas
check host:port
redis-trib.rb create --replicas 1 0.0.0.0:7000 0.0.0.0:7001 0.0.0.0:7002 0.0.0.0:7003 0.0.0.0:7004 0.0.0.0:7005
[root@instance-kbjefgng cluster]# redis-trib.rb create --replicas 1 0.0.0.0:7000 0.0.0.0:7001 0.0.0.0:7002 0.0.0.0:7003 0.0.0.0:7004 0.0.0.0:7005
#
>>> Creating cluster
/usr/local/ruby/lib/ruby/gems/2.4.0/gems/redis-3.2.1/lib/redis/client.rb:443: warning: constant ::Fixnum is deprecated
>>> Performing hash slots allocation on 6 nodes...
#
Using 3 masters:
0.0.0.0:7000
0.0.0.0:7001
0.0.0.0:7002
Adding replica 0.0.0.0:7003 to 0.0.0.0:7000
Adding replica 0.0.0.0:7004 to 0.0.0.0:7001
Adding replica 0.0.0.0:7005 to 0.0.0.0:7002
# , 0-16383 , master
M: 7477f892ff332ab393face782be606626fe1336d 0.0.0.0:7000
slots:0-5460 (5461 slots) master
M: 97b1cef8e9ef167158a57649af82e5f5b7c518c3 0.0.0.0:7001
slots:5461-10922 (5462 slots) master
M: 0f24de58844cb3c6ec355d4c272b122cfb601936 0.0.0.0:7002
slots:10923-16383 (5461 slots) master
S: d67c8782e7cce986fbc300a3425642046370b830 0.0.0.0:7003
replicates 7477f892ff332ab393face782be606626fe1336d
S: 26ff32fb6f241eab220722caf581df9e96d3ab23 0.0.0.0:7004
replicates 97b1cef8e9ef167158a57649af82e5f5b7c518c3
S: aa7ed81beb087d265ac7a9c72dddf9f5e35da6f3 0.0.0.0:7005
replicates 0f24de58844cb3c6ec355d4c272b122cfb601936
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join...
>>> Performing Cluster Check (using node 0.0.0.0:7000)
M: 7477f892ff332ab393face782be606626fe1336d 0.0.0.0:7000
slots:0-5460 (5461 slots) master
1 additional replica(s)
S: d67c8782e7cce986fbc300a3425642046370b830 127.0.0.1:7003
slots: (0 slots) slave
replicates 7477f892ff332ab393face782be606626fe1336d
S: 26ff32fb6f241eab220722caf581df9e96d3ab23 127.0.0.1:7004
slots: (0 slots) slave
replicates 97b1cef8e9ef167158a57649af82e5f5b7c518c3
S: aa7ed81beb087d265ac7a9c72dddf9f5e35da6f3 127.0.0.1:7005
slots: (0 slots) slave
replicates 0f24de58844cb3c6ec355d4c272b122cfb601936
M: 97b1cef8e9ef167158a57649af82e5f5b7c518c3 127.0.0.1:7001
slots:5461-10922 (5462 slots) master
1 additional replica(s)
M: 0f24de58844cb3c6ec355d4c272b122cfb601936 127.0.0.1:7002
slots:10923-16383 (5461 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
redis-trib.rb check 0.0.0.0:7000
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
すべてのスロットがノードに割り当てられます
[root@instance-kbjefgng redis]# tree cluster/
cluster/
├── 7000
│ ├── dump.rdb
│ ├── nodes-7000.conf
│ ├── redis.conf
│ └── redis.log
├── 7001
│ ├── dump.rdb
│ ├── nodes-7001.conf
│ ├── redis.conf
│ └── redis.log
├── 7002
│ ├── dump.rdb
│ ├── nodes-7002.conf
│ ├── redis.conf
│ └── redis.log
├── 7003
│ ├── dump.rdb
│ ├── nodes-7003.conf
│ ├── redis.conf
│ └── redis.log
├── 7004
│ ├── dump.rdb
│ ├── nodes-7004.conf
│ ├── redis.conf
│ └── redis.log
└── 7005
├── dump.rdb
├── nodes-7005.conf
├── redis.conf
└── redis.log
6 directories, 24 files
三.pythonオペレーションredisクラスタ
https://github.com/andymccurdy/redis-py