前言
Redis是开发过程中常用的缓存中间件,为了兼顾生产环境的稳定性和高可用性,Redis通常采用集群模式部署。
在制定Redis集群部署策略时,传统的虚拟机部署方式比较繁琐,需要手动重启节点。相比之下,使用PetaExpress 具有以下优势:
Kubernetes (k8s) 服务在部署Redis 集群时具有显着的优势。
1.安装便捷:可以使用镜像或者yaml配置文件批量安装,大大简化了安装过程。
2、方便的扩缩容:扩缩容的好处是一键扩容,无需复杂的设置或繁琐的步骤。
3、智能自动调度:容器意外挂掉后,快速自动调度、重启、分配资源。
4.高效稳定:Kubernetes跨集群调度。容器服务始终计划在适当的节点上重新启动,除非整个集群挂起。
阅读全文,稍后我们会告诉您如何获得免费红包。
在PetaExpress KubeSphere 容器平台上部署Kubernetes 集群
在Peta Express 上部署Kubernetes 非常简单。直接使用Peta Express 内置的QKE,在“产品和服务”下找到AppCenter Console。
找到QKE并立即部署。
只需按照提示,输入您的姓名,选择您的集群大小等信息,然后直接提交即可。但是,您在配置集群时需要小心。开发和测试可以选择基础开发环境或企业测试环境。对于生产环境,您可以选择基本生产环境。 “企业运营环境”。您还可以自定义集群大小和HA。
部署时间约为2 到10 分钟,具体取决于集群的大小,但仍然非常快。部署Kubernetes 后,您可以继续安装Redis。
安装Redis集群
我这里新建了一个名为test-project的项目空间,用来放置Redis集群的所有安装资源。需要注意的是,稍后在DNS 中将使用项目空间名称,这部分将使用其自己的项目。空间名称。
Redis集群安装过程大致分为以下几个主要步骤:
设置redis.conf字典。
创建redis服务。
容器组配置。
存储设置。
详细设置。
接下来,我们将引导您完成安装和配置Redis 集群的过程,从第一步开始。
配置redis.conf字典
通过选择“配置”“配置字典”“创建”,在项目空间中创建配置字典。
它被命名为redis-conf,下一步是添加键值对数据。
key value内容为redis.conf,value值为:
创建Redis服务
在您的项目空间中,在“应用程序负载”“工作负载”“状态副本集”“创建”下创建Redis 服务。
基本配置名称是redis-cluster。接下来,继续容器组配置的下一步:突出显示。
容器组配置
这一步的重点是使用集群数量的集群配置,通常是3个master和3个slave。此配置不仅仅可以确保集群稳定性。它不仅提高了系统的安全性,还提高了数据的安全性。
将容器组的副本数量调整为6,然后单击“添加容器”。
在Docker Hub 中为您的映像选择Redis,并选择使用默认端口。如果没有预留,则公共资源将被调度。
如果选择使用默认端口,则接下来的端口设置将使用如上所示的6379,并配置启动命令。
上图配置:
命令:redis-server
参数:/etc/redis/redis.conf
该参数指向之前字典配置的内容,但是字典必须在下一步的存储设置中配置好才可以使用。
没有什么需要配置的。选择复选标记以完成容器配置。
推荐的更新策略是滚动更新。您无需单击“下一步”来配置存储设置。
保存设置
这一步有两个操作
添加存储卷模板
挂载配置字典或秘密字典
登录后复制
**添加存储卷模板**
1.
PVC 名称前缀:redis-pvc
容量:10G
挂载路径:
权限:读、写
地址:/数据
最主要的是选择安装路径。设置完成后,点击对勾即可完成设置。
挂载配置字典或秘密字典
在这一步中,我们将挂载之前配置的字典redis-conf。这也是redis启动命令参数的内容。
选择Redis配置字典。
挂载权限为只读,地址为/etc/redis。相当于上面设置命令参数。
选择redis.conf后的同名特定key。完成后,单击复选标记返回存储设置。配置完成后,输入上图,点击下一步,进入最终的高级设置。
高级设置下还有一些附加配置。调整完成后,单击“创建”以创建Redis 集群容器。
初始化Redis集群
创建Redis服务后,进入加载应用程序服务在项目空间中指定Redis服务并输入Redis服务详细信息。详细信息如下:
所有六个Redis 容器组均已成功启动。配置的Redis服务是有状态服务(无头),访问方式是通过内部DNS,访问格式如下: (容器名称).(容器DNS).svc.cluster.local。
例如,按照上图的例子,访问集群1节点的访问地址为redis-cluster-v1-1, DNS 地址, redis-cluster.test-project, svc.cluster.local 。如下:
登录后复制
1 redis-cluster-v1-1.redis-cluster.test-project.svc.cluster.local
2
1.2.
通过该地址访问Redis集群中除第一个节点以外的其他节点的终端,如下图进入节点3的终端,检查是否互通。
进入终端并运行以下命令:
如果能跳转到如下图所示的v1-1节点,则说明两个节点已经互通。
1 redis-cli -h redis-cluster-v1-1.redis-cluster.test-project.svc.clusterredis.local
登录后复制
2
1.
如果能跳转到如下图所示的v1-1节点,则说明两个节点已经互通。
运行命令“cluster info”查看节点的集群状态。
主要关注上图中的两个参数。 node为1,表示当前只有1个节点,cluster_size表示当前没有master节点,所以还没有集群结构。此处列出了属性:
cluster_state:ok状态表示集群可以成功接受查询请求。失败状态表示至少有一个哈希槽未绑定(表示存在未绑定的哈希槽)。
任何节点),或者处于错误状态(该节点能够提供服务,但有FAIL 标志),或者该节点无法联系大多数主节点。
cluster_slots_signed:分配给集群节点的哈希槽数量(不是未绑定的数量)。所有16384 个哈希槽都分配给集群节点。
正常操作所需。
cluster_slots_ok :哈希槽状态不是FAIL 和PFAIL 计数。
cluster_known_nodes:集群中的节点数量(包括尚未成为集群正式成员的处于握手状态的节点)。
cluster_slots_pfail:哈希槽状态是PFAIL的数量。这些哈希槽可以继续被成功处理,除非它们的状态升级为FAIL 状态。
PFAIL 状态意味着您当前无法与节点交互,但此状态只是暂时的错误情况。
cluster_slots_fail:状态为FAIL 的哈希槽数量。如果该值非零,则集群节点无法处理查询,除非cluster-require-full。
覆盖范围设置为否。
cluster_current_epoch:集群本地当前纪元变量的值。该值在节点故障转移期间很有用,并且始终是增量且唯一的。
cluster_my_epoch:当前使用的节点的配置纪元值。这是与该节点关联的版本值。
cluster_size:包含并可以服务至少一个哈希槽的主节点数量。
cluster_stats_messages_sent:通过节点之间的二进制总线发送的消息数。
cluster_stats_messages_received:通过节点之间的二进制总线接收的消息数。
通过IP地址初始化集群(初始化方案1)
我最初尝试使用ip + 端口来初始化集群,但是当我在Kubernetes (K8s) 上启动服务时,服务IP 会发生变化,因此我最终使用DNS 来初始化集群。
执行此步骤后,如果更改为初始化DNS地址,则必须再次执行此步骤。如果觉得麻烦的话可以直接跳过。
记录Redis集群的所有IP+端口。初始化命令为:
1redis-cli –cluster 创建10.233.70.30:6379 10.233.70.32:6379 10.233.90.41:6379 10.233.90.43:6379 10.233.96.47:6
2
在Redis 集群中的任意节点上输入终端并运行上述命令。
集群初始化完成后,输入命令redis-cli进入命令终端,运行cluster information即可查看集群信息,如上图所示。
现在已经建立了6个集群节点和3个主节点,选择主节点进行后续操作。
如果检查集群节点时出现上图中的MOVED 2589 10.233.70.30:6379 错误,则说明redis-cli 没有启用集群模式,因此将命令更改为redis-cli -c 切换到集群模式。
使用内部DNS初始化(初始化方案2)
在K8s集群上使用ip方式初始化集群并不合适,因为K8s每次调度redis时IP地址使用情况都会发生变化。但是,如上所示直接使用内部DNS 初始化集群将导致错误。redis不适合域名支持,暂时可以使用Redis-tribe。
创建Redis部落服务
在项目空间中的“应用程序负载”“工作负载”“创建”“编辑YAML”下创建Redis-tribe 服务。
登录后复制
参数命名空间是项目名称。
1.
具体的YAML内容为:
创建后,在容器组中找到redis-cluster-tools。
初始化集群
点击容器名称,输入容器详细信息,然后进入终端。
1api版本:应用程序/v1
2kind:的部署
3 元数据:
4namespace:测试项目
5 个标签:
6app: redis – 集群工具
7name: redis – 集群工具
8 规格:
9 复制品: 1
10 选择器:
11matchLabels:
12app: redis – 集群工具
13个模板:
14 元数据:
15 个标签:
16app: redis – 集群工具
17name: pos-redis
18规格:
19个集装箱:
20- name: pos-redis
21image: sunnywang/redis-tools-ubuntu:v0.5.1
22imagePullPolicy: 如果不存在
23args:
24-/bin/bash
25- -c
26晚3600
27
创建后,在容器组中找到redis-cluster-tools。
初始化集群
点击容器名称,输入容器详细信息,然后进入终端。
首先,通过运行以下命令初始化主节点:这就是您之前的内部DNS 域名派上用场的地方。
1 redis-trib.py 创建了ig +short redis-cluster-v1-0.redis-cluster.test-project.svc.cluster.local:6379 `dig +shor
2
执行结果如下。
然后为每个主节点总共绑定三个对应的副本节点。
0 个节点到3 个节点
1redis-trib.py 创建了ig +short redis-cluster-v1-0.redis-cluster.test-project.svc.cluster.local:6379 `dig +shor
2
1 个节点到4 个节点
1redis-trib.py克隆–master-addr `dig +short redis-cluster-v1-0.redis-cluster.test-project.svc.cluster.local
2
2个节点到5个节点
1redis-trib.py 克隆–master-addr `dig +short redis-cluster-v1-1.redis-cluster.test-project.svc.cluster.loca
2
执行结果如下。
确认
要查看集群信息,只需进入集群节点的终端或运行cluster info 命令即可。
使用基本命令进行验证。要在集群模式下查看redis-cli,需要添加-c。
验证集群模式是否可以成功使用。
参考本文,您可以访问petaexpress官网提交工单,即可获得10美元免费红包。数量有限,先到先得。申请流程:注册登录发送职位请求并回复“文章网址+文章标题+打赏申请”
原作者: u_16566195 : https://blog.51cto.com/u_16566195/11339289 转载
以上#KK8S学习教程相关内容摘自网络,仅供参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/92943.html