Redis-集群配置

集群

  • Redis有三种集群模式

  • 主从模式

  • Sentinel模式

  • Cluster模式

  • 主从复制缺点

一旦主节点宕机,写服务无法使用,就需要手动去切换,重新选取主节点,手动设置主从关系。

  • 哨兵模式的缺点

  • 当master挂掉的时候,sentinel 会选举出来一个 master,选举的时候是没有办法去访问Redis的,会存在访问瞬断的情况;

  • 哨兵模式,对外只有master节点可以写,slave节点只能用于读。尽管Redis单节点最多支持10W的QPS,但是在电商大促的时候,写数据的压力全部在master上。

  • Redis的单节点内存不能设置过大,若数据过大在主从同步将会很慢;在节点启动的时候,时间特别长;

①、Redis主从复制

  • 什么是主从复制

主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。

  • 主从复制的作用
  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。
  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。
  • 主从复制可以分为3个阶段
  1. 连接建立阶段(即准备阶段)
  2. 数据同步阶段
  3. 命令传播阶段
  • 主从同步策略

主从刚刚连接的时候,进行全量同步;全同步结束后,进行增量同步。当然,如果有需要,slave 在任何时候都可以发起全量同步。redis 策略是,无论如何,首先会尝试进行增量同步,如不成功,要求从机进行全量同步。

单机配置

①、编写配置文件

新建redis6379.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6379.pid
port 6379
dbfilename dump6379.rdb

新建redis6380.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6380.pid
port 6380
dbfilename dump6380.rdb

新建redis6381.conf

# 修改配置文件
vim redis6379.conf

# 修改内容
include /usr/local/redis-6.2.6/redis.conf
pidfile /var/run/redis_6381.pid
port 6381
dbfilename dump6381.rdb

②、启动

# 分别启动三台redis
./redis-server ../redis6379.conf
./redis-server ../redis6380.conf
./redis-server ../redis6381.conf

③、从库设置

配从库不配主库

# slaveof <ip> <port> - ip: 主库地址,port: 主库端口
SLAVEOF 127.0.0.1 6379

④、查看主从状态

执行 slaveof 后 查看状态信息

# 查看连接信息
info replication

②、Redis哨兵模式

  • 主从切换技术

当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。

  • 哨兵概述

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。

  • 哨兵作用
  1. 集群监控:负责监控redis master和slave进程是否正常工作
  2. 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员
  3. 故障转移:如果master node挂掉了,会自动转移到slave node上
  4. 配置中心:如果故障转移发生了,通知client客户端新的master地址

哨兵搭建

①、创建哨兵

新建sentinel-26379.conf文件

其他客户端也需要配置

  • 参数:
  1. sentinel monitor mymaster 192.168.92.128 6379 2 配置的含义是:该哨兵节点监控192.168.92.128:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移。

    修改文件

    vim sentinel-26379.conf

    修改内容

    端口

    port 26379

    守护进程运行

    daemonize yes

    日志文件

    logfile “26379.log”

    监控的 主节点名称(mymaster) 主节点ip(192.168.66.11) 主节点端口(6379) 总节点的一半+1(2)

    sentinel monitor mymaster 192.168.66.11 6379 2

②、启动哨兵

# 启动哨兵
cd /.../src
./redis-sentinel ../sentinel-26379.conf

# 查看状态
./redis-cli -p 26379
info sentinel

③、Cluster模式

Redis集群是一个由多个主从节点群组成的分布式服务集群,它具有复制、高可用和分片特性。Redis的集群搭建最少需要3个master节点,我们这里搭建3个master,每个下面挂一个slave节点,总共6个Redis节点;

Cluster配置

①、配置Cluster文件

  • 修改redis.conf文件以下内容【所有客户端都要配置】

    修改redis.conf文件以下内容

    vim /…/redis.conf

    修改内容

    port 8001
    daemonize yes
    pidfile “/var/run/redis_8001.pid”

    指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据

    dir /usr/local/redis/redis-cluster/8001/

    启动集群模式

    cluster-enabled yes

    集群节点信息文件,这里800x最好和port对应上

    cluster-config-file nodes-8001.conf

    节点离线的超时时间

    cluster-node-timeout 5000

    去掉bind绑定访问ip信息

    bind 127.0.0.1

    关闭保护模式

    protected-mode no

    启动AOF文件

    appendonly yes

    如果要设置密码需要增加如下配置:

    设置redis访问密码

    requirepass itxiong

    设置集群节点间访问密码,跟上面一致

    masterauth itxiong

②、创建集群

  • 参数:
  1. -a:密码

  2. –cluster-replicas:

    • –cluster-replicas 1:表示1个master下挂1个slave;
    • –cluster-replicas 2:表示1个master下挂2个slave。

    启动

    /usr/local/redis/src/redis-cli -a redis-pw –
    cluster create --cluster-replicas 1 192.168.66.101:8001 192.168.66.101:8002 192.168.66.102:8001 192.168.66.102:8002 192.168.66.103:8001 192.168.66.103:8002

③、查看帮助命令

  • 参数:
  1. create:创建一个集群环境host1:port1 … hostN:portN

  2. call:可以执行redis命令

  3. add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port

  4. del-node:移除一个节点

  5. reshard:重新分片

  6. check:检查集群状态

    查看帮助

    src/redis‐cli --cluster help

④、验证集群

连接任意一个客户端

  • 参数:
  1. ‐a表示服务端密码

  2. ‐c表示集群模式

  3. -h指定ip地址

  4. -p表示端口号

    连接客户端

    /usr/local/redisd/src/redis-cli -a redis-pw -c -h 192.168.66.101 -p 8001

⑤、查看集群的信息

cluster info

猜你喜欢

转载自blog.csdn.net/qq_56571862/article/details/128904404
今日推荐