Day18-持久不一定需要防腐剂 stateful redis建立

前面有特别提到,redis这类应用程序如果需要保持资料持久化,不会因为重启pod造成资料消失,就必须要建立statefulset,那麽这边就来介绍如何建立redis的statefulsets。

建立stateful redis

要建立Statefulset,就要先建立headless service。

apiVersion: v1
kind: Service
metadata:
  name: redis-service
  labels:
    app: redis
spec:
  ports:
  - name: redis-port
    port: 6379
  clusterIP: None
  selector:
    app: redis
    appCluster: redis-cluster

再来建立有 statefulset 的 redis

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
spec:
  selector:
    matchLabels:
      app: redis
  serviceName: "redis"
  replicas: 1
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
      - name: redis
        image: redis
        command: ["redis-server", "--appendonly", "yes"]
        ports:
        - containerPort: 6379
          name: web
        volumeMounts:
        - name: redis-aof
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: redis-aof
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "gp2"
      resources:
        requests:
          storage: 1Gi

redis本身持久化设定

这边特别提一下这段设定

- name: redis
    image: redis
    command: ["redis-server", "--appendonly", "yes"]

可以看到command那边提到appendonly,这个是什麽呢?
redis要持久化,除了pod设定改成statefulset外,也必须特别设定持久化。
有两种方式:

  1. RDB(Redis DataBasa file):
    已指定间隔对资料进行snapshot储存,然後在进行操作时,会fork出一个process进行操作,fork完成後主process就可以不受影响,不过由於其间隔复制的特性,有时会丢失资料。

  2. AOF(Append-Only File):
    透过fsync策略进行备份,有三种模式可以选:

    1. 无fsync
    2. 一秒钟一次fsync(预设)
    3. 每次执行写入时fsync
      由於AOF的特性是将Redis的写入操作记下来,因此比较容易阅读,也比较容易进行分析,并且丢失程度比RDB要来的少。
      不过相较於RDB,他的资料量也比较大以及fsync有开启时,效能会比RDB差(一般使用情境下看不出影响)。

在这边介绍完了Statefulset范例後,也顺便了解了redis持久化的设定,而除了Statefulset和ReplicaSet外,还有一个DaemonSet,因此下一章会介绍DaemonSet。


<<:  [DAY11] 部署 Automated ML

>>:  Git

[C 语言笔记--Day25] 不只有一个 expression 的 macro

大纲 1. 不只有一个 expression 的 macro 2. 使用 code block 解决...

拥抱组合叠叠乐 Composition API [序]

前言 为了解决 Vue.js 2x 元件之间无法重复使用逻辑和程序码,而出现了 Compositio...

DAY3 起手式--Nuxt.js路由设定

Nuxt.js 跟 Vue-Router 是什麽关系? 有使用过 vue-router 的捧由,别紧...

创建App-讯息界面

创建App-讯息界面 今天进行讯息界面,本界面会使用Button、Text Field等基本UI来建...

Day22 - 在 XState, 状态机器里无穷尽的状态、 资料:Extended State and context and assign API - 2

问题延伸 1. 请问如何动态载入不同的 context ? 比如说我们这台状态机想要给许多不同的店家...