最近没多少事,就想着搭建个redis集群玩玩,毕竟听起来也是很高大上的东西,但是经过自己的断断续续的搭建,也感觉不是那么难,肯定也只是刚刚入门,搭建的东西也比较简单,并没有触及到里面更深入的内容;
因为我不是一次性搭建完成的,我是这几天下班没事时搭建的,期间掉过很多坑,所以有很多东西可能被忘记了,也请大家多多包涵;
概念:
Redis持久化保证了即使redis服务重启也不会丢失数据,因为redis服务重启后会将硬盘上持久化的数据恢复到内存中,但是当redis服务器的硬盘损坏了可能会导致数据丢失,如果通过redis的主从复制机制就可以避免这种单点故障。
Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构:Redis主从复制可以根据是否是全量分为全量同步和增量同步。
Redis主从复制的特点:
1、同一个master可以拥有多个slave。
2、master下的slave还可以接受同一架构中其它slave的连接与同步请求,实现数据的级联复制,即master->slave->slave模式;
3 、master以非阻塞的方式同步数据至slave,这将意味着master会继续处理client的读写请求;
4、slave端同步数据也可以修改为非阻塞的方式,当slave在执行新的同步时,它仍可以用旧的数据信息来提供查询
5、redis的主从复制具有可扩展性,即多个slave专门提供只读查询与数据的冗余,master端专门提供写操作,实现读写分离;
6、通过配置禁用master数据持久化机制,将其数据持久化操作交给slave完成,避免在master中要有独立的进程来完成此操作。
全量同步过程:
1:当一个从数据库启动时,会向主数据库发送sync命令,
2:主数据库接收到sync命令后会开始在后台保存快照(执行rdb操作),并用缓存区记录后续的所有写操作
3:当主服务器快照保存完成后,redis会将快照文件发送给从数据库。
4:从数据库收到快照文件后,会丢弃所有旧数据,载入收到的快照。
5: 主服务器快照发送完毕后开始向从服务器发送缓冲区中的写命令。
6: 从服务器完成对快照的载入,开始接收命令请求,并执行来自主服务器缓冲区的写命令。
增量同步过程:
1:Redis增量复制是指Slave初始化后开始正常工作时主服务器发生的写操作同步到从服务器的过程。
2:增量复制的过程主要是主服务器每执行一个写命令就会向从服务器发送相同的写命令,从服务器接收并执行收到的写命令。
一、下载安装配置redis
首先,我认为搭建redis集群最重要的两步就是:
1)使用root权限登陆,避免权限问题
2)请关闭防火墙,如果为了安全考虑你也不必关闭防火墙,在防火墙中设置6379端口为开放端口
查看防火墙状态 firewall-cmd --state 停止firewall systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.service
做完上面的这些,因为我是新装的linux,所以我还要安装 wget(yum -y install wget)、gcc(yum install gcc gcc-c++)插件;
下面就可以下载redis
请cd到你想要的下载到的包中,执行下面的命令
wget http://download.redis.io/releases/redis-4.0.9.tar.gz # 下载安装包
tar -zxvf redis-4.0.9.tar.gz # 解压安装包
cd redis-4.0.9/ # 进入到安装的目录中
make install # 安装
完美的DNF四连之后,基本上就可以了,基本上就安装完毕了,
redis-server /opt/redis-4.0.9/redis.conf # 输入启动命令,这是两个文件名
每次都输入这么长的两个文件名,实在是有点烦,不过我们可以写个sh脚本,将这两个文件名写入进去,然后每次启动时,只用启动脚本就可以了;步骤如下:
vi redis_start.sh # 创建一个 . sh结束的脚本
redis-server /opt/redis-4.0.9/redis.conf # 在空白的我文件中写入两个文件的绝对路径,这两个并不是绝对的,这个是根据你安装的路径有关
# 然后是按Esc 、 Shift+:、w q进行保存退出
sh redis_start.sh #输入命令就可以启动redis
做完这些后还是要配置redis.conf文件
vi redis.conf # 编译redis配置文件
#修改下面的文件,按顺序,有的隔的比较远
# bind 192.168.xxx.xxx #取消注释,将这个修改成该虚拟机的IP,方便在win上面使用
daemonize no #将no修改成yes,表示可后台启动
################################# REPLICATION ################################
masterauth 123456 # 在REPLICATION中,可以取消对改行代码的注释,然后设置密码,这个是可选项,
基本做完这些设置,启动完redis后就可以在win上使用刚刚搭建的redis了;
二、制作集群
然后,我们是要做集群的额,所以我们是要将做好的这个虚拟机克隆两份,做从服务器;步骤如下:
然后一直选择下一步,然后起好名字,建议以ip为名字(可以先用复制IP的下一个IP号),然后选好保存路径
然后按照下图顺序进行操作
然后我们的克隆就结束了,然后打开三个虚拟机进行修改redis.conf文件
需要强调的是:
主服务器不需要配置什么, 因为时要从服务器时刻同步主服务器的,所以只用配置从服务器
修改的属性如下:
################################# REPLICATION #################################
slaveof 192.168.xxx.xxx 6379 # 取消注释,写上主redis的bind后面的IP和ip
masterauth 123456 #如果你主redis有密码,这个也要取消,并配置上密码
配置上这些我们就基本上完成了主从配置
所以我们要下载redis-client,
wget http://download.redis.io/redis-stable.tar.gz(下载redis-cli的压缩包)
tar xvzf redis-stable.tar.gz(解压)
cd redis-stable(进入redis-stable目录)
make(安装)
sudo cp src/redis-cli /usr/local/bin/(将redis-cli拷贝到bin下,让redis-cli指令可以在任意目录下直接使用)
然后在三个虚拟机中都执行上面的命令
现在我们就配置完成了,我们可以测试下
现在主服务器上操作
然后在从服务器上获取下
看到上面的结果,我们就配置完成了!!!