Redis集群搭建(主从复制、哨兵模式)

参考大佬博客部署
在大佬基础上,添加了验证方式。

环境准备
我本地是一个主centos,两个从centos服务器

一、主从复制模式(解决高并发)

搭建redis集群

1、centos安装编译环境

# 编译所需要的环境和编译器
yum install -y gcc gcc-c++ make vim

2、下载redis

wget https://download.redis.io/releases/redis-6.2.9.tar.gz

3、解压、编译、安装

# 解压
tar -zxvf /opt/tool/redis-6.2.9.tar.gz  -C /opt/tool

# 编译安装
make MALLOC=libc
make
cd src
# redis安装位置
make install PREFIX=/usr/local/redis
# redis配置文件位置(包含redis默认配置文件和哨兵模式配置文件)
mkdir /usr/local/redis/etc/

4、初始配置文件,复制出来一份,后续启动使用复制出来的配置文件,主从都操作一下

cp /opt/tool/redis-6.2.9/redis.conf /usr/local/redis/etc/

5、创建配置文件中用到的文件

mkdir /usr/local/redis/run
touch /usr/local/redis/run/redis_6379.pid

mkdir /usr/local/redis/logs
touch /usr/local/redis/logs/redis.log

mkdir /usr/local/redis/dbcache

6、主节点配置文件

# 放行访问IP的限制  0.0.0.0 代表无限制
bind 127.0.0.1改为bind 0.0.0.0
# 后台启动
daemonize no改为daemonize yes
# 设置redis密码
requirepass foobared改为requirepass 123456
# pid存储目录
pidfile /usr/local/redis/run/redis_6379.pid
# 日志存储目录
logfile "/usr/local/redis/logs/redis.log"
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/dbcache/

7、从节点配置文件

# 放行访问IP的限制  0.0.0.0 代表无限制
bind 127.0.0.1改为bind 0.0.0.0
# 后台启动
daemonize no改为daemonize yes
# 设置redis密码
requirepass foobared改为requirepass 123456
# pid存储目录
pidfile /usr/local/redis/run/redis_6379.pid
# 日志存储目录
logfile "/usr/local/redis/logs/redis.log"
# 数据存储目录,目录要提前创建好
dir /usr/local/redis/dbcache/

# 从主节点进行数据复制
replicaof 192.168.0.156 6379
# 主节点的密码
masterauth 123456

8、设置Redis实用systemctl方式启动

cd /lib/systemd/system
vim redis.service

[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/opt/tool/redis-6.2.9/src/redis-server /usr/local/redis/etc/redis.conf --daemonize no
ExecStop=/opt/tool/redis-6.2.9/src/redis-cli -h 127.0.0.1 -p 6379 shutdown

[Install]
WantedBy=multi-user.target

9、创建链接并刷新配置

ln -s /lib/systemd/system/redis.service /etc/systemd/system/multi-user.target.wants/redis.service
systemctl daemon-reload

10、启动redis

systemctl start redis

# 进去redis
/opt/tool/redis-6.2.9/src/redis-cli
# 输入密码
auth 123456
# 主从节点都启动完成后,查看集群
info replication

搭建完成–验证

1、编写个java demo

package com.example.springbootredis.testMasterSlave;

import redis.clients.jedis.Jedis;

public class SimpleRedisTest {
    
    public static void main(String[] args) {
        // Redis连接信息
        String host = "192.168.192.131";
        int port = 6379;
        String password = "123456"; // 如果没有密码设为null
        
        try (Jedis jedis = new Jedis(host, port)) {
            // 如果有密码,进行认证
            if (password != null) {
                jedis.auth(password);
            }
            
            System.out.println("连接Redis成功!");
            
            // 写入操作
            jedis.set("test_key", "Hello Redis!123");
            System.out.println("写入数据成功");

        } catch (Exception e) {
            System.err.println("Redis连接失败: " + e.getMessage());
            e.printStackTrace();
        }
    }
}

2、代码执行结果
在这里插入图片描述
3、使用工具连接,只写入主节点,查看从节点有没有相同的值。有说明主从复制成功。
在这里插入图片描述

二、哨兵模式(解决高可用)

哨兵模式搭建

把初始的哨兵配置文件复制出来

# /usr/local/redis/etc/为启动使用的配置文件
cp /opt/tool/redis-6.2.9/sentinel.conf /usr/local/redis/etc/

1、创建pid、log、tmp文件(主从节点都修改)

touch /usr/local/redis/run/redis-sentinel.pid
touch /usr/local/redis/logs/redis-sentinel.log
mkdir /usr/local/redis/tmp

2、修改配置文件(主从节点都修改)

vim /usr/local/redis/etc/sentinel.conf

daemonize的值从no设置为yes
pidfile /usr/local/redis/run/redis-sentinel.pid
logfile "/usr/local/redis/logs/redis-sentinel.log"
dir /usr/local/redis/tmp
# 设置redis主机IP地址,端口,选举次数
sentinel monitor mymaster 192.168.xxx.xxx 6379 2
# 设置redis主机访问密码
sentinel auth-pass mymaster 123456
# 心跳检测8000毫秒,如果主机8秒内没有相应,就会在从机开始选举
sentinel down-after-milliseconds mymaster 8000
# 执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1

3、将哨兵服务用systemctl方式启动(主从节点都修改)

cd /lib/systemd/system
vim redis-sentinel.service

[Unit]
Description=Redis
After=network.target

[Service]
ExecStart=/opt/tool/redis-6.2.9/src/redis-sentinel /usr/local/redis/etc/sentinel.conf --sentinel
ExecStop=/opt/tool/redis-6.2.9/src/redis-cli -h 127.0.0.1 -p 26379 shutdown
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

4、创建链接并刷新配置(主从节点都操作)

ln -s /lib/systemd/system/redis-sentinel.service /etc/systemd/system/multi-user.target.wants/redis-sentinel.service
systemctl daemon-reload

5、修改master主机的配置文件(master操作)

vim /usr/local/redis/etc/redis.conf
masterauth 123456 # 主节点密码

6、重启redis服务(master操作)

systemctl restart redis

7、启动哨兵服务(三台机器均需操作)

systemctl start redis-sentinel

8、查看是否启动成功

ps -ef |grep redis

三台机器都启动了redis、redis-sentinel
在这里插入图片描述

哨兵模式验证

#切换到主库目录下
/opt/tool/redis-6.2.9/src

#连接redis
./redis-cli 

#验证密码
auth 123456

#查看集群
info replication

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/86b1589712f0439ab6ed4b4e37543c5a.png
1、查看master节点的进程,停止该节点

ps -aux |grep redis
kill -9 xxxx

在这里插入图片描述
2、重启刚停掉的redis;查看现在的三台机器集群信息
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值