参考大佬博客部署
在大佬基础上,添加了验证方式。
环境准备
我本地是一个主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

1、查看master节点的进程,停止该节点
ps -aux |grep redis
kill -9 xxxx

2、重启刚停掉的redis;查看现在的三台机器集群信息

1131

被折叠的 条评论
为什么被折叠?



