Redis安装及集群部署

一.redis编译安装

下载安装包,解压后进行编译
在这里插入图片描述编辑自带安装程序的脚本文件,注释以下内容

[root@server1 redis-6.2.4]# cd utils/
[root@server1 utils]# vim install_server.sh 
[root@server1 utils]# ./install_server.sh  xs    ##执行安装脚本

在这里插入图片描述
在这里插入图片描述
安装成功后查看端口6379已经成功开启

[root@server1 utils]# netstat -antlp

在这里插入图片描述
查看etc目录下的redis配置文件也已经生成,修改配置文件,编辑配置文件
在这里插入图片描述
在这里插入图片描述启动redis

[root@server1 redis]# /etc/init.d/redis_6379 start

同样server2和server3都安装redios

二 .redis主从复制

设定server2为server1的slave.设定server1为master
编辑server上redis的配置文件,添加master

[root@server2 utils]# vim /etc/redis/6379.conf
slaveof 172.25.1.1 6379   

在这里插入图片描述
重启1和2的redis,在1中查看redis的info信息,即可查看到他有一个slave

:[root@server1 redis]# redis-cli 
127.0.0.1:6379> info

在这里插入图片描述
在server上同样添加master指定后重启,在server1上即可查看到一主两从

在这里插入图片描述此时在1中新建库“二千”,会在2和3中都能看到
在这里插入图片描述
在这里插入图片描述

三. redis哨兵模式

Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis
的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis
master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。

sentinel可以让redis实现主从复制,当一个集群中的master失效之后,sentinel可以选举出一个新的master用于自动接替master的工作,集群中的其他redis服务器自动指向新的master同步数据。一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。

1.配置sentinel

在server1主机中,配置sentinel,并复制到server2和server3中
在解压目录里复制模板文件到安装目录下,

[root@server1 ~]# cd redis-6.2.4/
[root@server1 redis-6.2.4]# cp sentinel.conf /etc/redis/
[root@server1 redis-6.2.4]# vim /etc/redis/sentinel.conf 
sentinel monitor mymaster 172.25.1.1    6379    2	##master为server1,2表示需要两票通过,这台主机就被认定宕掉
sentinel down-after-milliseconds mymaster 10000	##修改连接超时为10s

将编辑好的sentinel配置文件复制到2和3
在这里插入图片描述

2 开启哨兵模式

[root@server3 utils]# redis-sentinel /etc/redis/sentinel.conf

在这里插入图片描述

3 观察效果

此时我们打开一个新的shell,连接server1的redis,并手动关停,此时master被关闭,两台slave就会投票并选举出新的master

在这里插入图片描述可以非常清楚的看到选举新master的过程,此时master已经自动变成了3
在这里插入图片描述查看2的info信息,也能看到master已经变成了3

[root@server2 utils]# redis-cli
127.0.0.1:6379> info

在这里插入图片描述
当1重启后就会成为一个新的slave加入集群

四. redis的集群cluster

Redis集群的几个重要特征:
1.Redis 集群的分片特征在于将键空间分拆了16384个槽位,每一个节点负责其中一些槽位。

2.Redis提供一定程度的可用性,可以在某个节点宕机或者不可达的情况下继续处理命令.(只要集群中大多数Master可达、且失效的Master至少有一个Slave可达,即集群非Fail状态,集群都是可用)

3.Redis 集群中不存在中心(central)节点或者代理(proxy)节点, 集群的其中一个主要设计目标是达到线性可扩展性(linear scalability)
Redis3.0版本以上
要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点

1. 集群构建

1)、手动构建集群

在server3主机(master),重启redis,开启AOF模式,建立medis目录,并建立集群7001~7006目录,切入7001,修改配置文件,启动服务。将配置文件复制到其他几个实例目录中,根据情况做修改。

[root@server3 utils]# vim /etc/redis/6379.conf

开启AOF模式
在这里插入图片描述

[root@server3 utils]# cd /usr/local/
[root@server3 local]# mkdir redis 
[root@server3 local]# cd  redis
[root@server3 local]# mkdir 700{1..6}
[root@server3 local]# cd 7001/
[root@server3 7001]# vim redis.conf

编辑配置文件

port 7001
cluster-enabled yes					##开启集群
cluster-config-file nodes.conf		##集群配置文件
cluster-node-timeout 5000			##节点超时
appendonly yes						##开启AOF模式
daemonize yes						`##用守护线程的方式开启
[root@server3 7001]# redis-server redis.conf ##启动服务

此时我们成查看pid ,已经能看到7001
在这里插入图片描述
将配置文件复制到其他五个节点中,并修改端口号
然后启动服务
在这里插入图片描述在这里插入图片描述cd使用redis-cli来进行集群的交互,客户端连接任意一个节点,使用-c表示以集群的方式登录,-p指定端口。
[root@server3 ~]# redis-cli -c -p 7001
创建集群主从节点,–cluster-replicas 参数为数字,1表示每个主节点需要1个从节点。然后检查集群,查看集群信息。
[root@server3 redis]# 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

在这里插入图片描述输入yes后创建成功

[root@server3 redis]# redis-cli --cluster check 127.0.0.1:7001 ## 检查集群
在这里插入图片描述

[root@server3 redis]# redis-cli --cluster info 127.0.0.1:7001/ ## 集群信息查看

在这里插入图片描述

2) .脚本构建集群

[root@server3 redis]# cd
[root@server3 ~]# cd redis-6.2.4/
[root@server3 redis-6.2.4]# cd utils/create-cluster/
[root@server3 create-cluster]# ./create-cluster start

在这里插入图片描述

[root@server3 create-cluster]# ./create-cluster stop
##停止所有实例,使用手动构建的集群来做接下来的实验

2.自动切换

由cheek信息可知,主从对应关系为7006为7001的slave
在这里插入图片描述当我们手动关闭7001

[root@server3 redis]# redis-cli -c -p 7001
127.0.0.1:7001> SHUTDOWN
not connected> 
[root@server3 redis]# ps ax

再次cheek集群节点时,发现7006以经成为了master
在这里插入图片描述

3、添加节点和分片

1中相同的方式再创建两个节点,加入之前的集群
在这里插入图片描述
将7007节点加入集群中,执行check就能看到

[root@server3 7008]# redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7001
[root@server3 7008]#  redis-cli --cluster check 127.0.0.1:7002

在这里插入图片描述
7007节点加入集群中,但是并没有分配slot,所以这个节点并没有真正的开始分担集群工作,所以要进行分片。重新分片基本上意味着将哈希槽从一组节点移动到另一组节点

[root@server3 7008]# redis-cli --cluster reshard 127.0.0.1:7001

在这里插入图片描述

How many slots do you want to move (from 1 to 16384)? 1000				##移动的插槽数量
What is the receiving node ID?	##接收节点的ID
Source node #1: all	
##从哪些节点获取这些密钥,键入all以从所有其他主节点获取哈希槽,每个节点都拿出一些
Do you want to proceed with the proposed reshard plan (yes/no)? yes		##确定是否要继续重新分片,输入yes

分片完成后check可以看到,7007有1000个哈希槽,且平均来源于其他三个主节点
在这里插入图片描述
现在将7008 节点加入到7001 节点的集群中,并且指定其为7007的slave,id为要添加的主节点的ID

redis-cli --cluster add-node 127.0.0.1:7008 127.0.0.1:7001 --cluster-slave --cluster-master-id

再次check 可以看到节点添加成功
在这里插入图片描述

五. Redis+Mysql读写分离

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值