redis哨兵搭建

本文详细介绍了如何在三台机器上搭建Redis哨兵模式,包括Redis的安装、配置,如修改bind、protected-mode、port等参数,以及哨兵sentinel的配置,如设置monitor、auth-pass、down-after-milliseconds等。哨兵系统的目的是实现高可用性,当主节点故障时,哨兵会自动选举新的主节点并进行故障恢复。文章最后提到了Java集成Spring与Redis哨兵的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis哨兵模式使用三台机器,一台主机两台从机,分别在三台机器上安装redis并启动redis进程和sentinel进程

一、安装redis(此配置改进redis.txt文件中的配置)

    1、获取安装文件(wget命令下载或自己下载):wget http://download.redis.io/releases/redis-4.0.2.tar.gz

    2、解压文件:redis-4.0.2.tar.gz

    4、编译:make

    5、安装:make install

    6、设置redis配置文件路径:mkdir -p /etc/redis ; cp redis.conf /etc/redis

    7、修改配置文件:vi /etc/redis/redis.conf

            1)注释掉 bind 127.0.0.1 和 protected-mode yes (如果redis.conf中这两句注掉了则在sentinel.conf中要设置protected-mode no ,如果redis.conf中设置了bind和protected-mode yes则在sentinel.conf中也要设置这两句话)

            2)port端口号,默认为6379不用修改(redis监听的端口号)

            3)daemonize改为yes,默认为yes不用修改(使redis以守护进程模式启动就是后台运行redis)

            4)pidfile改为./redis.pid(设置redis的pid文件位置)

            5)logfile改为./redis.log(redis日志文件存放位置)

            6)dir改为 ./ (设置持久化文件存放位置,默认当前目录,也就是/etc/redis)

            7)放开注释masterauth 并设置密码为redis(此处设置连接主机的密码,刚开始第一台机器先启动就是主机,此处配置无用,但是哨兵模式中,主机切换到其他机器上这台机器就是从机,如果此处不设置masterauth将连不上主机)

            8)放开requirepass 设置密码为redis(密码可自定义,但三台机器密码要一致)

            9)把/etc/redis/redis.conf复制到其他两台从机的/etc/redis目录下(目录提前建好)

            10)修改两个从机上的/etc/redis/redis.conf(注意:近从机上需要加slaveof)

                    放开注释slaveof并配置要连接的主机的ip和端口(可以是域名),例如:slaveof world01 6379

    8、分别在三台机器上启动redis实例(最好先启动主机)

        redis-server /etc/redis/redic.conf

        启动完成后可通过redis-cli命令进入命令行认证密码后输入info可查看当前角色和连接的从机

 

二、启动哨兵进程

    1、复制配置文件到/etc/redis目录下:cp /usr/local/redis-4.0.2/sentinel.conf /etc/redis/sentinel.conf

    2、在bind下一行添加 protected-mode no (关闭保护模式,与redis.conf中的配置对应)

    3、port端口默认26379(默认的哨兵端口号)

    4、在port下一行添加 daemonize yes (守护进程模式)

    5、紧接着再下一行添加 logfile "/etc/redis/sentinel.log" (指明日志文件名,或者 ./sentinel.log)

    6、放开注释sentinel monitor 修改为 sentinel monitor mymaster world01 6379 2

            # sentinel monitor <master-name> <ip> <redis-port> <quorum>

            quorum 表示主机down掉时 quorum个sentinel实例提交"master失效"时master才会为ODOWN(客观失效)

    7、认证密码改为redis:sentinel auth-pass mymaster redis

    8、修改主观失效时间为5秒:sentinel down-after-milliseconds mymaster 5000(如果当前sentinel与master直接的通讯中,在指定时间内没有响应或者响应错误代码,那么当前sentinel就认为master失效SDOWN,“主观”失效,默认为30秒)

  9、当新master产生时,同时进行“slaveof”到新master并进行“SYNC”的slave个数:sentinel parallel-syncs def_master 1(默认为1,建议保持默认值)

    10、failover时间间隔改为1分钟:sentinel failover-timeout mymaster 60000 (当failover失败后,每隔1分钟就会进行一次master失败迁移)

  11、启动哨兵服务:redis-sentinel sentinel.conf

          通过/etc/redis目录下的sentinel.log查看日志

          其次在通过redis-cli -p 26379进入命令行输入info查看master状态,slave的数量和sentinel进程数

          在此命令行下可输入sentinel masters 查看所有master,sentinel slaves mymasters查看mymaster下所有从机,sentinel sentinels mymaster查看mymaster下所有哨兵进程(不过貌似当前哨兵进程看不到)

三、测试

    kill掉master上的redis实例或者命令行下shutdown,哨兵就会检测到从而切换master

四、java集成spring

    请见redis示例工程

 

启动哨兵后两个slave没有加入,那就说明配置有问题

 

<think>好的,我现在需要解决用户的问题,也就是在KubeSphere中部署Redis搭建哨兵机制。用户可能已经了解了一些关于KubeSphere的基础知识,现在需要具体的步骤指导。首先,我得回忆一下KubeSphere的相关组件和部署方式。 根据用户提供的引用,特别是引用[1]和[3],其中提到了启用KubeSphere自带的Redis哨兵,需要修改集群配置。引用[1]中的命令是修改ks-installer的配置,这可能涉及到启用Redis的高可用模式。而引用[3]则提到了Redis哨兵的配置文件,包括哨兵的端口、监控的主节点等信息。另外,引用[4]中的redis-cli命令用于创建集群,但用户需要的是哨兵模式,所以可能需要区分集群部署和哨兵部署的不同步骤。首先,我需要确定在KubeSphere中部署Redis哨兵模式的具体流程。通常,在KubeSphere中部署应用可以通过应用商店或者自定义YAML文件来实现。但根据引用[1]中的命令,可能需要先启用内置的Redis哨兵支持。这可能涉及到编辑ks-installer的配置,添加相关的Redis参数,比如设置哨兵的数量、主从配置等。 接下来,需要确认Redis的部署方式,是使用StatefulSet还是Deployment,以及如何配置持久化存储。哨兵模式需要至少三个哨兵实例和至少一个主节点和从节点,所以需要确保资源足够,并且网络配置正确,使得哨兵能够监控到Redis实例。 然后,配置哨兵的参数,比如sentinel monitor指定主节点的名称、IP和端口,quorum的数量等。这部分内容在引用[3]中有示例,比如sentinel monitormymaster10.233.111.3163792,这里的quorum是2,表示需要至少两个哨兵同意才能进行故障转移。此外,还需要设置认证密码,如果Redis有密码的话,哨兵的配置也需要包含auth-pass参数。用户可能需要详细的步骤,包括如何修改ks-installer的配置,如何部署Redis主从,如何部署哨兵,以及如何验证部署是否成功。此外,还需要考虑持久化存储的配置,比如在KubeSphere中创建PVC,挂载到Redis哨兵的容器中,确保数据持久化。可能遇到的问题包括网络策略是否允许哨兵Redis实例之间的通信,以及哨兵之间能否互相发现。在Kubernetes环境中,通常使用Service来暴露Pod,所以需要为Redis主节点和从节点创建Service,哨兵可以通过这些Service的DNS名称来访问Redis实例。另外,引用[4]中的redis-cli命令是用于创建集群的,但用户需要的是哨兵模式,所以可能需要忽略这部分,或者明确区分哨兵模式和集群模式的不同部署方法。 总结下来,步骤可能包括:1.启用KubeSphere的Redis哨兵配置。 2.部署Redis主从实例。3.部署Redis哨兵实例,配置监控主节点。 4.验证哨兵机制是否正常工作,比如模拟主节点故障,观察是否自动切换。需要确保每一步的配置正确,特别是网络和存储方面,同时提供验证方法,比如使用redis-cli连接哨兵,查看主从状态等。此外,用户可能需要相关的问题,比如如何调整哨兵参数,如何处理故障转移等,所以在生成相关问题时要考虑这些方面。</think>### 在KubeSphere中部署Redis哨兵模式分步指南 --- #### **一、启用KubeSphere内置Redis哨兵支持** 1. 登录KubeSphere集群节点,执行以下命令修改集群配置: ```bash kubectl edit cc ks-installer -n kubesphere-system ``` 2. 在`ks-installer`的`redis`配置段中添加哨兵参数: ```yaml redis: enabled: true highAvailability: true # 启用哨兵模式 sentinelReplicas: 3 # 哨兵节点数量 ``` 保存后等待集群自动更新配置[^1]。 --- #### **二、部署Redis主从实例** 1. **创建主节点StatefulSet** 通过KubeSphere控制台创建有状态服务,配置示例: ```yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: redis-master spec: serviceName: redis-master-svc replicas: 1 template: spec: containers: - name: redis image: redis:7.0.4-alpine args: ["--requirepass yourpassword"] # 设置密码 volumeMounts: - mountPath: /data name: redis-data volumeClaimTemplates: - metadata: name: redis-data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "local-storage" ``` 2. **创建从节点Deployment** 使用`redis-slave`镜像并指定主节点服务地址: ```yaml env: - name: MASTER_HOST value: "redis-master-svc" # 主节点服务名 - name: MASTER_PASSWORD value: "yourpassword" ``` --- #### **三、部署Redis哨兵** 1. **创建哨兵配置文件ConfigMap** 参考引用[3]的哨兵配置模板: ```ini sentinel monitor mymaster redis-master-svc 6379 2 sentinel auth-pass mymaster yourpassword sentinel down-after-milliseconds mymaster 5000 ``` 通过KubeSphere控制台将配置挂载到哨兵容器的`/redis/sentinel.conf`路径。 2. **部署哨兵StatefulSet** 使用`redis-sentinel`镜像并引用ConfigMap: ```yaml containers: - name: sentinel image: redis:7.0.4-alpine command: ["redis-sentinel", "/redis/sentinel.conf"] ``` --- #### **四、验证哨兵机制** 1. 进入哨兵Pod执行命令: ```bash redis-cli -p 26379 sentinel get-master-addr-by-name mymaster ``` 应返回当前主节点IP和端口[^3]。 2. 手动触发主节点故障(如删除主Pod),观察哨兵日志是否触发重新选举: ```bash kubectl logs redis-sentinel-0 | grep +switch-master ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值