Redis集群环境搭建

        Redis往往是项目中非常重要的一环,Redis的宕机对服务会产生可怕的影响。就算服务一直正常使用,单台服务也是有存储上限的。如果一台Redis服务的存储量超过20G。保存和查询压力也会给Redis带来很大的压力。所以在一开始搭建Redis的时候,往往会选择对Redis进行集群部署。本人搭建的Redis集群环境是一主二从,一共3个Redis实例。但是为了防止主节点宕机导致Redis无法写的情况,我们使用哨兵模式来预防,以下是我搭建过程的记录。

1. Redis集群环境一主二从的搭建

        由于服务器的缘故,我的搭建在同一台服务器上,根据不同的IP来模拟集群环境。集群环境的作用主要有一下几方面

  • 数据冗余
  • 故障恢复
  • 负载均衡
  • 服务高可用

其特点是:数据的复制是单向的,只能由主机到从机,主机以写为主,从机以读为主,在默认的情况下。Redis启动后都是主节点,主节点可以存在0个或者1个,从节点可以有0个或者多个。先查询下之前启动的Redis信息

# info replication 查看当前库的信息
127.0.0.1:6597> info replication
# Replication
role:master # 表示当前Redis实例是主节点
connected_slaves:0 # 从节点数量为0,表示没有从节点
master_replid:224773a02d428459b62505552cf5b5c719358dfa
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6597> 

配置完两个从节点后,再次查询显示如下

127.0.0.1:6597> info replication
# Replication
role:master
connected_slaves:2 # 主节点下有2个从节点 从节点信息端口是6598和6599
slave0:ip=127.0.0.1,port=6598,state=online,offset=476,lag=1
slave1:ip=127.0.0.1,port=6599,state=online,offset=476,lag=1
master_replid:c00f75d9e9b23c3ecb1868eca06a858084d9d045
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:476
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:476
127.0.0.1:6597> 

从节点配置修改点

  1. 复制主节点的redis文件夹,作为从节点redis的服务文件夹
  2. 进入对应的redis.conf文件,进入编辑
  3. 修改启动的端口号port
  4. 修改pid文件名,由原本的/var/run/redis_6379.pid改为var/run/redis_6380.pid
  5. 修改REPLICATION中的replicaof ip port,这个是配置主机的ip和端口
  6. 修改REPLICATION中的masterauth 密码,这个是配置主机的验证密码
  7. 保存退出

修改完以上所有的地方后,通过启动命令进行启动,启动命令在对应的bin文件夹下执行,启动命令:

[root@VM-4-16-centos bin]# ./redis-server redis.conf

启动完成后查看Redis实例

[root@VM-4-16-centos bin]# ps -ef | grep redis
root     21640 21591  0 4月01 ?       00:00:00 runsv redis
root     21676 21640  0 4月01 ?       00:00:00 svlogd -tt /var/log/gitlab/redis
root     22446 21591  0 4月01 ?       00:00:00 runsv redis-exporter
root     22461 22446  0 4月01 ?       00:00:00 svlogd -tt /var/log/gitlab/redis-exporter
root     26639     1  0 16:42 ?        00:00:00 ./redis-server 0.0.0.0:6597 # 主机
root     26969     1  0 16:44 ?        00:00:00 ./redis-server 0.0.0.0:6598 # 从机1
root     27760     1  0 16:49 ?        00:00:00 ./redis-server 0.0.0.0:6599 # 从机2
root     28429 20588  0 16:54 pts/2    00:00:00 grep --color=auto redis
[root@VM-4-16-centos bin]# 

以上是主从配置的所有改动点,接下来是哨兵模式的相关配置

2. 哨兵模式的配置

2.1 新建哨兵模式配置文件sentinel.conf

详情配置如下:

# 设置端口号
port 26379
#
# 哨兵sentinel的工作目录
dir "/tmp"
#
# 哨兵sentinel监控的Redis主节点的ip和port
# mymaster是自己命名的主节点名称,可自行命名
# quorum 当达到quorum个数sentinel哨兵认为master主节点失联,此时客观上认为主节点失联了
# 命令语法: sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor mymaster 127.0.0.1 6597 1

# 当Redis实例中开启了密码保护,这样所有连接Redis实例的客户端都需要提供密码
# 设置哨兵sentinel连接主从实例的密码,需要将主从实例设置成一样的密码
# 命令语法: sentinel auth-pass <master-name> <password>
sentinel auth-pass 主节点名称 主节点密码

# 指定多少毫秒之后,主节点没有应答哨兵sentinel,此时,哨兵主观上认为主节点下线,默认30s
# 命令语法:sentinel down-after-milliseconds <master-name> <milliseconds>
sentinel down-after-milliseconds 主节点名称 超时时间

# 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,
# 这个数字越小,完成failover所需的时间就越长,
# 但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。
# 可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。
# 命令语法: sentinel parallel-syncs <master-name> <numslaves>
sentinel parallel-syncs 主节点名称 1

2.2 启动哨兵模式

# 启动sential
[root@VM-4-16-centos bin]# ./redis-sentinel sentinel.conf

哨兵模式配置完成,测试的话,可以自行测试,例如将原来的主节点关闭,shutdown,等一会切换主节点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值