侧边栏壁纸
  • 累计撰写 208 篇文章
  • 累计创建 16 个标签
  • 累计收到 5 条评论

目 录CONTENT

文章目录

redis主从集群的搭建和哨兵的部署

Wake
2022-08-24 / 0 评论 / 0 点赞 / 522 阅读 / 1,374 字

主从模式配置分为手动和配置文件两种方式进行配置,我现在有172.17.1.100(ubuntu18.04)、172.17.1.101(ubuntu18.04)、172.17.1.102(ubuntu18.04)3台机器,只是配置文件的配置方式是降手动配置的命令放在配置文件中而已,本质是一致的。下面将对配置文件方式进行配置:

1、我将172.17.1.100作为主数据库,其他两个地址 模拟为从数据库

2、将ubuntu18.04目录切换到/etc/redis目录下,编辑redis.conf文件。

3.新创建的redis在redis.conf主要需要修改和优化的配置

1)调整memory大小 redis.conf 中maxmemory 不需要配置(作为数据库来使用) 需要配置(作为缓存来使用)

2)设置过期时间 expires 键值名称 秒数 expires key 60 设置过期时间 为了腾出更多的空间

过期策略: 没有设置key的过期时间,则使用 allkeys-lru lru算法 有设置key的过期时间,则使用 volatile-ttl ttl算法

3)设置redis允许处理的最大请求连接数,减少延迟时间 调整maxclients大小 为监控得出的数据1~1.5倍

4)其他参数 超过多少秒后,关闭空闲连接 TCP keepalive 关闭检查数据库数据的正确性 rdbchecksum off

5)加大内存的大小,避免未知错误 overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。 0, 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。 1, 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。 2, 表示内核允许分配超过所有物理内存和交换空间总和的内存 more /proc/sys/vm/overcommit_memory vm.overcommit_memory=1

要部署集群就必须关闭127.0.0.1的环回地址,修改成:

bind 172.17.1.100

7)修改默认端口

redis因为自身安全问题,所以需要修改自身的默认端口

port xxxx

  1. 设置密码,因为redis的读取很快,所以密码一定需要设置多位的,防止被快速暴力破解

masterauth “xxxx1234”

  1. 从库需要设置主库跟随

slaveof 172.17.1.100 36379

注意:所有从库都需要进行添加,主库不需要

在slave中的redis.con配置如下代码

slaveof 192.168.222.135 6379
# 注意,如果你的节点设置了密码访问,你需要配置下面这个配置
masterauth master密码

验证:

进入主库中进行查询

redis-cli -h 172.17.1.100 -p xxxx -a xxxxx
image-1661341578411
测试:
在主数据库set一条数据,并在从库获取这条数据
image-1661341594707
image-1661341602372
配置主从+哨兵模式:

因为主从模式,主数据库可以读、写操作,而从数据库只能读、不能写,一旦主数据库宕机,整个数据库集群将无法进行读操作,后果很严重。

而主从+哨兵模式,既热部署进行主从切换,当主数据库宕机,哨兵自动将其他从数据库的某一台提升为主数据库,即使之前的主数据库恢复正常工作,哨兵也会将其改为从数据库,做到了高可用、热部署

具体操作:

1、因为我有3台虚拟机,所以我就配置3个哨兵吧,也可以多配置一些,或者少配置一些

2、将3台虚拟机,分别切换到/home/tool/redisWork/bin目录下,新增文件sentinel.conf,并且编辑此文件

#//端口默认为26379。
port 26379
#//关闭保护模式,可以外部访问。
protected-mode no
#//设置为后台启动。
daemonize yes
#//日志文件。
logfile "./sentinel.log"
#//指定主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换。
sentinel auth-pass mymaster 'wiki1234'    #如果有密码则设置数据库集群密码
#//当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel monitor mymaster 172.17.1.102 36379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
#//这里设置了主机多少秒无响应,则认为挂了。
sentinel down-after-milliseconds mymaster 120
#//主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
#snetinel parallel-syncs mymaster 1
#//故障转移的超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 60000
# Generated by CONFIG REWRITE
dir "/home/wiki/tool/bin"
  • 先启动Redis服务,然后在启动sentinel服务
# 启动redis服务 
service redis restart
# 启动sentinel
redis-sentinel sentinel.conf

模拟master宕机,检测sentinel服务是否成功:
image-1661341694682
image-1661341703592

注意:踩坑
image-1661341718726
这是由于我们的下面两行配置的位置放反了引起的。正确顺序按照下面的顺序即可

sentinel monitor mymaster 192.168.222.135 6379 2
sentinel auth-pass mymaster 48835a9c-7a5a-4ec8-af6a-80af3e87b194
0

评论区