Rumah > php教程 > php手册 > teks badan

Redis集群|redis cluster|redis cluster in 3.0

WBOY
Lepaskan: 2016-06-06 19:35:46
asal
1714 orang telah melayarinya

redis现在网站开发中经常用到 key-value存储系统 数据类型更加丰富 能做主从,集群 在redis3.0以前要做集群需要采用proxy的方法 在3.0(不过现在还在rc版本)自身提供了cluster的方法 这里没有用常用的一致性hash的方法,而是引入了新的概念叫hashslot(哈希

redis现在网站开发中经常用到
key-value存储系统
数据类型更加丰富
能做主从,集群
在redis3.0以前要做集群需要采用proxy的方法
在3.0(不过现在还在rc版本)自身提供了cluster的方法
这里没有用常用的一致性hash的方法,而是引入了新的概念叫hash slot(哈希槽),总共16384个 Redis PHP
第一步:
安装redis3.0,安装这里就不说了
第二步:
要做redis集群,至少需要3个Master的服务器,
我先测试的是具有子节点的,那个就需要6个服务器,3个主服务器,3个从服务器
我们来按照端口的不同来进行划分,6379、6380、6381、6382、6383、6384
创建这样6个目录,每个目录里有这样两个文件:redis-server、redis.conf
redis-server是从redis的安装目录中的src里copy过来就好
redis.conf内容如下;
#======================================#
port 6379 #不同目录,这里端口对应不同
cluster-enabled yes #开启集群功能
cluster-config-file nodes.conf #节点配置文件,这个文件是服务启动时自己配置创建的
cluster-node-timeout 5000 
appendonly yes
#======================================#
那么6个服务器都配置好后则启动他们,方法如下:./redis-server  ./redis.conf
启动好以后查看一下是否都已经成功运行了 ps aux|grep redis
第三步:
创建集群
./redis-trib.rb create --replicas 1 192.168.1.25:6379 192.168.1.25:6380 192.168.1.25:6381 192.168.1.25:6382 192.168.1.25:6383 192.168.1.25:6384
这里的--replicas 1 表示每个主节点下有一个从节点

操作结果如下
>>> Creating cluster
Connecting to node 192.168.1.25:6379: OK
Connecting to node 192.168.1.25:6380: OK
Connecting to node 192.168.1.25:6381: OK
Connecting to node 192.168.1.25:6382: OK
Connecting to node 192.168.1.25:6383: OK
Connecting to node 192.168.1.25:6384: OK
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.1.25:6379
192.168.1.25:6380
192.168.1.25:6381
Adding replica 192.168.1.25:6382 to 192.168.1.25:6379
Adding replica 192.168.1.25:6383 to 192.168.1.25:6380
Adding replica 192.168.1.25:6384 to 192.168.1.25:6381
说明了将前3个服作了主节点,后3个服务作为了从节点,并且是相对应的

./redis-trib.rb是ruby程序,需要到rubygem去安装redis的包
yum install rubygems
gem install redis #如果这样不能安装就下载到本地安装吧

下面进行测试,使用redis-cli
首先登入6380这个端口的redis服务
./redis-cli -c -h 192.168.1.25 -p 6380
192.168.1.25:6380> set name andyhua.chen
退出后重新登入6379端口的redis服务
./redis-cli -c -h 192.168.1.25 -p 6379
192.168.1.25:6379> get name #如果没有集群的话,这里肯定是没有的,现在则出现如下情况
-> Redirected to slot [5798] located at 192.168.1.25:6380
"andyhua.chen"
192.168.1.25:6380> #可以看到get之后终端自动跳转到了6380端口下并取得了之前set过的name的值
Salin selepas log masuk
Redis集群|redis cluster|redis cluster in 3.0
./redis-trib.rb create --replicas 1 192.168.1.25:6379 192.168.1.25:6380 192.168.1.25:6381 192.168.1.25:6382 192.168.1.25:6383 192.168.1.25:6384
#这里的--replicas 1 表示每个主节点下有一个从节点

#分片情况如下:
NodeA:  slots:0-5460 (5461 slots) master
NodeB:  slots:5461-10922 (5462 slots) master
NodeC:  slots:10923-16383 (5461 slots) master
Salin selepas log masuk
Redis集群|redis cluster|redis cluster in 3.0
#如果不要从节点的方法如下
./redis-trib.rb create --replicas 0 192.168.1.25:6379 192.168.1.25:6380 192.168.1.25:6381

#分片情况如下:
NodeA:  slots:0-5460 (5461 slots) master
NodeB:  slots:5461-10922 (5462 slots) master
NodeC:  slots:10923-16383 (5461 slots) master
Salin selepas log masuk
Redis集群|redis cluster|redis cluster in 3.0
./redis-trib.rb check 192.168.1.25:6379
#在创建集群里redis会自动执行这样的检测,当然你也可以自己运行这个check,端口(节点)也是任一其中一个
---------------------------------------------------------------------------------
Connecting to node 192.168.1.25:6379: OK
Connecting to node 192.168.1.25:6381: OK
Connecting to node 192.168.1.25:6380: OK
>>> Performing Cluster Check (using node 192.168.1.25:6379)
M: 5dfa7d9f2dbb4ab64b71f2713538125354c88462 192.168.1.25:6379
   slots:0-5460 (5461 slots) master
   0 additional replica(s)
M: 47b1c1df820ff5e9057a526f69e9fe4fdd9800e9 192.168.1.25:6381
   slots:10923-16383 (5461 slots) master
   0 additional replica(s)
M: c97f77ebcba3f48b9da07329b0e4e2943ded88c9 192.168.1.25:6380
   slots:5461-10922 (5462 slots) master
   0 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
Salin selepas log masuk
#查看集群节点的相关信息
redis-cli -p 6379 -h 192.168.1.25 cluster nodes
-------------------------------------------------------------------------------------
47b1c1df820ff5e9057a526f69e9fe4fdd9800e9 192.168.1.25:6381 master - 0 1416900312414 3 connected 10923-16383
c97f77ebcba3f48b9da07329b0e4e2943ded88c9 192.168.1.25:6380 master - 0 1416900313439 2 connected 5461-10922
5dfa7d9f2dbb4ab64b71f2713538125354c88462 192.168.1.25:6379 myself,master - 0 0 1 connected 0-5460
--------------------------------------------------------------------------------------
#官方文档里列表参数的说明:
* Node ID
* ip:port
* flags: master, slave, myself, fail, ...
* if it is a slave, the Node ID of the master
* Time of the last pending PING still waiting for a reply.
* Time of the last PONG received.
* Configuration epoch for this node (see the Cluster specification).
* Status of the link to this node.
* Slots served...
Salin selepas log masuk
#添加节点的测试,需求:把6382这个节点作为slave添加到6379这个master节点上
#命令如下:(两个命令都可行)
./redis-trib.rb add-node --slave 192.168.1.25:6382 192.168.1.25:6379
./redis-trib.rb add-node --slave master-id 5dfa7d9f2dbb4ab64b71f2713538125354c88462 192.168.1.25:6382 192.168.1.25:6379
---------------------------------------------------------------------------------------
#检测集群节点相关信息
redis-cli -p 6379 -h 192.168.1.25 cluster nodes
---------------------------------------------------------------------------------------
c31fb6f027db72876cb36e606b93817736e0ce81 192.168.1.25:6382 slave 5dfa7d9f2dbb4ab64b71f2713538125354c88462 0 1416901290565 1 connected
47b1c1df820ff5e9057a526f69e9fe4fdd9800e9 192.168.1.25:6381 master - 0 1416901293638 3 connected 10923-16383
c97f77ebcba3f48b9da07329b0e4e2943ded88c9 192.168.1.25:6380 master - 0 1416901291590 2 connected 5461-10922
5dfa7d9f2dbb4ab64b71f2713538125354c88462 192.168.1.25:6379 myself,master - 0 0 1 connected 0-5460
#根据官方文档列表参数说明的第4行说明
#5dfa7d9f2dbb4ab64b71f2713538125354c88462就是master的NodeID
#那么我们再看6379节点的NodeID正好也是5dfa7d9f2dbb4ab64b71f2713538125354c88462
Salin selepas log masuk
#如果需要改变主从关系,比如将6383这个服务节点从master(6380)转变成master(6379),那么如下
redis-cli -p 6383 -h 192.168.1.25
192.168.1.25:6383> cluster replicate 5dfa7d9f2dbb4ab64b71f2713538125354c88462
#5dfa7d9f2dbb4ab64b71f2713538125354c88462是master(6379)的NodeID
Salin selepas log masuk
Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan