Loading

阿里云服务器搭建Redis启用主从和哨兵模式

下载redis 6 解压

redis官方下载地址

[root@rzk opt]# tar zxvf redis-6.2.3.tar.gz 

解压后进入redis目录里面的src

修改redis6.conf文件

[root@rzk opt]# mkdir -p redis6
[root@rzk opt]# cd redis6/
[root@rzk redis6]# ls
[root@rzk redis6]# mkdir -p conf
[root@rzk redis6]# mkdir -p log
[root@rzk redis6]# mkdir -p data
[root@rzk redis6]# ls
conf  data  log

进入解压的redis文件,复制一份redis.conf 到刚刚新建文件夹的conf里面

修改redis6.conf

注释掉bind

关闭保护模式

注释端口号

开启后台启动

pid文件

日志文件

开启默认的rdb文件

每一个端口都会有对应的rdb文件,这个需要注释

存放在新建的data文件目录下

从节点密码

从服务器默认只读

设置主服务密码

编辑好久保存

复制三份 分别是不同端口号

6391,6392,6393

复制三份
6391

# 引用公共配置
include /opt/redis6/conf/redis6.conf
# 进程编号记录文件
pidfile /var/run/redis-6391.pid
# 进程端口号
port 6391
# 日志记录文件
logfile "/opt/redis/log/redis-6391.log"
# 数据记录文件
dbfilename dump-6391.rdb
# 追加文件名称
appendfilename "appendonly-6391.aof"
# 下面的配置无需在6391里配置
# 备份服务器从属于6391推荐配置局域网ip
#slaveof **内网ip** 6391  **主节点不用配置**

6392

# 引用公共配置
include /opt/redis6/conf/redis6.conf
# 进程编号记录文件
pidfile /var/run/redis-6392.pid
# 进程端口号
port 6392
# 日志记录文件
logfile "/opt/redis/log/redis-6392.log"
# 数据记录文件
dbfilename dump-6392.rdb
# 追加文件名称
appendfilename "appendonly-6392.aof"
# 下面的配置无需在6391里配置
# 备份服务器从属于6391推荐配置局域网ip
slaveof **内网ip** 6391 

6393

# 引用公共配置
include /opt/redis6/conf/redis6.conf
# 进程编号记录文件
pidfile /var/run/redis-6392.pid
# 进程端口号
port 6392
# 日志记录文件
logfile "/opt/redis/log/redis-6392.log"
# 数据记录文件
dbfilename dump-6392.rdb
# 追加文件名称
appendfilename "appendonly-6392.aof"
# 下面的配置无需在6391里配置
# 备份服务器从属于6391推荐配置局域网ip
slaveof **内网ip** 6391  

启动服务

[root@rzk bin]# ./redis-server /opt/redis6/conf/redis-6391.conf 
[root@rzk bin]# ./redis-server /opt/redis6/conf/redis-6392.conf 
[root@rzk bin]# ./redis-server /opt/redis6/conf/redis-6393.conf

登录redis 端口

[root@rzk bin]# ./redis-cli -p 6391 -a 密码
[root@rzk bin]# ./redis-cli -p 6392 -a 密码
[root@rzk bin]# ./redis-cli -p 6393 -a 密码

查看主信息

127.0.0.1:6391> info replication
# Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:57ca5a7eb086395207990befcc34875053b92334
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

查看从信息


主节点设置值,从节点可以读到

然后从服务器不能写只能读

哨兵模式

在redis文件中 把sentinel.conf拷贝到opt/redis/conf中

sentinel.conf文件内容如下

# 哨兵sentinel实例运行的端口 默认26379 port 26379

daemonize yes

# pidfile /var/run/redis-sentinel.pid

# logfile ""

# 哨兵sentinel的工作目录 dir /tmp

sentinel monitor mymaster **内网id** 6381 2
#哨兵监控主从  这个2 是这边开启三台服务器 如果要选举服务器就需要大于百分之50才能选举成功  3台服务器如果要选一台就需要大于2台

 sentinel auth-pass mymaster 密码

拷贝三个配置文件

内容如下

#引用公共配置
include /opt/redis/conf/sentinel.conf
#进程端口号
port 26381
#进程编号记录文件
pidfile /var/run/sentinel-26381.pid
#日志记录文件(为了方便查看日志,先注释掉,搭建好环境后再打开
logfile "/opt/redis/log/sentinel-26381.log"
[root@rzk conf]# touch sentinel-26381.conf
[root@rzk conf]# touch sentinel-26382.conf
[root@rzk conf]# touch sentinel-26383.conf

启动哨兵模式

./redis-sentinel /opt/redis/conf/sentinel-26381.conf
./redis-sentinel /opt/redis/conf/sentinel-26382.conf
./redis-sentinel /opt/redis/conf/sentinel-26383.conf

先开启三个窗口查看日志

tail -f /opt/redis/log/sentinel-26381.log 
tail -f /opt/redis/log/sentinel-26382.log 
tail -f /opt/redis/log/sentinel-26383.log 

现在把6381杀死等待30秒

 kill -9 端口号
 查看端口号的命令是: ps -ef | grep reids

81端口变成从服务器,83端口被选举成功成主服务器

springboot使用redis哨兵

使用配置文件配置哨兵

spring:
    redis:
        # Redis服务器地址
        host: 
        # Redis服务器端口
        port: 6383
        # Redis服务器密码
        password: 
        # 选择哪个库  默认0库
        database: 0
        # 连接超过时间
        timeout: 10000ms
        lettuce:
            pool:
                # 最大连接数 默认8
                max-active: 1024
                # 最大连接阻塞等待时间,单位毫秒,默认 -1ms
                max-wait: 10000ms
                # 最大空闲连接,默认8
                max-idle: 200
                # 最小空闲连接,默认0
                min-idle: 5
        #哨兵模式
        sentinel:
            #主节点名称
            master: mymaster
            #节点  这里需要开启 2681,82,83端口
            nodes: 服务器ip:26381,服务器ip:26382,服务器ip:26383

使用redisConfig文件

    @Bean
    public RedisSentinelConfiguration redisSentinelConfiguration(){
        RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration()
                //主节点名称
                .master("mymaster")
                //哨兵
                .sentinel("服务器ip",26381)
                .sentinel("服务器ip",26382)
                .sentinel("服务器ip",26383);
        //密码
        redisSentinelConfiguration.setPassword("配置的哨兵密码");
        return redisSentinelConfiguration;
    }
posted @ 2021-05-27 22:56  Rzk  阅读(299)  评论(0)    收藏  举报