Linux Centos8 部署Redis主从复制哨兵模式

准备三台虚拟机都安装linux 系统

服务器IP 角色 端口号
192.168.111.131 6379
192.168.111.133 6380
192.168.111.134 6381

从官网(Redis)下载,下载稳定版本(Redis 6.2) 

 查看系统是否安装gcc-c++编译器和make 编译工具

#搜索yum包管理器里是否安装gcc-c++编译器
sudo yum list installed | grep gcc-c++

#查询到信息,则表示已安装
#没有则进行安装
sudo yum install -y gcc-c++

#搜索yum包管理器里是否安装make
sudo yum list installed | grep make

#查询到信息,则表示已安装
#没有则进行安装
sudo yum install -y make

 安装redis下载(https://download.redis.io/releases/redis-6.2.6.tar.gz)(目前稳定最新版本6.2.6)

1.使用wget工具进行下载并使用tar进行解压

#下载
wget  https://download.redis.io/releases/redis-6.2.6.tar.gz
#解压
tar -zvxf redis-6.2.6.tar.gz

 2.使用make工具进行编译并安装

#进行编译
sudo make
#编译成功进行安装
sudo make PREFIX=/usr/local/redis/redis-6.2.6 install 

 3.把redis和哨兵配置文件复制到新创建文件夹内

#在创建一个配置文件
sudo mkdir /redis-6.2.6/bin/conf

#复制文件到bin和conf
sudo cp redis.conf  sentinel.conf bin/conf

4.最后的bin和conf文件

 

 5.启动redis

#进入到bin目录
#启动先使用默认的配置启动redis
 sudo ./redis-server conf/redis.conf

配置主从

1.主机(192.168.111.131)配置

#编辑 bin/conf/redis.conf 文件
#修改redis.conf参数
bind 0.0.0.0 #允许所有远程访问
protected-mode no  # 保护模式不开启
port 6379 #端口号
daemonize yes #开启守护进程方式运行
logfile ./redis.log #设置日志输出文件
#设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件
save 3600 1
save 300 100
save 60 10000
#replicaof <masterip> <masterport> 主机这里不设置
appendonly yes #开启数据保存到磁盘
masterauth redis@123 #开启密码保护,从机连接主机密码
requirepass redis@123 #设置连接密码
 

 2.从机(192.168.111.133,192.168.111.134)配置

#编辑 bin/conf/redis.conf 文件
#修改redis.conf参数
bind 0.0.0.0 #允许所有远程访问
protected-mode no  # 保护模式不开启
port 6380 #端口号
daemonize yes #开启守护进程方式运行
logfile ./redis.log #设置日志输出文件
#设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件
save 3600 1
save 300 100
save 60 10000
replicaof 192.168.111.131 6379  #配置连接主机ip和端口
appendonly yes #开启数据保存到磁盘
masterauth redis@123 #开启密码保护,从机连接主机密码
requirepass redis@123 #设置连接密码
 
#编辑 bin/conf/redis.conf 文件
#修改redis.conf参数
bind 0.0.0.0 #允许所有远程访问
protected-mode no  # 保护模式不开启
port 6381 #端口号
daemonize yes #开启守护进程方式运行
logfile ./redis.log #设置日志输出文件
#设置在多少时间内刷新次数达到多少的时候会将数据同步到数据文件
save 3600 1
save 300 100
save 60 10000
replicaof 192.168.111.131 6379  #配置连接主机ip和端口
appendonly yes #开启数据保存到磁盘
masterauth redis@123 #开启密码保护,从机连接主机密码
requirepass redis@123 #设置连接密码
 

3.开启主机(6379)和从机(6380,6381)端口

#主机开启防火墙端口6379
sudo firewall-cmd --zone=public --add-port=6379/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#从机防火墙端口6380
sudo firewall-cmd --zone=public --add-port=6380/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#从机防火墙端口6381

sudo firewall-cmd --zone=public --add-port=6381/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload

4.启动查看验证主从配置

#进入bin 目录
#先启动主机
sudo ./redis-server conf/redis.conf
#再从机
sudo ./redis-server conf/redis.conf

 5.连接redis查看信息

#进入bin目录
#连接主机 redis
./redis-cli -h 192.168.111.131 -p 6379
#再输入密码
auth redis@123

#连接从机 redis
./redis-cli -h 192.168.111.133 -p 6380
#再输入密码
auth redis@123

#连接从机 redis
./redis-cli -h 192.168.111.134 -p 6381
#再输入密码
auth redis@123

#连接成功后输入info
info 或 info replication

 

 

 6.验证主可读可写,从只可读

#在主机上执行
set test hi
get test

#在从机上
set test1 hi #发现写入失败
get test #成功读取到主机写入的数据

 

到此主从配置就完成了。

哨兵配置

1. 主机(192.168.111.131)配置

#进入bin/conf 目录
#编辑
sudo vim sentinel.conf

port 26379  #哨兵端口
daemonize yes #开启守护进行启动
logfile ./sentinel.log #配置哨兵日志输出文件
# sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库
sentinel monitor mymaster 192.168.111.131 6379 2 
#如开启了requirepass,这里就需要设置主库密密码
sentinel auth-pass mymaster redis@123
#sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置
#此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒  
sentinel down-after-milliseconds mymaster 3000
#此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短
sentinel parallel-syncs mymaster 1
//自动切换超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000

2.从机(192.168.111.133,192.168.111.134)配置

port 26380  #哨兵端口
daemonize yes #开启守护进行启动
logfile ./sentinel.log #配置哨兵日志输出文件
# sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库
sentinel monitor mymaster 192.168.111.131 6379 2 
#如开启了requirepass,这里就需要设置主库密密码
sentinel auth-pass mymaster redis@123
#sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置
#此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒  
sentinel down-after-milliseconds mymaster 3000
#此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短
sentinel parallel-syncs mymaster 1
//自动切换超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000
port 26381  #哨兵端口
daemonize yes #开启守护进行启动
logfile ./sentinel.log #配置哨兵日志输出文件
# sentinel monitor代表监控,mymaster是给主库取得别名,ip地址代表监控的主库,6379是主库的端口号,2代表有两个#或者两个以上的哨兵认为主库不可用时,才会进行换库
sentinel monitor mymaster 192.168.111.131 6379 2 
#如开启了requirepass,这里就需要设置主库密密码
sentinel auth-pass mymaster redis@123
#sentinel auth-user <master-name> <username> 如果配置用户名则也需要在这里配置
#此配置指需要多少时间,一个master才会被sentinel主观认定是不可用的,单位是毫秒,默认是30秒  
sentinel down-after-milliseconds mymaster 3000
#此配置值在发生故障时,最多可以有几个slave同时对新的master进行同步,这个数字越小完成故障处理的时间越短
sentinel parallel-syncs mymaster 1
//自动切换超时时间,这里设置为三分钟。
sentinel failover-timeout mymaster 180000

3.开启哨兵

#进入bin目录
#先启动主机的哨兵
sudo ./redis-sentinel conf/sentinel.conf
#再启动从机的哨兵
sudo ./redis-sentinel conf/sentinel.conf

4.连接哨兵查看信息

#连接主机哨兵
./redis-cli -h 192.168.111.131 -p 26379
#查看信息
info 或者info sentinel

#连接从机哨兵
./redis-cli -h 192.168.111.133 -p 26380
#查看信息
info 或者info sentinel

./redis-cli -h 192.168.111.134 -p 26381
#查看信息
info 或者info sentinel

 

5.开启哨兵主机(26379)和从机(26380,26381)防火墙端口

#主机开启防火墙端口26379
sudo firewall-cmd --zone=public --add-port=26379/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#从机防火墙端口26380
sudo firewall-cmd --zone=public --add-port=26380/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload
#从机防火墙端口26381

sudo firewall-cmd --zone=public --add-port=26381/tcp --permanent
#重启防火墙
sudo firewall-cmd --reload

 6.验证哨兵,主机宕机

#模拟主机服务器不可用
./redis-cli -h 192.168.111.131 -p 6379
#再输入密码
auth redis@123
#停止
shutdown

 

 

 到此哨兵配置就完成了。

配置systemd服务管理(redis 和哨兵)开机启动

#创建服务文件
sudo vim /usr/lib/systemd/system/redis.service

#写入以下文件
[Unit]
Description=Redis Server
Documentation=https://redis.io/documentations
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
##注意注意注意,重要的事情说三遍,这里我在创建的时候被踩雷了,然后查看官网发现编译安装的时候指定安装目录 PREFIX=/usr/local/redis/redis-6.2.6
#否则使用systemd 服务启动的时候会被selinux安全上下文不同阻止启动
ExecStart=/usr/local/redis/redis-6.2.6/bin/redis-server /usr/local/redis/redis-6.2.6/bin/conf/redis.conf
PrivateTmp=yes
#配置启动用户和用户组
#User=redis
#Group=redis

[Install]
WantedBy=multi-user.target

#创建服务文件
sudo vim /usr/lib/systemd/system/sentinel.service

#写入以下文件
[Unit]
Description=Redis Sentinel
Documentation=https://redis.io/documentations
Wants=network-online.target
After=network-online.target

[Service]
Type=forking
##注意注意注意,重要的事情说三遍,这里我在创建的时候被踩雷了,然后查看官网编译安装的时候指定安装目录 make PREFIX=/usr/local/redis/redis-6.2.6 install
#否则使用systemd 服务启动的时候会被selinux安全上下文不同阻止启动
ExecStart=/usr/local/redis/redis-6.2.6/bin/redis-server /usr/local/redis/redis-6.2.6/bin/conf/sentinel.conf
PrivateTmp=yes
#配置启动用户和用户组
#User=redis
#Group=redis

[Install]
WantedBy=multi-user.target

猜你喜欢

转载自blog.csdn.net/u010784529/article/details/121773932