在 K8s 上使用 KubeBlocks 提供的 MySQL operator 部署高可用 WordPress 站點

引言

WordPress

WordPress 是全球最流行的內容管理系統(CMS),自 2003 年發布以來,已成為網站建設的首選工具。其廣泛的插件和主題生態系統使用戶能夠輕松擴展功能和美化外觀。活躍的社區提供豐富的資源和支持,進一步降低了開發和維護的難度。

憑借易用性、靈活性和強大的社區支持,WordPress 已成為全球數百萬用戶的共同選擇,在網站建設領域占據了重要地位。

什么是 KubeBlocks

KubeBlocks 是一個可以管理多種數據庫和有狀態中間件的 K8s operator,支持管理 MySQL、PostgreSQL、Redis、MongoDB、Kafka、ClickHouse、Elasticsearch 等 30 余種數據庫。其原理是定義一組通用和抽象的 API(CRDs)來描述各種引擎的共同屬性,在其之上,數據庫廠商和開發者可以通過插件來描述不同引擎的差異。

為什么要用 KubeBlocks 來管理 WordPress

在使用 WordPress Bitnami 鏡像時,雖然內置的 MariaDB 提供了一個開箱即用的數據庫解決方案,但存在幾方面的缺陷:

  • 高可用性限制:Bitnami 鏡像中的 MariaDB 通常是單節點部署,如果節點出現問題會導致網站服務中斷;內置的 MariaDB 也不具備自動故障轉移機制。
  • 資源競爭:MariaDB 的數據庫和網站服務部署在同一個 Pod 中,會產生資源競爭,存在資源分配難題。
  • 擴展性差:雖然 MariaDB 可以進行一定程度的擴展,但水平擴展(通過增加更多數據庫實例來提升性能和容量)相對復雜,需要額外的管理和配置工具。
  • 監控與管理:內置的 MariaDB 缺乏完善的監控和管理工具,難以及時發現和解決性能問題或故障。

而使用 KubeBlocks 來部署提供 WordPress 數據庫服務,可以很好解決 MariaDB 的缺陷:

  • 高可用性:可以分別為 WordPress 和數據庫配置高可用方案,提高整體系統的可靠性。
  • 資源隔離:WordPress 和數據庫運行在不同的 Pod 中,資源隔離性更好,避免了資源競爭。
  • 拓展性強:可以獨立擴展 WordPress 和數據庫的副本數,分別調整它們的資源配置。
  • 快捷管理:KubeBlocks 可以快速一鍵部署 WordPress 所需數據庫集群,無需額外操作,且內置數據庫的備份和監控功能,能提高管理效率。

快速部署

安裝 KubeBlocks

KubeBlocks 提供了專屬的 kbcli 命令行管理工具,如果您沒有安裝 KubeBlocks,也能通過幾行命令輕松安裝KubeBlocks。

安裝前,請確保您的環境滿足 KubeBlocks 的環境要求。

  1. 安裝 kbcli。

    curl -fsSL https://kubeblocks.io/installer/install_cli.sh | bash
    
  2. 安裝 KubeBlocks。

    kbcli kubeblocks install
    
  3. 檢查 KubeBlocks 是否安裝成功。

    kbcli kubeblocks status
    

您也可參考官方安裝文檔,查看具體操作說明。

  • 安裝 kbcli
  • 安裝 KubeBlocks

一鍵部署高可用數據庫集群

在部署 WordPress 之前,首先需要部署一個數據庫集群用于管理 WordPress 的后臺數據,可使用 kbcli 或者 kubectl 部署集群。

  1. 創建高可用集群。

    這里我們使用 KubeBlocks apecloud-mysql addon 創建一個 MySQL 數據庫作為 WordPress 的數據庫。使用 kbcli 快速部署一個具有高可用多副本且達到生產環境水平的 MySQL 數據庫集群。

    設置集群參數 replicas=3,以啟用數據庫 RaftGroup 模式,創建一個 MySQL 三副本集群。

    # 啟用 addon(默認開啟)
    kbcli addon install apecloud-mysql # 部署集群 可以設置參數,如 --set replicas=3 表示三副本
    kbcli cluster create apecloud-mysql --cluster-definition=apecloud-mysql --set replicas=3
    
  2. 查看集群狀態,等待所有相關 Pod 變為 running 狀態:

    kubectl get pods
    

  3. 獲取訪問地址。

    可通過 services 訪問已創建的 MySQL 集群,也可通過 Pod 直接訪問。本文以通過 services 訪問為例。

    執行以下命令,獲取 service 地址,即 apecloud-mysql.default(命名空間).svc.cluster.local (默認后綴)

    kubectl get services
    

WordPress 部署

配置數據庫
  1. 根據實際需要,可以在數據庫中創建若干用戶,以便于 WordPress 進行角色管理。下面我們將創建一個 myadmin 用戶作為 WordPress 安裝時的主用戶。

    使用以下命令以 root 身份連接 MySQL 數據庫。

    kbcli cluster connect apecloud-mysql 
    
  2. 進入數據庫后,執行以下 SQL 語句創建用戶并賦予權限,可根據需要設置數據庫權限。

    CREATE USER 'myadmin'@'%' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%';
    FLUSH PRIVILEGES;
    create database wordpress;
    

    注意

    可根據需求選擇創建 secret,用于 WordPress 安裝時引用,以避免明文傳輸密碼。

  3. 執行如下命令創建 mysql-secret,設置鍵 mariadb-password=password,安裝時 WordPress 會優先將該密碼鍵值作為數據庫密碼,注意密碼的鍵名必須為 mariadb-password。用戶名不會從該 secret 中讀取。

    kubectl create secret generic mysql-secret --from-literal=mariadb-password=password
    
一鍵安裝 WordPress
  1. 使用 helm install 命令安裝 WordPress,同時配置前面所述參數。

    helm install my-release oci://registry-1.docker.io/bitnamicharts/wordpress \
    --set mariadb.enabled=false \
    --set externalDatabase.host=apecloud-mysql.default.svc.cluster.local \ 
    --set externalDatabase.database=wordpress \ 
    --set externalDatabase.port=3306 \
    --set externalDatabase.user="myadmin"
    --set externalDatabase.existingSecret="mysql-secret" \
    --set replicaCount=2
    

    參數說明:

    • mariadb.enabled:需設置為 false,將禁用 MariaDB 的安裝,以使用外部數據庫服務。
    • host:我們可以使用前面的 MySQL service 地址來訪問 MySQL 服務,如:apecloud-mysql.default.svc.cluster.local
    • user, database, port:根據實際情況設置。
    • existingSecret:推薦使用該方式傳輸密碼。可引用前面創建的 secret 來傳輸密碼,以避免明文傳輸這些內容。注意 secret 必須包含連接密碼,設置了 existingSecret 后,password 會被忽略。
    • password:可選設置。本文推薦使用 existingSecret 引用前面創建的 secret 來傳輸密碼,避免明文傳輸。此外,設置了 existingSecret 后,password 將被忽略。
    • replicaCount:代表 WordPress 實例啟動 Pod 數量。
  2. 查看 Pod 運行情況 ,確保所有 Pod ready 且處于 running 狀態 :

    kubectl get pods
    

  3. 進入 WordPress 容器,可遠程連接數據庫,查看 WordPress 數據庫信息。

    kubectl exec -it wordpress-584444f68b-sxcss  -- bash
    mysql -h  apecloud-mysql.default.svc.cluster.local  -u Wordpress
    

至此,你已經成功部署了 WordPress 和對應的數據庫集群。

高可用性能測試

本文將通過刪除其中一個 Pod 來模擬故障。

kubectl delete pod apecloud-mysql-0

可以看到 Pod apecloud-mysql-0 現在 ready 狀態是 3/4,其中 MySQL 容器無法使用。

但并不影響正常連接數據庫,且可以看到 apecloud-mysql-1 成為了 leader(默認是 apecloud-mysql-0),這是 KubeBlocks 強大故障轉移能力的體現之一。

數據庫擴容測試

當出現性能瓶頸等情況,或許需要對數據庫節點進行資源擴容,KubeBlocks 提供了非常方便的擴容命令,可使用 kbcli vsclae 命令輕松擴充計算資源。

kbcli cluster vscale mycluster --components=apecloud-mysql --cpu=500m --memory=500Mi

更多數據庫參數設置可以參考官方文檔。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/46275.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/46275.shtml
英文地址,請注明出處:http://en.pswp.cn/web/46275.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[RK3588-Android12] 關于如何取消usb-typec的pd充電功能

問題描述 RK3588取消usb-typec的pd充電功能 解決方案: 在dts中fusb302節點下usb_con: connector子節點下添加如下熟悉: 打上如下2個補丁 diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c8a4e57c9f9b..173f8cb7…

使用OpenCV尋找圖像中的輪廓

引言 OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。它提供了大量的視覺處理功能,包括圖像和視頻捕獲、特征檢測與匹配、圖像變換、圖像分割、顏色空間轉換等。在圖像處理中,尋找圖像中的…

electron項目中實現視頻下載保存到本地

第一種方式:用戶自定義選擇下載地址位置 渲染進程 // 渲染進程// 引入 import { ipcRenderer } from "electron";// 列表行數據下載視頻操作,diffVideoUrl 是視頻請求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…

【數字電路學習新助手】掌握電路仿真軟件,開啟數字電路知識的新篇章

在信息科技日新月異的今天,數字電路知識的重要性不言而喻。無論是通信工程、計算機科學與技術,還是電子信息技術等領域,數字電路都是基礎中的基礎。然而,對于初學者來說,數字電路的學習往往充滿了挑戰。幸運的是&#…

Axure中繼器入門:打造你的動態原型

前言 中繼器 是 Axure 中的一個高級功能,它能夠在靜態頁面上模擬后臺數據交互的操作,如增加、刪除、修改和查詢數據,盡管它不具備真實數據存儲能力。 中繼器就像是一個臨時的數據庫,為我們在設計原型時提供動態數據管理的體驗&a…

中職省培丨2024年大數據技術中職教師專業技能培訓班企業參觀實踐圓滿結束

7月17日,“2024年大數據技術中職教師專業技能培訓班(省培)”參訓老師蒞臨廣東泰迪智能科技股份有限公司產教融合實訓中心開展企業參觀實踐。泰迪智能科技董事長張良均、中職業務部總監李振林、中職業務部經理黃炳德、校企合作經理吳桂鋒及來自…

centos跳過首次創建用戶

centos跳過首次創建用戶 centos跳過首次創建用戶 在安裝系統后,登錄的時候總是讓新建一個普通用戶,很是煩人,于是想辦法解決一下 方法一 在CentOS上,圖形化登錄(如GNOME)通常要求您創建一個用戶來登錄。…

.net core appsettings.json 配置 http 無法訪問

1、在appsettings.json中配置"urls": "http://0.0.0.0:8188" 2、但是網頁無法打開 3、解決辦法,在Program.cs增加下列語句 app.UseAntiforgery();

vue 如何做一個動態的 BreadCrumb 組件,el-breadcrumb ElementUI

vue 如何做一個動態的 BreadCrumb 組件 el-breadcrumb ElementUI 一、ElementUI 中的 BreadCrumb 定義 elementUI 中的 Breadcrumb 組件是這樣定義的 <template><el-breadcrumb separator"/"><el-breadcrumb-item :to"{ path: / }">主…

爬蟲的概念

爬蟲&#xff08;Web Crawler 或 Web Spider&#xff09;是一種自動化腳本或程序&#xff0c;用于瀏覽萬維網&#xff08;World Wide Web&#xff09;并抓取網頁上的信息。它們按照設定的規則自動地訪問互聯網上的網頁&#xff0c;提取所需的數據&#xff0c;如文本、圖片、視頻…

搭建七日殺服務端系統選擇,系統如何選擇

《七日殺》是一款集合了第一人稱射擊、恐怖生存、塔防與角色扮演要素于一身的開放世界僵尸游戲。玩家需要在美國亞歷桑納地區作為幸存者生存&#xff0c;并探究整個事件背后的真相。對于喜歡這款游戲的玩家來說&#xff0c;搭建自己的專屬服務器不僅能降低延遲&#xff0c;還能…

精通Python數據可視化:Matplotlib柱狀圖、直方圖與餅狀圖實戰解析

精通Python數據可視化&#xff1a;Matplotlib柱狀圖、直方圖與餅狀圖實戰解析 引言 在數據分析和科學研究中&#xff0c;數據可視化扮演著至關重要的角色。Matplotlib是Python中一個廣泛使用的繪圖庫&#xff0c;它提供了豐富的繪圖功能和靈活的定制選項。本文將詳細介紹如何…

ubuntu 可以直接在圖像界面打開命令行嗎

是的&#xff0c;Ubuntu&#xff08;以及其他許多Linux發行版&#xff09;允許用戶直接在圖形界面&#xff08;GUI&#xff09;中打開命令行界面。這通常通過打開一個終端模擬器應用程序來實現&#xff0c;該應用程序提供了一個命令行窗口&#xff0c;用戶可以在其中輸入和執行…

修改文件的默認打開方式

修改文件的默認打開方式 選中文件&#xff0c;右擊&#xff0c;選擇屬性&#xff0c;如圖然后點擊更改&#xff0c;選擇想要的打開方式&#xff0c;再依次點擊 應用、保存 即可&#xff0c;如圖

Linux 環境下整體備份遷移 Docker 鏡像及數據教程

1. 介紹 本教程將引導您如何在 Linux 環境下備份和遷移 Docker 鏡像及其數據。我們將逐步介紹相關步驟&#xff0c;包括 Docker 鏡像的導出和導入、數據卷的備份和恢復等。通過本教程&#xff0c;您將能夠輕松掌握 Docker 容器的遷移操作。 2. 前置準備 在開始之前&#xff…

Redis中數據分片與分片策略

概述 數據分片是一種將數據分割并存儲在多個節點上的技術&#xff0c;可以有效提高系統的擴展性和性能。在Redis中&#xff0c;數據分片主要用于解決單個實例存儲容量和性能瓶頸的問題。通過將數據分散存儲到多個Redis節點中&#xff0c;可以將負載均衡到不同的服務器上&#…

Visual Studio使用——在vs中給vb.net項目添加新的窗口:新建的方式、添加已有窗口的方式

目錄 引出Visual Studio使用vb添加新的窗體自定義代碼片段vs顯示所有文件 總結Idea安裝和使用0.Java下載 和 IDEA工具1.首次新建項目2.隱藏文件不必要顯示文件3.目錄層級設置4.Settings設置選擇idea的場景提示代碼不區分大小寫 取消git的代碼作者顯示 引出 Visual Studio使用—…

基于Vue CLI 3構建Vue3項目(Vue2也可參考)

天行健&#xff0c;君子以自強不息&#xff1b;地勢坤&#xff0c;君子以厚德載物。 每個人都有惰性&#xff0c;但不斷學習是好好生活的根本&#xff0c;共勉&#xff01; 文章均為學習整理筆記&#xff0c;分享記錄為主&#xff0c;如有錯誤請指正&#xff0c;共同學習進步。…

Android Framework學習筆記(4)----Zygote進程

Zygote的啟動流程 Init進程啟動后&#xff0c;會加載并執行init.rc文件。該.rc文件中&#xff0c;就包含啟動Zygote進程的Action。詳見“RC文件解析”章節。 根據Zygote對應的RC文件&#xff0c;可知Zygote進程是由/system/bin/app_process程序來創建的。 app_process大致處…

PHP手邊酒店多商戶版平臺小程序系統源碼

&#x1f3e8;【旅行新寵】手邊酒店多商戶版小程序&#xff0c;一鍵解鎖住宿新體驗&#xff01;&#x1f6cc; &#x1f308;【開篇&#xff1a;旅行新伴侶&#xff0c;盡在掌握】&#x1f308; 還在為旅行中的住宿選擇而糾結嗎&#xff1f;是時候告別繁瑣的搜索和比價過程&a…