一、redis集群特点

数据 在多个Redis节点之间自动分片

sentinel特点:

它的主要功能有以下几点

不时地监控redis是否按照预期良好地运行;
如果发现某个redis节点运行出现状况,能够通知另外一个进程(例如它的客户端);
能够进行自动切换。当一个master节点不可用时,能够选举出master的多个slave(如果有超过一个slave的话)中的一个来作为新的master,其它的slave节点会将它所追随的master的地址改为被提升为master的slave的新地址。

sentinel配置文件详解

参考:https://segmentfault.com/a/1190000002680804

主节点down了,从节点选举机制如下:

  https://blog.csdn.net/tr1912/article/details/81265007

二、redis端口

对于每个节点,要使Redis群集正常工作,您需要:

为客户端提供服务的普通Redis TCP端口,例如6379
集群总线例如:(客户端端口+ )

三、安装

  3.1  多台机器 创建pv且大于60g,pv.yaml(ps:不能在一台机器运行所有,因为每个pod都有podAntiAffinity:实现每台机器只能有一个redis)

apiVersion: v1
kind: PersistentVolume
metadata:
name: data
labels:
app: redis-ha #pv和pvc测试过,不需要name和labels识别,调度器会为pvc自动选择合适容量的pv
spec:
capacity:
storage: 60Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /opt/data

        kubectl create -f pv.yaml

  安装启动redis集群

#修改本机path路径,授权用户(1000)具备创建目录权限
helm install --set hostPath.path=/opt  --name=redis-ha stable/redis-ha  

 

      3.2  单机实现redis集群,需要取消affinity

  redis-ha-values-custom.yaml

## Node labels, affinity, and tolerations for pod assignment
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#taints-and-tolerations-beta-feature
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
# Just for local develop environment
affinity: {}

  启动

helm install --set hostPath.path=/opt  --name=redis-ha -f ./redis-ha-values-custom.yaml stable/redis-ha #通过取消affinity单机实现redis集群 

看看service文件,每个redis通过本svc识别其他redis

apiVersion: v1
kind: Service
metadata:
labels:
app: redis-ha
chart: redis-ha-3.3.
name: redis-ha-announce-0
namespace: default
spec:
clusterIP: 10.102.130.11
ports:
- name: server
port:
protocol: TCP
targetPort: redis
- name: sentinel
port: 26379
   protocol: TCP
targetPort: sentinel
type: ClusterIP
selector:
app: redis-ha
release: redis-ha
statefulset.kubernetes.io/pod-name: redis-ha-server-0

 四、测试

 kubectl  get svc |grep redis,如下

redis-ha ClusterIP None <none> 6379/TCP,26379/TCP 37m
redis-ha-announce-0 ClusterIP 10.102.130.11 <none> 6379/TCP,26379/TCP 37m  #默认这个为redis主
redis-ha-announce-1 ClusterIP 10.105.223.197 <none> 6379/TCP,26379/TCP 37m
redis-ha-announce-2 ClusterIP 10.106.29.241 <none> 6379/TCP,26379/TCP 37m

kubectl  get pod -o wide|grep redis,如下

redis-ha-server-0 2/2 Running 0 41m 10.244.0.11 hostname-test 
redis-ha-server-1 2/2 Running 0 37m 10.244.0.12 hostname-test 
redis-ha-server-2 2/2 Running 0 35m 10.244.0.13 hostname-test

进入pod为redis-ha-server-1,容器为sentinel 
kubectl exec -it redis-ha-server- -c sentinel sh
容器里面$ redis-cli  -h  redis-ha-announce-0 -p 26379

容器里面$ redis-cli  -h  redis-ha-announce- -p 6379
 

故障转移实验

停止主redis:

#、在主上故障转移测试,使主down掉
redis-cli -h redis-ha-announce- -p debug segfault #、然后进入redis容器或sentinel容器
kubectl exec -it redis-ha-server- -c redis sh
kubectl exec -it redis-ha-server- -c sentinel sh #、容器里面使用redis客户端连接redis服务端
redis-cli -h redis-ha-announce- -p
redis-cli -h redis-ha-announce- -p
#容器里面使用redis客户端连接Sentinel服务端
redis-cli -h redis-ha-announce- -p #、redis查看主从状态
info replication
#sentinel查看状态
INFO Sentinel #5、查看日志
kubectl logs -f redis-ha-server- -c redis
kubectl logs -f redis-ha-server- -c redis
kubectl logs -f redis-ha-server- -c redis

#主前任主上查看redis主从状态如下,10.106.29.241是第三台redis的ip,说转换成功了

 #测试添加一台redis实验,如下:

1、修改文件redis-ha-values-upgrade.yaml

replicas:
affinity: {}
hostPath:
path:/opt

2、创建pv4

apiVersion: v1
kind: PersistentVolume
metadata:
name: data03
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /opt/data03

ps:如果单机部署集群,每个redis的pv的路径不能相同,否则会报错

3、升级

helm upgrade -f redis-ha-values-upgrade.yaml redis-ha stable/redis-ha

4、报错可以回滚

helm rollback redis-ha 

五、删除

helm ls --all
helm del --purge redis-ha

helm安装redis+Sentinel集群搭建的更多相关文章

  1. Redis Sentinel 集群搭建常见注意事项

    我的配置: 1个master,1个slave,3个sentinel 搭建的过程网上已经有很多了,这里列几个重点关注: 修改sentinel.conf的protected-mode与redis.conf ...

  2. redis sentinel集群的搭建

    背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...

  3. Redis Sentinel 集群安装 step by step

    一. 准备材料 服务器 IP address 操作系统 位数 Redis 版本   CNT06CAH05 192.168.3.47 CentOS 6.5 x64 Redis-3.2.6 sentine ...

  4. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  5. helm部署Redis哨兵集群

    介绍 Redis Sentinel集群是由若干Sentinel节点组成的分布式集群,可以实现故障发现.故障自动转移.配置中心和客户端通知. 如下图: Redis Sentinel 故障转移过程: 从这 ...

  6. Redis本地集群搭建(5版本以上)

    Redis本地集群搭建(5版本以上) 2019年11月3日10:05:48 步骤 1.下载安装Redis的安装包 2.复制5份,一共6份Redis的解压安装版,修改每个Redis节点的端口并开启节点 ...

  7. redis的集群搭建(很详细很详细)

    说在前面的话 之前有一节说了redis单机版的搭建和使用jedis管理redis单机版和集群版, 本节主要讲一下redis的集群搭建. 跳转到jedis管理redis的使用 认识redis集群 首先我 ...

  8. docker1.12 安装redis第三方集群方案 codis

    docker1.12 安装redis第三方集群方案 codis

  9. redis sentinel 集群监控 配置

    环境: ip  172.16.1.31 26379  redis sentinel ip  172.16.1.30 6379   主 1 ip  172.16.1.31 6380   从 1 ip   ...

随机推荐

  1. sql中批量插入begin的使用

    private static String ADD_ATTR_EXT_ITEM="insert into attr_ext_item(attr_ext_main_key,attr_name_ ...

  2. .Net与 WebAssembly 随笔

    WebAssembly 是啥 - WebAssembly 是一种浏览器支持的字节码格式,WebAssembly 字节码和底层机器码很相似可快速装载运行,因此性能相对于 JS 解释执行大大提升,需要放到 ...

  3. 单片机C语言基础编程源码六则

    1.某单片机系统的P2口接一数模转换器DAC0832输出模拟量,现在要求从DAC0832输出连续的三角波,实现的方法是从P2口连续输出按照三角波变化的数值,从0开始逐渐增大,到某一最大值后逐渐减小,直 ...

  4. ceph添加osd(ceph-deploy)

    修改主机名和 /etc/hosts 关闭防火墙和 SELINUX 安装和配置 NTP ceph-deploy 节点安装 安装 ceph-deploy sudo yum install ceph-dep ...

  5. fastjson的简单使用

    实习初期,开始接触到系统的后台日志查询展示到前台,后台将查询到的数据转化成json格式返回前台,发现系统使用的是阿里的fastjson,于是想来了解一下fastjson的使用. 以下使用都是基于这个版 ...

  6. Windows10 引导修复

    [问题]最近遇到一些用户使用的操作系统为Win10,但是使用过程中由于错误系统优化.卸载软件错误.误删系统文件.windows更新错误等,影响系统BCD引导文件,造成开机出现该BCD蓝屏报错,如下图所 ...

  7. Laravel5.5学习笔记

    安装composer 下载安装脚本 php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php ...

  8. 腾讯这套SpringMvc面试题你了解多少?(面试必备)

    1.什么是 SpringMvc? 答:SpringMvc 是 spring 的一个模块,基于 MVC 的一个框架,无需中间整合层来整 2.Spring MVC 的优点: 答: 1)它是基于组件技术的. ...

  9. idea提交git报错Push rejected: Push to origin/master was rejected

    参考https://blog.csdn.net/u012934325/article/details/71023241

  10. Android系统应用Mms之短信会话列表加载流程一

    1. ConversationList短息会话列表界面 1. 开始进行加载 ConversationList: protected void onStart(){ ... // 进行异步查询 star ...