1. 程式人生 > 其它 >Redis 3 主 3 從(helm安裝)

Redis 3 主 3 從(helm安裝)

資源清單

本文安裝 Redis 3主3從 依賴 K8S叢集helm ,本文不提供 K8S叢集helm 安裝方式

軟體 版本
chart 7.5.0
redis-cluster 6.2.6
kubernetes v1.20.2
helm v3.4.2

helm 安裝 Redis 3主3從

1. 新增 bitnami 的倉庫

$ helm repo add bitnami https://charts.bitnami.com/bitnami

2. 查詢 Redis 資源

$ helm repo update
$ helm search repo redis
NAME                           	CHART VERSION	APP VERSION  	DESCRIPTION                                       
bitnami/redis                  	16.9.0       	6.2.7        	Redis(TM) is an open source, advanced key-value...
bitnami/redis-cluster          	7.5.2        	6.2.7        	Redis(TM) is an open source, scalable, distribu...

3. 拉取 chart 到本地

$ mkdir /root/redis && cd /root/redis

# 拉取 chart 到本地 /root/redis 目錄
$ helm pull bitnami/redis-cluster --version 7.5.0

$ tar -xvf redis-cluster-7.5.0.tgz
$ cp redis-cluster/values.yaml ./values-test.yaml

# 檢視當前目錄層級
$ tree -L 2
.
├── redis-cluster
│   ├── Chart.lock
│   ├── charts
│   ├── Chart.yaml
│   ├── img
│   ├── README.md
│   ├── templates
│   └── values.yaml
├── redis-cluster-7.5.0.tgz
└── values-test.yaml

4. 對本地 valuse-test.yaml 修改

$ cat values-test.yaml 

global:
  redis:
    password: "redis123"		# 定義 redis 密碼


service:
  ports:
    redis: 6379		# 定義 redis 服務埠


redis:
  livenessProbe: 		# 修改了 livenessProbe 的探測時間
    enabled: true
    initialDelaySeconds: 60
    periodSeconds: 30
    timeoutSeconds: 10
    successThreshold: 1
    failureThreshold: 5

  readinessProbe:		# 修改了 readinessProbe 的探測時間
    enabled: true
    initialDelaySeconds: 60
    periodSeconds: 30
    timeoutSeconds: 10
    successThreshold: 1
    failureThreshold: 5

  startupProbe:		# 修改了 startupProbe 的探測時間
    enabled: false
    path: /
    initialDelaySeconds: 300
    periodSeconds: 30
    timeoutSeconds: 10
    failureThreshold: 6
    successThreshold: 1

  nodeSelector: {"node":"middleware"}		# 設定了服務的 node 親和性,確保服務執行在指定的節點 (部分 k8s-node 節點執行中介軟體,部分 k8s-node 節點執行業務)


updateJob:
  nodeSelector: {"node":"middleware"} 		# 設定了服務的 node 親和性,確保服務執行在指定的節點 (部分 k8s-node 節點執行中介軟體,部分 k8s-node 節點執行業務)

5. 安裝 Redis 叢集

# 建立 test-middleware 名稱空間
$ kubectl create ns test-middleware

# 安裝 Redis 叢集
$ helm -n test-middleware install redis-cluster redis-cluster -f values-test.yaml

## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE
-n 指定 kubernetes 叢集名稱空間
-f 指定使用的配置檔案,檔案中定義的配置可以覆蓋 redis-cluster/values.yaml 檔案中配置


# 檢視部署的 redis-cluster 叢集
$ helm -n test-middleware list
NAME          	NAMESPACE     	REVISION	UPDATED                                	STATUS  	CHART               	APP VERSION
redis-cluster 	test-middleware	1       	2022-05-06 20:46:11.085219867 +0800 CST	deployed	redis-cluster-7.5.0 	6.2.6 

$ kubectl -n test-middleware get pods -l helm.sh/chart=redis-cluster-7.5.0
NAME              READY   STATUS    RESTARTS   AGE
redis-cluster-0   1/1     Running   0          17h
redis-cluster-1   1/1     Running   1          17h
redis-cluster-2   1/1     Running   0          17h
redis-cluster-3   1/1     Running   0          17h
redis-cluster-4   1/1     Running   0          17h
redis-cluster-5   1/1     Running   0          17h

> 預設 redis-cluster-0 和 redis-cluster-1 為主從,0主1從
> 預設 redis-cluster-2 和 redis-cluster-3 為主從,0主1從
> 預設 redis-cluster-4 和 redis-cluster-5 為主從,0主1從

> 所以叢集主節點為:redis-cluster-0 redis-cluster-2 redis-cluster-4
> 所以叢集從節點為:redis-cluster-1 redis-cluster-3 redis-cluster-5

> default名稱空間如何訪問此 redis 叢集,ping redis-cluster-[0-5].redis-cluster.test-middleware

6. 連線 Redis 叢集 驗證服務

# 獲取 Redis 叢集的密碼
$ kubectl get secret --namespace uat-middleware redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode
redis123


# 將 Redis 的密碼存到 linux 的環境變數 REDIS_PASSWORD 中
$ export REDIS_PASSWORD=$(kubectl get secret --namespace "demo" redis-service-redis-cluster -o jsonpath="{.data.redis-password}" | base64 --decode)


# 啟動一個臨時容器
$ kubectl run --namespace uat-middleware redis-cluster-client --rm --tty -i --restart='Never' \
--env REDIS_PASSWORD=$REDIS_PASSWORD \
--image docker.io/bitnami/redis-cluster:6.2.6-debian-10-r193 -- bash

# 登陸 Redis 叢集
$ redis-cli -c -h redis-service-redis-cluster -a $REDIS_PASSWORD

# 檢視叢集狀態
> cluster info
> cluster nodes


參考文件

https://www.modb.pro/db/112292

https://artifacthub.io/packages/helm/bitnami/redis-cluster/7.5.0