【知识积累】Redis哨兵模式搭建

一、下载并指定源码目录

cd ~
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xf redis-5.0.5
mkdir -p /usr/local/redis/redis5
mv redis-5.0.5 /usr/local/redis/redis5
cd /usr/local/redis/redis5

二、编译安装

yum install gcc
make
make install

三、直接运行

cd src
./redis-server

四、配置环境变量

vi /etc/profile
export REDIS_HOME=/opt/darren/redis5
export PATH=$PATH:$REDIS_HOME/bin
source /etc/profile

五、以服务的形式运行redis

cd /usr/local/redis/redis5/utils
./install_server.sh
- 选择端口号
- 配置文件
- 日志文件
- 数据目录
- 可执行程序的路径
复制配置文件/etc/init.d/redis_6379 -> 安装服务 -> 开启启动 -> 运行级别 -> 启动redis

 

六、启动两个从节点并同步6379

1、按照步骤五安装6380、6381

2、停止6379、6380、6381

service redis_6379 stop
service redis_6380 stop
service redis_6381 stop

3、复制配置文件到指定目录

cp /etc/redis/* ~/test

4、启动一主两从

redis-server 6379.conf
redis-server 6380.conf --replicaof 127.0.0.1 6379
redis-server 6381.conf --replicaof 127.0.0.1 6379

七、sentinel配置

1、从redis根目录下复制sentinel配置文件到指定目录

cp /usr/local/redis/redis5/sentinel.conf 26379.conf

2、修改配置文件

#哨兵的端口
port 26379
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26379.pid

3、复制三个哨兵并修改端口

#哨兵的端口
port 26380
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26380.pid

#哨兵的端口
port 26381
#mymaster 主的逻辑名称(一套哨兵可以监控多个集群)
#192.168.244.8 主的IP
#2 投票的权重值
sentinel monitor mymaster 192.168.244.8 6379 2
#后台启动
daemonize yes
#pid文件
pidfile /var/run/redis_sentinel_26381.pid

4、启动哨兵

  • 对于 redis-sentinel 程序, 你可以用以下命令来启动 Sentinel 系统:

        redis-sentinel /path/to/sentinel.conf

  • 对于 redis-server 程序, 你可以用以下命令来启动一个运行在 Sentinel 模式下的 Redis 服务器:

       redis-server /path/to/sentinel.conf --sentinel

redis-server 26379.conf --sentinel
redis-server 26380.conf --sentinel
redis-server 26381.conf --sentinel

 

八、查看结果

ps -ef | grep redis

九、哨兵开机启动

1、复制配置文件到/etc/init.d目录下

cp redis_init_script /etc/init.d/redis-sentinel-26379
cp redis_init_script /etc/init.d/redis-sentinel-26380
cp redis_init_script /etc/init.d/redis-sentinel-26381

2、编辑配置文件

     14 REDISPORT=26380
     15 EXEC=/opt/darren/redis5/bin/redis-sentinel
     16 CLIEXEC=/opt/darren/redis5/bin/redis-cli
     17 
     18 PIDFILE=/var/run/redis_sentinel_${REDISPORT}.pid
     19 CONF="/root/test/${REDISPORT}.conf"

3、添加权限

chmod 755 /etc/init.d/redis-sentinel-26379
chmod 755 /etc/init.d/redis-sentinel-26380
chmod 755 /etc/init.d/redis-sentinel-26381

4、启动或停止

service redis-sentinel-26379 start/stop
service redis-sentinel-26380 start/stop
service redis-sentinel-26381 start/stop

5、设置开机启动

chkconfig redis-sentinel-26379 on
chkconfig redis-sentinel-26380 on
chkconfig redis-sentinel-26381 on

十、注意事项

1、关闭防火墙

https://blog.csdn.net/axin1240101543/article/details/103257548

2、注释 bind 127.0.0.1

不能被除了本机以外的ip地址访问,默认是本地127.0.0.1

3、关闭保护模式

protected mode没有设置为no,保护模式没有关闭,默认是yes

十、Spring Boot配置

1、redis配置

spring:
  redis: #redis 配置
    database: 0
    host: 192.168.244.8
    port: 6379
    timeout: 2000
    password:

2、自定义哨兵

#自定义哨兵
sentinel:
  address:
    - 192.168.244.8:26379
    - 192.168.244.8:26380
    - 192.168.244.8:26381
  masterName: mymaster

3、redis哨兵配置类

package com.darren.center.service.order.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/**
 * <h3>spring-cloud-2020</h3>
 * <p>redis哨兵配置类</p>
 *
 * application.yml中配置
 * #自定义哨兵
 * sentinel:
 *   address:
 *     - 192.168.244.8:26379
 *     - 192.168.244.8:26380
 *     - 192.168.244.8:26381
 *   masterName: mymaster
 *
 * @author : Darren
 * @date : 2020年08月31日 16:47:59
 **/
@Component
@ConfigurationProperties(prefix = "sentinel")
@Order(0)
@Data
public class RedisSentinelProperties {

    /**
     * 哨兵的地址
     */
    private String[] address;

    /**
     * 主的逻辑名称(一套哨兵可以监控多个集群)
     */
    private String masterName;

}

4、redis配置文件

package com.darren.center.service.order.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.annotation.Order;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

/**
 * <h3>spring-cloud-2020</h3>
 * <p>redis配置</p>
 *
 * @author : Darren
 * @date : 2020年08月28日 16:20:14
 **/
@Component
public class RedisConfig {

    /**
     * 单个redis
     */
    @Bean
    @ConditionalOnMissingBean(StringRedisTemplate.class)
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory){
        StringRedisTemplate redisTemplate = new StringRedisTemplate();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        return redisTemplate;
    }

    /**
     * 单个redisson
     * @return
     */
    /*@Bean
    public RedissonClient redissonClient(){
        Config config = new Config();
        config.useSingleServer()
        .setAddress("127.0.0.1:6379")
        .setDatabase(0);
        //.setPassword("1234");
        return Redisson.create(config);
    }*/

    @Autowired
    private RedisSentinelProperties redisSentinelProperties;

    /**
     *  redisson - 哨兵
     * @return
     */
    @Bean("redisson")
    @Order(1) //先加载RedisSentinelProperties类
    public Redisson getRedisson(){
        Config config = new Config();
        config.useSentinelServers()
              .setMasterName(redisSentinelProperties.getMasterName())
              .addSentinelAddress(redisSentinelProperties.getAddress())
              .setDatabase(0);
              //.setPassword("1234");
        return (Redisson) Redisson.create(config);
    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值