摘要:摘要通過阿里云容器服務開啟你的數據服務之旅一云上運維自建數據庫之痛,使用容器服務自動恢復數據庫實例概述本文為大家介紹一種容器化的數據服務,通過使用云盤自動掛載實現的塊存儲來做到數據庫的免運維恢復。
摘要: 通過阿里云Kubernetes容器服務,開啟你的數據服務之旅 (一)云上運維自建數據庫之痛,使用容器服務自動恢復數據庫postgresql實例 概述 本文為大家介紹一種容器化的數據服務 posgresql db on ACK,通過使用云盤自動掛載實現的塊存儲PVC來做到數據庫的免運維恢復。
容器開啟數據服務之旅系列(一):Kubernetes如何解自建PostgreSQL運維之痛
概述
本文為大家介紹一種容器化的數據服務 posgresql db on ACK,通過使用云盤自動掛載實現的塊存儲PVC來做到數據庫的免運維恢復。借助阿里云Kubernetes服務與阿里云存儲資源的深度整合,打造數據庫實例的免運維異地(ECS)恢復的不死神話。
先決條件
1. 你已經通過阿里云容器服務創建了一個Kubernetes集群,詳細步驟參見創建Kubernetes集群
2. 阿里云容器服務的存儲插件(默認情況存儲插件已經自動部署在阿里云Kubernetes容器服務)
從容器服務控制臺創建一個posgresql實例
使用三次點擊來創建一個postgresql的不死實例
1. 登錄 https://cs.console.aliyun.com/
2. 點擊 “應用目錄”
3. 選擇 "postgresql"
?
4.(可選)選擇你的Kubernetes集群. e.g. k8s-gpu
5.(可選)選擇你的應用的命名空間。默認: default
6. 給你的數據庫應用取個容易記住的名字。 e.g. postgresql-online
?
7.(可選) 點擊 “參數” 來定制你的數據庫實例
1.修改 persistence.size: 20Gi 增加數據庫云盤的容量
2.修改 persistence.storageClass: alicloud-disk-efficiency 調整數據卷所在云盤的性能。比如改為alicloud-disk-ssd 掛載ssd類型的
?
## Persist data to a persitent volume persistence: enabled: true ## A manually managed Persistent Volume and Claim ## Requires persistence.enabled: true ## If defined, PVC must be created manually before volume will be bound # existingClaim: ## database data Persistent Volume Storage Class ## if defined, user has to define storageClassName: alicloud-disk to support dynamic provision of alicloud-disk ## If defined, storageClassName:## If set to "-", storageClassName: "", which disables dynamic provisioning ## If undefined (the default) or set to null, no storageClassName spec is ## set, choosing the default provisioner. (gp2 on AWS, standard on ## GKE, AWS & OpenStack) ## #storageClass: "alicloud-disk-ssd" storageClass: "alicloud-disk-efficiency" accessMode: ReadWriteOnce size: 20Gi subPath: "postgresql-db"
8 點擊 “部署”, 完成數據發布
9 點擊 “Kubernetes 控制臺”,查看部署實例
?
10 點擊容器組,點擊 postgresql-online-postgresql 查看數據庫實例密碼。容器實例啟動在節點:cn-hangzhou.i-bp1fazljd8u2ylk2otdo
?
?
11 測試postgresql數據庫的異地(ECS)恢復
1.添加測試數據
ssh` # kubectl run my-pg-postgresql-client --rm --tty -i --image postgres --env "PGPASSWORD=$PGPASSWORD" --command -- psql -U postgres -h postgresql-online-postgresql postgres If you don"t see a command prompt, try pressing enter. postgres=# create table t1 (id int); CREATE TABLE postgres=# insert into t1 values(10); INSERT 0 1 postgres=# select * from t1; id ---- 10 (1 row)
驅逐數據庫實例從ECS節點 i-bp1fazljd8u2ylk2otdo 到 i-
bp1fazljd8u2ylk2otdp #kubectl get pod -o wide | grep postgresql-online-postgresql postgresql-online-postgresql-78884fbcf6-6mfzz 1/1 Running 0 36m 172.30.4.4 cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl cordon cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl delete pod postgresql-online-postgresql-78884fbcf6-6mfzz pod "postgresql-online-postgresql-78884fbcf6-6mfzz" deleted # kubectl get pod -o wide|grep postgresql-online-postgresql #postgresql-online-postgresql-78884fbcf6-87ttg 0/1 Running 0 15s 172.30.3.5 cn-hangzhou.i-bp1fazljd8u2ylk2otdp
檢驗數據,實例遷移, 數據庫實例自動化恢復, 數據不丟失。
# kubectl get pod -o wide|grep postgresql-online-postgresql #postgresql-online-postgresql-78884fbcf6-87ttg 0/1 Running 0 15s 172.30.3.5 cn-hangzhou.i-bp1fazljd8u2ylk2otdp kubectl run my-pg-postgresql-client --rm --tty -i --image postgres > --env "PGPASSWORD=$PGPASSWORD" > --command -- psql -U postgres > -h postgresql-online-postgresql postgres If you don"t see a command prompt, try pressing enter. postgres=# select * from t1; id ---- 10 (1 row)
CLI控: 使用命令行完成postgresql實例的創建,遷移驗證
login k8s master and deploy an postgresql db in seconds.
sshhelm install -n postgresql-online --set "persistence.size=30Gi,persistence.storageClass=alicloud-disk-ssd" stable/postgresql
To get your user password run:
PGPASSWORD=$(kubectl get secret --namespace default my-pg-postgresql -o jsonpath="{.data.postgres-password}" | base64 --decode; echo)
To connect to your database run the following command (using the env variable from above):
kubectl run my-pg-postgresql-client --rm --tty -i --image postgres --env "PGPASSWORD=$PGPASSWORD" --command -- psql -U postgres -h postgresql-online-postgresql postgres
To connect to your database directly from outside the K8s cluster:
PGHOST=127.0.0.1 PGPORT=5432 # Execute the following commands to route the connection: export POD_NAME=$(kubectl get pods --namespace default -l "app=my-pg-postgresql" -o jsonpath="{.items[0].metadata.name}") kubectl port-forward $POD_NAME 5432:5432 #kubectl get pod -o wide | grep postgresql-online-postgresql postgresql-online-postgresql-78884fbcf6-6mfzz 1/1 Running 0 36m 172.30.4.4 cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl cordon cn-hangzhou.i-bp1fazljd8u2ylk2otdo #kubectl delete pod postgresql-online-postgresql-78884fbcf6-6mfzz pod "postgresql-online-postgresql-78884fbcf6-6mfzz" deleted # kubectl get pod -o wide|grep postgresql-online-postgresql #postgresql-online-postgresql-78884fbcf6-87ttg 0/1 Running 0 15s 172.30.3.5 cn-hangzhou.i-bp1fazljd8u2ylk2otdp
Test original postgresql db could be recovered on different node.
#kubectl get pod -o wide|grep postgresql-online-postgresql #postgresql-online-postgresql-78884fbcf6-87ttg 0/1 Running 0 15s 172.30.3.5 cn-hangzhou.i-bp1fazljd8u2ylk2otdp kubectl run my-pg-postgresql-client --rm --tty -i --image postgres > --env "PGPASSWORD=$PGPASSWORD" > --command -- psql -U postgres > -h postgresql-online-postgresql postgres If you don"t see a command prompt, try pressing enter. postgres=# select * from t1; id ---- 10 (1 row)
原文鏈接
閱讀更多干貨好文,請關注掃描以下二維碼:
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/17729.html
摘要:目前,高德主要有地圖導航兩個產品,以及地圖,同時還開放了服務,方便移動開發者更好地為用戶提供高質量基于位置的服務。另外,高德經常有大型活動,用戶訪問量會在某個階段激增,這時就需基于阿里云的彈性伸縮服務,就能實現快速擴展的基礎設施。 摘要: 云計算帶來的變革不言而喻,作為一種新型的IT交付模式,切實為企業節省IT成本、加快IT與企業業務結合效率、提升創新能力、加強管理水平以及增強系統本身...
閱讀 2727·2021-11-22 15:22
閱讀 1631·2021-11-22 14:56
閱讀 3615·2021-09-22 15:12
閱讀 2402·2021-09-02 15:41
閱讀 2122·2021-08-27 16:26
閱讀 1112·2019-08-30 15:55
閱讀 2137·2019-08-29 17:30
閱讀 665·2019-08-29 16:26