单台redis往往是不可靠的,因此需要做redis集群,下面将详细介绍单Master,多Slave下的redis集群方式。
1.主从集群的原理
主从集群下数据的同步流程如下:
(1) 客户端向Master写入数据
(2) Master执行完写命令后向客户端回复OK
(3) Master向Slave同步数据
redis的主从集群可分为两种方式
slave-read-only no #Master挂掉后,Slave承担读写功能
slave-read-only yes #Master挂掉后,Slave只承担读功能,写功能失效
一种是Master挂了之后,由Slave承担起读的功能,但写失效;
另一种是Master挂了之后,Slave可以承担读写功能,但Master重启之后,Master中的数据会覆盖Slave中的数据,也就是说Master挂了之后写入Slave的数据会丢失。
解决的办法是:Master挂掉之后,在Slave执行命令:slaveof no one,启动Master时,修改配置文件redis.conf中的参数:
slaveof 127.0.0.1 6379
其中127.0.0.1是slave的IP,6379是其端口号。
这样,就可以把slave中的数据同步到Master了,并且slave和master之间的角色对调,原来的slave充当master,原来的master充当slave。
2.主从集群的安装方法
这里以一台Master,两台Slave为例.
Master: 127.0.0.1 6379
Slave01: 127.0.0.1 63791
Slave02: 127.0.0.1 63792
(1)安装两个slave
[root@zookeeper_slave_01 soft_install]# cp -r /soft_install/redis-2.8.19/ /soft_install/redis-2.8.19_slave01
[root@zookeeper_slave_01 soft_install]# cp -r /soft_install/redis-2.8.19/ /soft_install/redis-2.8.19_slave02
(2)修改slave的配置文件
[root@zookeeper_slave_01 soft_install]# vi /soft_install/redis-2.8.19_slave01/redis.conf
port 63791
pidfile /soft_install/redis-2.8.19_slave01/run/redis.pid
dir /soft_install/redis-2.8.19_slave01/db
slaveof 127.0.0.1 6379
slave-read-only no
slave01创建文件夹db
[root@zookeeper_slave_01 soft_install]#mkdir /soft_install/redis-2.8.19_slave01/db
[root@zookeeper_slave_01 soft_install]# vi /soft_install/redis-2.8.19_slave02/redis.conf
port 63792
pidfile /soft_install/redis-2.8.19_slave02/run/redis.pid
dir /soft_install/redis-2.8.19_slave02/db
slaveof 127.0.0.1 6379
slave02创建文件夹db
[root@zookeeper_slave_01 soft_install]#mkdir /soft_install/redis-2.8.19_slave02/db
(3)启动集群
启动Master
[root@zookeeper_slave_01 src]# ./redis-server ../redis.conf
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 2.8.19 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in stand alone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 2802
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._