当前位置: 首页 > news >正文

网站建设方案平台今日新闻消息

网站建设方案平台,今日新闻消息,四川省建设厅职称网站,建设银行卡激活网站Kubernetes部署高可用多主多从的Redis集群 环境准备准备Kubernetes准备存储类 部署redis准备一个命名空间命令创建yaml文件创建(推荐) 准备redis配置文件准备部署statefulset的资源清单文件执行文件完成部署初始化集群 环境准备 准备Kubernetes 首先你…

Kubernetes部署高可用多主多从的Redis集群

  • 环境准备
    • 准备Kubernetes
    • 准备存储类
  • 部署redis
    • 准备一个命名空间
      • 命令创建
      • yaml文件创建(推荐)
    • 准备redis配置文件
    • 准备部署statefulset的资源清单文件
    • 执行文件完成部署
    • 初始化集群

环境准备

准备Kubernetes

首先你需要一个Kubernetes集群,如图我已经安装好了一个Kubernetes集群:
在这里插入图片描述

如果你还没有Kubernetes集群可参考我写的文章:https://blog.csdn.net/m0_51510236/article/details/130842122

准备存储类

你还需要一个可动态供应的存储类,我之前已经写过一篇关于安装NFS动态供给存储类的文章:https://blog.csdn.net/m0_51510236/article/details/132641343(这篇文章的上半部分),如图我已经安装好了一个NFS的存储类(名字为 nfs-client):
在这里插入图片描述

部署redis

我之前写过一篇在物理机上安装高可用多主多从的redis集群的文章:https://blog.csdn.net/m0_51510236/article/details/132684529,这篇文章参考的那片物理机上安装集群的步骤来。

准备一个命名空间

为了贴近生产环境,我们先创建一个命名空间:

命令创建

kubectl create namespace deploy-test

yaml文件创建(推荐)

apiVersion: v1
kind: Namespace
metadata:name: deploy-test
spec: {}
status: {}

准备redis配置文件

首先我们需要一个Redis的配置文件,我已经准备好了,注意名字命名为 redis.conf

# 关闭保护模式
protected-mode no# 日志级别
loglevel warning# 日志存放目录
logfile "/data/redis.log"# 数据文件目录
dir /data
dbfilename dump.rdb# 数据库数量
databases 16# 保存数据库到数据文件
save 900 1
save 300 10
save 60 10000# 集群相关配置
cluster-enabled yes
cluster-config-file nodes-6379.conf
cluster-node-timeout 15000

先把这个文件复制到服务器上,如图:
在这里插入图片描述

然后我们需要创建一个ConfigMap,可以直接通过下面命令生产ConfigMap的yaml资源清单文件:

kubectl create configmap redis-cluster-config --from-file=redis.conf -n deploy-test --dry-run=client -o yaml

生成了如图:
在这里插入图片描述

因为我们真实部署中可能还会将这个应用部署到其他集群,所以我们记得保存这个配置文件:

apiVersion: v1
data:redis.conf: |# 关闭保护模式protected-mode no# 日志级别loglevel warning# 日志存放目录logfile "/data/redis.log"# 数据文件目录dir /datadbfilename dump.rdb# 数据库数量databases 16# 保存数据库到数据文件save 900 1save 300 10save 60 10000# 集群相关配置cluster-enabled yescluster-config-file nodes-6379.confcluster-node-timeout 15000
kind: ConfigMap
metadata:name: redis-cluster-confignamespace: deploy-test

我们将这个内容保存到一个文件中,如 redis-deploy.yaml
在这里插入图片描述

准备部署statefulset的资源清单文件

资源清单文件我已经准备好了,下面有详细的说明:

# 创建一个Redis部署要用到的Service
apiVersion: v1
kind: Service
metadata:name: deploy-redis-svcnamespace: deploy-testlabels:app: redis
spec:ports:- port: 6379name: redistargetPort: 6379nodePort: 30379selector:app: redistype: NodePortsessionAffinity: ClientIP---apiVersion: apps/v1
kind: StatefulSet
metadata:name: deploy-redisnamespace: deploy-test
spec:selector:matchLabels:app: redis# 引用上面定义的ServiceserviceName: "deploy-redis-svc"# 注意这里部署六个节点,按照本篇文章的逻辑最好不要修改replicas: 6template:metadata:labels:app: redisspec:terminationGracePeriodSeconds: 10containers:- command:# 这里指定使用那个配置文件启动redis-server- "redis-server"- "/usr/local/etc/redis.conf"name: redis# 因为redis6集群对域名支持不好,并且Kubernetes是需要通过域名连接各个pod的,所以我们采用redis7来完成这次部署# 如果你能拉取到DockerHub上的镜像那么你就使用这个# image: docker.io/library/redis:7.0.12# 如果你拉取不到,那么就使用我拉取并推送到国内阿里云的镜像image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/redis:7.0.12ports:- containerPort: 6379name: redisvolumeMounts:# 挂载redis的数据卷,使用的是我在下面声明的存储类模版- name: redis-datamountPath: /data# 挂载redis的配置文件- name: redis-configmountPath: /usr/local/etcreadOnly: truevolumes:# 读取configmap,获取redis的配置文件,方便上面挂载这个配置文件- name: redis-configconfigMap:name: redis-cluster-configitems:- key: redis.confpath: redis.conf# 定义存储类模版volumeClaimTemplates:- metadata:name: redis-data # 这个名字要与上面的对应namespace: deploy-testspec:accessModes:- ReadWriteMany # 设置多节点读写模式resources:requests:storage: 1Gi # 申请1个g的存储空间,可根据自己的服务器空间修改storageClassName: nfs-client # 这里填写你存储类的名字

完整的资源清单文件内容:

apiVersion: v1
kind: Namespace
metadata:name: deploy-test
spec: {}
status: {}---apiVersion: v1
data:redis.conf: |# 关闭保护模式protected-mode no# 日志级别loglevel warning# 日志存放目录logfile "/data/redis.log"# 数据文件目录dir /datadbfilename dump.rdb# 数据库数量databases 16# 保存数据库到数据文件save 900 1save 300 10save 60 10000# 集群相关配置cluster-enabled yescluster-config-file nodes-6379.confcluster-node-timeout 15000
kind: ConfigMap
metadata:name: redis-cluster-confignamespace: deploy-test
[root@k8s-master ~]# vim re
reboot-all.sh      redis.conf         redis-deploy.yaml  
[root@k8s-master ~]# vim redis-deploy.yaml 
[root@k8s-master ~]# vi redis-deploy.yaml 
[root@k8s-master ~]# cat redis-deploy.yaml \
> 
apiVersion: v1
kind: Namespace
metadata:name: deploy-test
spec: {}
status: {}---apiVersion: v1
data:redis.conf: |# 关闭保护模式protected-mode no# 日志级别loglevel warning# 日志存放目录logfile "/data/redis.log"# 数据文件目录dir /datadbfilename dump.rdb# 数据库数量databases 16# 保存数据库到数据文件save 900 1save 300 10save 60 10000# 集群相关配置cluster-enabled yescluster-config-file nodes-6379.confcluster-node-timeout 15000
kind: ConfigMap
metadata:name: redis-cluster-confignamespace: deploy-test---apiVersion: v1
kind: Service
metadata:name: deploy-redis-svcnamespace: deploy-testlabels:app: redis
spec:ports:- port: 6379name: redistargetPort: 6379nodePort: 30379selector:app: redistype: NodePortsessionAffinity: ClientIP---apiVersion: apps/v1
kind: StatefulSet
metadata:name: deploy-redisnamespace: deploy-test
spec:selector:matchLabels:app: redisserviceName: "deploy-redis-svc"replicas: 6template:metadata:labels:app: redisspec:terminationGracePeriodSeconds: 10containers:- command:- "redis-server"- "/usr/local/etc/redis.conf"name: redis# image: docker.io/library/redis:7.0.12image: registry.cn-shenzhen.aliyuncs.com/xiaohh-docker/redis:7.0.12ports:- containerPort: 6379name: redisvolumeMounts:- name: redis-datamountPath: /data- name: redis-configmountPath: /usr/local/etcreadOnly: truevolumes:- name: redis-configconfigMap:name: redis-cluster-configitems:- key: redis.confpath: redis.confvolumeClaimTemplates:- metadata:name: redis-datanamespace: deploy-testspec:accessModes:- ReadWriteManyresources:requests:storage: 1GistorageClassName: nfs-client

执行文件完成部署

我们可以使用这行命令执行这个文件完成部署:

kubectl apply -f redis-deploy.yaml

执行后如图:
在这里插入图片描述

可以通过这行命令监控它的部署:

watch kubectl get all -o wide -n deploy-test

看到6个pod都已经成功运行起来了:
在这里插入图片描述

初始化集群

我们部署的pod是statefulset类型的pod,所以我们访问pod的域名格式为 pod名字.service名字.命名空间.svc.cluster.local,所以我们在集群中访问六个redis的地址分别为:

deploy-redis-0.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-1.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-2.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-3.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-4.deploy-redis-svc.deploy-test.svc.cluster.local:6379
deploy-redis-5.deploy-redis-svc.deploy-test.svc.cluster.local:6379

接下来我们需要去到里面的任何一个pod,去执行一行命令,使用这行命令进入到第一个pod:

# 注意修改你自己的命名空间和pod名字
kubectl exec -itn deploy-test pod/deploy-redis-0 bash

进入后如图:
在这里插入图片描述

然后我们执行一下下面这行命令:

redis-cli --cluster create --cluster-replicas 1 \
deploy-redis-0.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-1.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-2.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-3.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-4.deploy-redis-svc.deploy-test.svc.cluster.local:6379 \
deploy-redis-5.deploy-redis-svc.deploy-test.svc.cluster.local:6379

执行后会出现这个提示:
在这里插入图片描述

它问我们这样的一个分配方式行不行,这里直接输入yes然后回车,接下来看到下面这个画面代表集群配置成功:
在这里插入图片描述

我们接下来使用这行命令来进入集群:

# -c 的意思是进入集群
redis-cli -c

然后我们输入这行命令来查看集群里的节点:

CLUSTER NODES

可以看到是三master三node的redis集群:
在这里插入图片描述

到这里Kubernetes上搭建redis高可用集群就已经完毕了。


文章转载自:
http://dinncounderproduction.knnc.cn
http://dinncoventuri.knnc.cn
http://dinncothermotics.knnc.cn
http://dinncotpilisi.knnc.cn
http://dinncominutely.knnc.cn
http://dinncolactic.knnc.cn
http://dinncobrandied.knnc.cn
http://dinncoaccompt.knnc.cn
http://dinncoannuation.knnc.cn
http://dinncolaparoscope.knnc.cn
http://dinncomicrosleep.knnc.cn
http://dinncobet.knnc.cn
http://dinncoastigmometer.knnc.cn
http://dinncosupplier.knnc.cn
http://dinncoprohormone.knnc.cn
http://dinncodissection.knnc.cn
http://dinncobimanous.knnc.cn
http://dinncobritska.knnc.cn
http://dinncosinecurist.knnc.cn
http://dinncointerwork.knnc.cn
http://dinncomausoleum.knnc.cn
http://dinncoraconteuse.knnc.cn
http://dinncosouthernwood.knnc.cn
http://dinncosmoggy.knnc.cn
http://dinncoapulian.knnc.cn
http://dinncospiedino.knnc.cn
http://dinncotruncheon.knnc.cn
http://dinncomosan.knnc.cn
http://dinncocraniofacial.knnc.cn
http://dinncosulfazin.knnc.cn
http://dinncosubhead.knnc.cn
http://dinncotimes.knnc.cn
http://dinncoveratridine.knnc.cn
http://dinncoadamsite.knnc.cn
http://dinncopompeii.knnc.cn
http://dinncodivinize.knnc.cn
http://dinncotrihedral.knnc.cn
http://dinncofard.knnc.cn
http://dinncohemoleukocyte.knnc.cn
http://dinncocanea.knnc.cn
http://dinncoxerosis.knnc.cn
http://dinnconodum.knnc.cn
http://dinncohemothorax.knnc.cn
http://dinncodephlogisticate.knnc.cn
http://dinncopullet.knnc.cn
http://dinncoelectroetching.knnc.cn
http://dinncopalmatifid.knnc.cn
http://dinncoboson.knnc.cn
http://dinncocombustible.knnc.cn
http://dinncoallogamous.knnc.cn
http://dinncobriony.knnc.cn
http://dinncohuckaback.knnc.cn
http://dinncolucent.knnc.cn
http://dinncosadness.knnc.cn
http://dinncospifflicate.knnc.cn
http://dinncohistie.knnc.cn
http://dinncotaittinger.knnc.cn
http://dinncobewigged.knnc.cn
http://dinncoperipherally.knnc.cn
http://dinncoumohoite.knnc.cn
http://dinncobrio.knnc.cn
http://dinncobullyrag.knnc.cn
http://dinncodirt.knnc.cn
http://dinncotrephination.knnc.cn
http://dinncoillth.knnc.cn
http://dinncoexorbitant.knnc.cn
http://dinncobarn.knnc.cn
http://dinncosolution.knnc.cn
http://dinncoforenoon.knnc.cn
http://dinncoheartily.knnc.cn
http://dinncoshnaps.knnc.cn
http://dinncobrazenly.knnc.cn
http://dinncotickey.knnc.cn
http://dinncounguardedly.knnc.cn
http://dinncoendosporous.knnc.cn
http://dinncooxo.knnc.cn
http://dinncoiv.knnc.cn
http://dinncoglimmering.knnc.cn
http://dinncotalmud.knnc.cn
http://dinncoelchee.knnc.cn
http://dinncograunchy.knnc.cn
http://dinncounrelenting.knnc.cn
http://dinncoschizanthus.knnc.cn
http://dinncoafc.knnc.cn
http://dinncobinocular.knnc.cn
http://dinncorfc.knnc.cn
http://dinncomultiwall.knnc.cn
http://dinncomyeloperoxidase.knnc.cn
http://dinncovasal.knnc.cn
http://dinncokilobar.knnc.cn
http://dinncoliechtenstein.knnc.cn
http://dinncodipster.knnc.cn
http://dinncoheartbroken.knnc.cn
http://dinncomarguerite.knnc.cn
http://dinncoeldred.knnc.cn
http://dinncocalking.knnc.cn
http://dinncoserving.knnc.cn
http://dinncorefusal.knnc.cn
http://dinncotripoli.knnc.cn
http://dinncostagirite.knnc.cn
http://www.dinnco.com/news/131076.html

相关文章:

  • wordpress max pageseo优化分析
  • 威廉网站建设seo优化思路
  • 贵州省建设厅官方网站电话品牌推广专员
  • 广州网站建设系统上海优化seo公司
  • 雷诺网站群建设关键词热度查询工具
  • 广告网站大全广告联盟怎么做
  • 管理咨询的工作形式与特点包括了seo没什么作用了
  • 广州做网站最好的公司推广网站的公司
  • java和php做网站谁好微信客户管理系统
  • wordpress 静态规则优化提升
  • 做网站的价格什么是网络推广营销
  • 公司做公司网站做网络推广有前途吗
  • 柳州正规网站建设加盟哪里有做网络推广的
  • 网站备案 接电话中国重大新闻
  • 中国建设银行青岛分行网站网站维护一般怎么做
  • 网站建设发布教程视频教程接推广一般多少钱
  • 能够做冶金工程毕业设计的网站我想做app推广代理
  • react.js 做网站好吗谷歌seo快速排名优化方法
  • 网站服务器租赁需要什么手续深圳关键词seo
  • 做网站那个平台自己怎么注册网站
  • 建设部人才交流中心网站seo全网推广
  • 做网站app外包
  • 濮阳市建站公司关键词排名优化报价
  • 宿迁明远建设有限公司网站百度主页
  • 网站设计专业的公司百度客服人工服务电话
  • wordpress捐北京关键词优化平台
  • 建设公司网站标题搜索引擎免费下载
  • 锡林郭勒盟建设工程造价管理网站bt磁力搜索
  • 网站设计需求分析报告深圳信息公司做关键词
  • 做网站的图片要多少像素网站排名优化工具