redis主从和sentinel哨兵模式的安装部署

Redis是一个开源的内存数据结构存储系统,它也可以用作数据库、缓存和消息队列。Redis支持多种数据类型,包括字符串、哈希、列表、集合和有序集合。它具有高性能、可扩展性和灵活性的特点,被广泛应用于许多领域,如缓存、实时分析、消息传递和排行榜等。Redis还提供了持久化功能,可以将内存中的数据保存到磁盘上,以防止数据丢失。它支持丰富的命令集合,并提供了多种语言的客户端库,使开发者能够方便地与Redis进行交互。本文档详细的记载了redis主从和sentinel哨兵模式的部署。

一、环境准备

1.下载redis

redis官网网址:https://redis.io,记录本文时官网最新的版本为7.2.5。本文档使用的是7.2,5,其他版本redis的部署方法一致,7.2.5版本的下载地址为:https://download.redis.io/releases/redis-7.2.5.tar.gz。

2.配置最大文件打开数

使用root帐号登录操作系统,编辑limits.conf文件,如下所示。

[root@yunweixia.com ~]# vi /etc/security/limits.conf
*                soft    nofile           65535
*                hard    nofile           65535

3.调整内核参数

[root@yunweixia.com ~]# echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf
[root@yunweixia.com ~]# sysctl -p 

4.安装gcc

[root@yunweixia.com ~]# yum install -y gcc tcl 

二、主节点安装部署

(一)redis的安装部署

1.解压redis

[root@yunweixia.com ~]# tar xzvf redis-7.2.5.tar.gz

2.编译redis

[root@yunweixia.com ~]# mv redis-7.2.5 /etc/redis
[root@yunweixia.com ~]# mkdir -p /etc/redis/data
[root@yunweixia.com ~]# mkdir -p /etc/redis/logs [root@yunweixia.com ~]# cd /etc/redis [root@yunweixia.com redis]# make && make install

3.备份redis配置文件

[root@yunweixia.com redis]# cp redis.conf redis.conf-bak

4,修改redis配置文件

[root@yunweixia.com redis]# vi redis.conf
#bind 127.0.0.1          #绑定redis服务器网卡IP,默认为127.0.0.1,即本地回环地址。这样的话,访问redis服务只能通过本机的客户端连接,而无法通过远程连接。如果bind选项为空的话,那会接受所有来自于可用网络接口的连接,也可以设置为本机Ip地址。
protected-mode no        #保护模式,默认是开启状态,只允许本地客户端连接
daemonize yes            #默认情况下 redis 不是作为守护进程运行的,如果你想让它在后台运行,你就把它改成 yes。当redis作为守护进程运行的时候,它会写一个 pid 到 /var/run/redis.pid 文件里面
appendonly yes           #默认redis使用的是rdb方式持久化,这种方式在许多应用中已经足够用了。但是redis如果中途宕机,会导致可能有几分钟的数据丢失,根据save来策略进行持久化,Append Only File是另一种持久化方式,可以提供更好的持久化特性。Redis会把每次写入的数据在接收后都写入appendonly.aof文件,每次启动时Redis都会先把这个文件的数据读入内存里,先忽略RDB文件。
requirepass Aa123456     #设置redis-cli访问密码。
masterauth Aa123456      #设置同步密码
logfile "/etc/redis/logs/redis.log"  # Log目录和文件
dir /etc/redis/data/      #持久化数据目录
maxmemory 24000000kb      #防止OOM,推荐设置为最大内存值的50%-70% 

5.配置systemctl控制的redis服务,将以下下内容复制输入到新建的redis.service文件中。

[root@yunweixia.com redis]# vi /usr/lib/systemd/system/redis.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/bin/kill -s QUIT $MAINPID
Type=forking
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
PrivateTmp=true

[Install]
WantedBy=multi-user.target

6.设置开机启动。

[root@yunweixia.com ~]# systemctl restart redis
[root@syunweixia.com ~]# systemctl enable redis

7.使用redis-cli 连接redis

[root@yunweixia.com ~]# redis-cli -h 192.168.111.11 -a Aa123456

(二)sentinel哨兵模式的部署

默认情况下sentinel配置文件跟redis.conf在相同的目录,直接使用vi编辑sentinel.conf配置文件,修改如下几项。

1.备份sentinel配置文件

[root@yunweixia.com redis]# cp sentinel.conf sentinel.conf-bak

2.修改sentinel配置文件

[root@yunweixia.com redis]# vi sentinel.conf
protected-mode no
daemonize yes
sentinel monitor mymaster 192.168.111.11 6379 2   #主节点IP地址和端口
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 18000
sentinel auth-pass mymaster Aa123456              #redis密码
logfile "/etc/redis/logs/sentinel.log"
dir /etc/redis/data/

3.配置systemctl控制的服务,将以下下内容复制输入到新建的redis-sentinel.service文件中。

[root@yunweixia.com redis]# vi /usr/lib/systemd/system/redis-sentinel.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/redis-sentinel /etc/redis/sentinel.conf
ExecStop=/bin/kill -s QUIT $MAINPID
Type=forking
User=root
Group=root
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
PrivateTmp=true

[Install]
WantedBy=multi-user.target

4.设置开机启动

[root@yunweixia.com ~]# systemctl restart redis-sentinel
[root@yunweixia.com ~]# systemctl enable redis-sentinel

三、从节点安装部署

从节点一般需要2个,修改redis配置和主节点做同步,从节点均需要执行如下配置。

(一)redis的安装部署

从节点的部署方式参考主节点,唯一区别在于redis.conf中需要比主节点多修改如下配置:

replicaof 192.168.111.11 6379 #主节点的IP地址和端口,5.0以前版本使用slaveof
replica-serve-stale-data no   #如果slave无法与master同步,设置成slave不可读

(二)sentinel哨兵模式的部署

sentinel配置同主节点配置相同。

四、扩展阅读

1.调整内核参数vm.overcommit_memory的作用是什么?

vm.overcommit_memory是一个Linux内核参数,用于控制内存过量分配的行为。它有以下三个可能的取值: 0:表示内核会按需分配内存,并允许将内存准备为虚拟内存页(VMAs),即在分配内存时不进行检查。 1:表示内核会检查可用内存和剩余swap空间,并防止将分配的内存超过物理内存和交换区的总和。 2:表示内核允许将内存超过物理内存和交换区的总和,同时也允许不准备为虚拟内存页(VMAs),这可能导致后续内存分配失败而触发内存错误。 通常情况下,建议将vm.overcommit_memory设置为默认值0,即按需分配内存,因为这样可以最大限度地利用可用内存。当设置为1时,可能会导致一些进程在内存不足时失败,但也可以防止过度使用内存。而设置为2时,可能会导致一些进程在实际分配内存时失败,因此慎重使用该选项。 

原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/solutions/redis-sentinel-master-slave-deployment-tutorial.html

(0)
运维侠的头像运维侠共建用户
上一篇 2025年7月29日 18:11
下一篇 2025年7月31日 18:11

相关推荐

发表回复

登录后才能评论