Redis主从(复制)模式集群部署

注:默认使用root权限账户进行安装部署
约定术语:Master表示主节点,Slave表示从节点

一、环境信息

(1)redis主从(复制)模式版本要求:2.8及之后版本
(2)服务节点个数要求:至少两个节点(1主1从)
(3)本文档部署信息:使用三台服务器分别部署1个主节点和2个从节点
Redis主从(复制)模式集群部署_第1张图片

二、Centos7:下载、安装、部署Redis服务

①自行指定下载位置

mkdir -p /home/tianyu/Downloads

②进入下载目录

cd /home/tianyu/Downloads

③下载redis

wget http://download.redis.io/releases/redis-6.0.6.tar.gz

④解压

tar -xzvf redis-6.0.6.tar.gz

⑤进入解压目录

 cd redis-6.0.6/

⑥编译redis源文件

make

⑦安装redis,其中PREFIX代表安装路径(自行指定目录位置)

make install PREFIX=/usr/local/redis

⑧配置redis命令至系统变量
在/etc/profile文件最后一行添加以下内容:
export PATH=$PATH:/usr/local/redis/bin

vim /etc/profile

Redis主从(复制)模式集群部署_第2张图片

⑨立即生效该文件,配置后linux终端可直接使用redis-server、redis-cli等redis所有命令

source /etc/profile

注:如果提示bash: “source: command not found…,请检查该文件中新增的变量是否书写有错误

三、redis启动时三个警告

 WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128
原因:系统对于特定端口的TCP连接使用backlog队列保存。Redis默认的长度为511,通过tcp-backlog参数设置。如果Redis用于高并发场景为了防止缓慢连接占用,可适当增大这个设置,但必须大于操作系统允许值才能生效。
可以通过netstat -s | grep overflowed命令查看因队列溢出造成的连接拒绝信息
解决:
#添加/修改配置项
net.core.somaxconn = 511

vim /etc/sysctl.conf

#立即生效

sysctl -p

 WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add ‘vm.overcommit_memory = 1’ to /etc/sysctl.conf and then reboot or run the command ‘sysctl vm.overcommit_memory=1’ for this to take effect.
原因:
overcommit_memory值域:
0:表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程。
1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何。
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存
解决:
#添加/修改配置项
vm.overcommit_memory = 1

vim /etc/sysctl.conf 	 

在这里插入图片描述
#立即生效

sysctl -p  	

 WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command ‘echo never > /sys/kernel/mm/transparent_hugepage/enabled’ as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
原因:大页内存动态分配,需要关闭 “让redis 负责内存管理”
解决:
#添加以下内容
echo never > /sys/kernel/mm/transparent_hugepage/enabled

vim /etc/rc.local 	

#使配置生效

source /etc/rc.local  

注:需要重启redis

四、Redis主从模式配置、部署

注:如果要给redis节点设置密码,则各个节点密码都必须一致,否则会报错:Redirected失败

(1)Master节点

①创建配置文件目录

mkdir /usr/local/redis/conf

②拷贝配置文件

cp  /home/tianyu/Downloads/redis-6.0.6/redis.conf  /usr/local/redis/conf 	

③修改配置项bind(IP之间使用空格隔开)

vim /usr/local/redis/conf/redis.conf

Redis主从(复制)模式集群部署_第3张图片
#“127.0.0.1”表示主机可通过127.0.0.1和localhost访问本机节点; “192.168.11.10”是当前主机IP,暴露给其它节点通过IP访问
④ 如果需要设置redis访问密码,则添加配置项requirepass XXX
在这里插入图片描述
⑤ 配置为后台启动: daemonize yes
Redis主从(复制)模式集群部署_第4张图片
⑥ 配置日志输出目录(redis默认没有输出日志)
在这里插入图片描述
⑦ 配置日志级别(debug>verbose>notice>warning)
debug:会打印出很多信息,适合用于开发和测试阶段
verbose:会打印出包含很多不太有用的信息(多余)
notice:适用于生产模式(默认)
warning : 警告信息
Redis主从(复制)模式集群部署_第5张图片
⑧ 数据文件存储路径
配置项: dir
⑨ 配置项 dbfilename (rdb文件名)
在这里插入图片描述
⑩ 配置项 appendfilename (aof文件名)
在这里插入图片描述

(2)Slave1节点

① 拷贝配置文件

cp /home/tianyu/Downloads/redis-6.0.6/redis.conf  /usr/local/redis/conf

②修改配置项bind(IP之间使用空格隔开)

vim /usr/local/redis/conf/redis.conf	

Redis主从(复制)模式集群部署_第6张图片
③ 添加slaveof参数:绑定master主节点IP和端口
Redis主从(复制)模式集群部署_第7张图片
④ 如果master节点设置了密码,则添加参数:masterauth 密码(空格隔开
Redis主从(复制)模式集群部署_第8张图片
⑤ 配置为后台启动: daemonize yes
Redis主从(复制)模式集群部署_第9张图片
⑥ 配置日志输出目录
在这里插入图片描述
⑦ 配置日志级别
Redis主从(复制)模式集群部署_第10张图片
⑧ 数据文件存储路径(RDB文件与AOF文件共享此目录
配置项: dir

(3)Slave2节点

(同Slave1节点,除配置项中暴露的本机IP外其他信息相同)
Redis主从(复制)模式集群部署_第11张图片

(4)启动各节点

①启动redis:在master主机命令窗口执行:

redis-server /usr/local/redis/conf/redis.conf

②启动redis:在slave1主机命令窗口执行:

redis-server /usr/local/redis/conf/redis.conf

③启动redis:在slave2主机命令窗口执行:

redis-server /usr/local/redis/conf/redis.conf	

(5)查看主从模式各角色信息

#在主节点服务器连接redis客户端(参数 -a 连接密码)

 redis-cli -a 123		 

#连接客户端后,使用 info replication 查看角色配置
Redis主从(复制)模式集群部署_第12张图片
#连接slave1从节点

redis-cli -h 192.168.11.11 -p 6379 -a 123

Redis主从(复制)模式集群部署_第13张图片
#连接slave2从节点

redis-cli -h 192.168.11.12 -p 6379 -a 123

Redis主从(复制)模式集群部署_第14张图片

你可能感兴趣的:(redis,redis)