Redis Linux 单机,主从同步,哨兵和集群安装

Redis 5.0.5

1. Redis Linux 安装

tar xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make

以下命令均在Redis目录下执行

修改redis.conf

vi redis.conf

设置守护进程为yes,支持后台运行
设置守护进程
修改密码
修改密码
修改bind
默认情况下,未指定bind配置指令,Redis侦听来自服务器上所有可用网络接口的连接。
也可以设置仅收听一个或多个选定的接口,在bind配置指令,后接一个或多个IP地址。

这里用于测试改成0.0.0.0
修改bind
安装目录下新建backup文件夹,修改备份文件夹和rdb备份文件名
修改rdb
开启aof,修改aof备份文件名
修改aof
启动redis,为了读取配置文件,Redis必须是以文件路径作为第一个参数开头,否则用的默认配置

src/redis-server redis.conf

启动redis
运行客户端,设值测试

src/redis-cli 

运行Redis客户端

2. 主从复制

将redis安装文件夹分发到从节点,未设置免密登陆需要输入从节点密码

scp -r /usr/local/softwares/redis/ hadoop-slave1:/usr/local/softwares/redis/
scp -r /usr/local/softwares/redis/ hadoop-slave2:/usr/local/softwares/redis/

在从节点执行命令

删除原备份文件夹,重新创建备份文件夹

rm -rf backup/
mkdir backup

从节点添加主节点配置,修改redis.conf,再启动两个从节点
修改redis.conf
在主节点设值
主测试
两个从节点也得到值
从1测试
从2测试
在客户端下输入info,可查看服务器的统计信息
查看主从复制信息

3. Redis Sentinel

首先搭建好Redis环境并可以进行主从同步

vi sentinel.conf

修改bind,关闭保护模式
修改bind
分别新建文件夹sentinel,修改工作目录
修改工作目录
配置集群中主节点的地址和主副节点的密码,密码要么一致,要么关闭验证
修改集群
哨兵程序每5秒检测一次Master是否正常
修改检测时间
这里没有把哨兵守护进程打开,是为了查看打印信息

分发哨兵配置

scp /usr/local/softwares/redis/redis-5.0.5/sentinel.conf hadoop-slave1:/usr/local/softwares/redis/redis-5.0.5/sentinel.conf
scp /usr/local/softwares/redis/redis-5.0.5/sentinel.conf hadoop-slave2:/usr/local/softwares/redis/redis-5.0.5/sentinel.conf

分别启动主从的三个Redis和哨兵

src/redis-server redis.conf
src/redis-sentinel sentinel.conf

主节点
主哨兵
从1节点
从1哨兵
从2节点
从2哨兵

使用Redis客户端连接任意一个哨兵,26379为哨兵默认端口

src/redis-cli -p 26379

输入info查看哨兵,可看到当前master为110.40
当前master
关闭master的redis,选举slave1为master,完成选举
master变更
主节点哨兵信息,主节点挂了
主1哨兵
从1哨兵信息,选举为新主节点
从1哨兵
从2哨兵信息
从2哨兵
原从1升为master,可写入
从1测试主从复制
从2可读到值
查看从2主从复制

4. Redis Cluster

4.1 创建集群

创建Redis Cluster文件夹,在一台虚拟机上启动六个redis实例,组成集群,端口为7001~7006

复制master的单机redis

mkdir redis-cluster
cd redis-cluster
cp -r ../redis-5.0.5/ redis-1

修改端口为7001
修改端口
开启集群,修改集群配置文件名称 ,修改集群超时时间

集群配置 解释
cluster-enabled <yes/no> 如果是yes,表示启用集群,否则以单例模式启动
cluster-config-file < filename> 可选,这不是一个用户可编辑的配置文件,这个文件是Redis集群节点自动持久化每次配置的改变,为了在启动的时候重新读取它。
cluster-node-timeout < milliseconds> 超时时间,集群节点不可用的最大时间。如果一个master节点不可到达超过了指定时间,则认为它失败了。注意,每一个在指定时间内不能到达大多数master节点的节点将停止接受查询请求。
cluster-slave-validity-factor < factor> 如果设置为0,则一个slave将总是尝试故障转移一个master。如果设置为一个正数,那么最大失去连接的时间是node timeout乘以这个factor。
cluster-migration-barrier < count> 一个master和slave保持连接的最小数量(即:最少与多少个slave保持连接),也就是说至少与其它多少slave保持连接的slave才有资格成为master。
cluster-require-full-coverage < yes/no> 如果设置为yes,这也是默认值,如果key space没有达到百分之多少时停止接受写请求。如果设置为no,将仍然接受查询请求,即使它只是请求部分key。

修改集群配置
修改pid
修改pid
修改logfile
修改logfile
重命名redis.conf为nodes-7001.conf

mv redis.conf nodes-7001.conf

删除并新建备份文件夹

rm –rf backup
mkdir backup

复制redis-1五份

cp -r redis-1/ redis-2
cp -r redis-1/ redis-3
cp -r redis-1/ redis-4
cp -r redis-1/ redis-5
cp -r redis-1/ redis-6

复制redis五份
修改nodes-7001.conf文件名为相应端口;在vim命令模式下,全局搜索7001,替换为相应端口

# 全局范围(%)查找7001并替换为7002,所有出现都会被替换(g)
:%s/7001/7002/g 

在集群文件夹新增启动脚本,方便快速启动

vi start-all.sh
cd redis-1
./src/redis-server nodes-7001.conf
cd ..
cd redis-2
./src/redis-server nodes-7002.conf
cd ..
cd redis-3
./src/redis-server nodes-7003.conf
cd ..
cd redis-4
./src/redis-server nodes-7004.conf
cd ..
cd redis-5
./src/redis-server nodes-7005.conf
cd ..
cd redis-6
./src/redis-server nodes-7006.conf
cd ..
chmod +x start-all.sh
./start-all.sh

运行六个redis
Redis5.0集群管理工具redis-trib.rb已经被废弃,所以不用安装ruby。当时redis-trib.rb的功能,现在已经集成到了redis-cli中,可查看使用方式。使用六个实例任意一个客户端即可。

src/redis-cli --cluster help

创建集群,会显示配置方案,再输入yes确认创建

src/redis-cli --cluster create 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 --cluster-replicas 1 -a redis

--cluster create 创建集群
--cluster-replicas 1 表示我们希望为集群中的每个主节点创建一个从节点
-a redis 密码
创建集群
连接集群

src/redis-cli -c -p 7001 -a redis

-c 使用集群方式连接,根据分片情况可完成redis实例间跳转
-p 端口,任意一个都可以连上集群
-a 密码

查看集群信息
查看集群情况
查看集群节点信息
查看集群节点
查看集群信息,包括分片情况,端口任意一个都可以

src/redis-cli --cluster check 127.0.0.1:7001 -a redis

查看集群信息
设值,根据hash,分片存储
设值
查看集群信息

4.2 扩容

复制7007,7008
新增两个节点
将7007作为master添加到集群中

src/redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001 -a redis

将7008作为7007的slave,需要指定7007的nodeid

src/redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id e2860a1e75b4b47ef89ab54ebb19ce495a00b992 -a redis

查看集群节点
重新分区,端口任意一个都可以

src/redis-cli --cluster reshard 127.0.0.1:7003 -a redis

接收方指定为是7007的节点id,提供方可指定具体节点id或者所有节点
节点重新分区
7007接收了7001,7002,7003的分片
重新分区成功

4.3 缩容

del-node后面的ip:port只要是cluster中有效节点即可,最后一个参数为目标节点的id

只有slave节点和空的master节点可以删除,如果master非空,先用reshard把上面的slot移动到其它node后再删除,如果有一组master-slave节点,将master上所有slot移到其它节点,然后将master删除,剩下的slave会另寻他主,变成其它master的slave。

现在打算删除7007,让7007有key
设值

src/redis-cli --cluster del-node 127.0.0.1:7007 e2860a1e75b4b47ef89ab54ebb19ce495a00b992 -a redis

master非空的话,删除报如下错误:
删除节点
直接删除7007会报错,所有需要重新分区,将7007分区给其他master

这里将7007的1000 slots分给7001
重新分区
重新分区成功
7008成了7001的slave
在这里插入图片描述
成功删除7007
在这里插入图片描述
删除7008

src/redis-cli --cluster del-node 127.0.0.1:7008 dde8c62d94db3162ad3d2dd75801ec5923f0c0c5 -a redis

在这里插入图片描述
可使用kill关闭集群,重新启动时不需要重新创建集群,直接运行 start-all.sh 即可

参考:
Redis中文官网 下载
Linux安装redis和部署
Redis 的主从同步,及两种高可用方式
Redis进阶实践之十 Redis哨兵集群模式
Redis中文官网 Redis 集群教程
redis集群搭建(非常详细,适合新手)
Redis 学习笔记4: Redis 3.2.1 集群搭建
redis 5.0.2 搭建集群
关于在vim中的查找和替换

发布了57 篇原创文章 · 获赞 11 · 访问量 9859

猜你喜欢

转载自blog.csdn.net/qq_36160730/article/details/103508543