一、概述
1、Redis集群是一个提供在多个Redis节点间共享数据的程序集。
2、Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误。
3、Redis集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下可继续处理命令。
二、主从复制
一、主从复制——过程
若启动一个slave进程,则它会向Master发送一个"sync_command"命令,请求同步连接。
无论是第一次连接还是重新连接,Master都会启动一个后台进程,将数据快照(RDB)保存到数据文件中(执行rdb操作),同时Master还会记录修改数据的所有命令并缓存在数据文件中。
后台进程完成缓存操作之后,Master就会向slave发送数据文件,slave端将数据。文件保存到硬盘上,然后将其加载到内存中,接着Master就会将修改数据的所有操作一并发送给slave端。若slave出现故障导致宕机,则恢复正常后会自动重新连接。
Master收到slave端的连接后,将其完整的数据文件发送给slave端,如果Mater同时收到多个slave发来的同步请求则Master会在后台启动一个进程以保存数据文件,然后将其发送给所有的slave端,确保所有的slave端都正常。
二 、搭建
实验环境:
master:192.168.238.150
slave1:192.168.238.100
slave2:192.168.238.99
安装Redis(三台服务器都需要安装)
[root@master ~]# yum -y install gcc gcc-c++ make #安转依赖环境
[root@master ~]# cd /opt
[root@master opt]# wget -p /opt http://download.redis.io/releases/redis-5.0.9.tar.gz #下载软件包
[root@master opt]# tar -zvxf download.redis.io/releases/redis-5.0.9.tar.gz #解包
[root@master redis-5.0.9]# make && make PREFIX=/usr/local/redis install
#由于Redis源码包中直接提供了Makefile 文件,所以在解压完软件包后,不用先执行./configure进行配置,可直接执行make与make install命令进行安装
[root@master redis-5.0.9]# cd utils/
[root@master utils]# ./install_server.sh
[root@master utils]# ln -s /usr/local/redis/bin/* /usr/local/bin/ #把Redis的执行文件放到环境变量目录下便于系统识别
检查服务状态
[root@master utils]# ss -natp | grep redis
LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=27577,fd=6))
修改配置文件(主从设置不一样)
##master
root@master utils]# vim /etc/redis/6379.conf #进入配置文件
第70行 bind 0.0.0.0 #修改监听地址
第137行 daemonize yes #开启守护进程
第172行 logfile /var/log/redis_6379.log #指定日志文件目录
第264行 dir /var/lib/redis/6379 #指定工作目录
第700行 appendonly yes #开启AOF持久化功能
[root@master utils]# /etc/init.d/redis_6379 restart #重启服务
##slave1和slave2
[root@slave1 utils]# vim /etc/redis/6379.conf #进入配置文件
第70行 bind 0.0.0.0 #修改监听端口
第137行 daemonize yes #开启守护进程
第172行 logfile /var/log/redis_6379.log #指定日志文件目录
第264行 dir /var/lib/redis/6379 #指定工作目录
第288行 replicaof 192.168.238.150 6379 #指定同步的master节点ip和端口(添加的配置)
第700行 appendonly yes #开启AOF持久化
[root@slave1 utils]#