国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于原生云的MySQL服務系統(tǒng)研究與應用

2023-06-22 21:52朱常鵬李剛
無線互聯(lián)科技 2023年4期
關(guān)鍵詞:云計算容器數(shù)據(jù)庫

朱常鵬 李剛

摘要:原生云作為云計算領域中的最新虛擬化技術(shù),最顯著的優(yōu)勢是開銷小、易擴展、易維護,越來越多的企業(yè)使用原生云部署它們的應用系統(tǒng)。K8s源自于谷歌,是目前最主流的原始云。文章提出實現(xiàn)一種基于K8s的MySQL服務系統(tǒng)。該系統(tǒng)將MySQL數(shù)據(jù)庫遷移到原生云平臺,并充分利用K8s的自動伸縮、數(shù)據(jù)持久化和負載均衡等特性,使得數(shù)據(jù)庫突破了單機存儲空間和計算能力的限制,這不僅可以有效節(jié)約本地服務器的維護成本,而且可以按需提升系統(tǒng)的并發(fā)數(shù)據(jù)查詢與操作性能。

關(guān)鍵詞:容器:Docker;云計算;數(shù)據(jù)庫;Kubernetes

中圖分類號:TP393

文獻標志碼:A

1 系統(tǒng)研究背景與意義

目前,云數(shù)據(jù)庫正在蓬勃發(fā)展,已經(jīng)成為一個重要的研究方向[1]。它不僅易于管理、方便擴展并且用戶無需維護數(shù)據(jù)庫系統(tǒng)、周期性更新數(shù)據(jù)庫的補丁程序、系統(tǒng)強化和備份等。此外,除了數(shù)據(jù)所需的存儲空間外,集群中的虛擬機數(shù)量能根據(jù)負載自動增加,從而實現(xiàn)高可用性和強伸縮性[2]。從服務角度而言,云數(shù)據(jù)庫提供了基于Weh的UI界面來幫助用戶進行數(shù)據(jù)庫操作和實例控制,同時也可以幫助用戶進行數(shù)據(jù)庫的備份與恢復,大大地提高了數(shù)據(jù)管理的便捷性與安全性,并且可以在線監(jiān)控和擴展數(shù)據(jù)庫來滿足不同的應用需求??傮w而言,構(gòu)建在云上的數(shù)據(jù)庫可以快速、低成本且高效率地擴展,也可廣泛地用于實驗教學環(huán)境[3]?;诖?,本文開發(fā)并完成了一個基于Kuhernetes的MySQL服務系統(tǒng),它可以為每一個使用該系統(tǒng)的用戶提供一個MySQL環(huán)境,對于大規(guī)模彈性部署基于MySQL的應用具有重要意義。

2 系統(tǒng)設計

2.1 Kubernetes介紹

Kuherneces的主要結(jié)構(gòu)如圖1所示,它采用了典型的主一從架構(gòu)。這種架構(gòu)不僅可以方便集群的日常管理與維護,也易于集群的橫向擴展與收縮。它的核心主鍵分別是apiserv er.scheduler.kubelec和kuhe -proxy。在Kuherneces中,apiserver是消息中樞,它是所有其他主組件和輔助組件可以直接通信的唯一組件。因此,它充當所有集群通信的接口,與apiserver的所有聯(lián)系均使用安全端口通信。在實際生成資源并將其保存到數(shù)據(jù)存儲之前apiserver負責所有資源創(chuàng)建請求的接口驗證。

由于Kuherneces是業(yè)務流程框架,因此它用于管理Pod調(diào)度的內(nèi)置邏輯。sched uler負責這種內(nèi)置的邏輯判斷。調(diào)度決策取決于諸多因素,它們能夠影響甚至阻止Pod的調(diào)度與再調(diào)度,具體包括:應用程序?qū)Y源的要求、跨節(jié)點的資源可用性、Pod規(guī)范是否具有親和力標簽、要求在特定節(jié)點上進行調(diào)度、節(jié)點是否具有某些污點/容差。kuhe - scheduler調(diào)度程序會量化地綜合考慮上述因素,執(zhí)行對Pod的調(diào)度。

kuhelec組件是在集群的每個工作程序節(jié)點上運行的代理。以本系統(tǒng)為例,kubelec負責管理Pod中運行的MySQL容器和PhpMyAdmain容器。它通過周期性地檢測容器的當前狀態(tài)與存儲在etcd中的期望狀態(tài)是否匹配來管理容器的運行,具體包括容器的終止、重啟或遷移等。podspec可能通過kube - apiserver傳遞到kuhelec以便在該特定節(jié)點上運行Pod.或者通過命令行工具作為文件傳遞。

kube-proxy組件是在每個節(jié)點上運行的網(wǎng)絡代理,負責轉(zhuǎn)發(fā)請求。該代理比較靈活,可以處理簡單或循環(huán)的TCP.UDP或SCTP轉(zhuǎn)發(fā)。每個節(jié)點通過kube -proxy與Kubernetes服務進行交互。

2.2 系統(tǒng)設計

系統(tǒng)模塊如圖2所示。該系統(tǒng)主要分為5個部分:MySQL部署模塊、MySQL服務模塊、PhpMyAdmain部署模塊、PhpMyAdmain服務模塊和lngress模塊(入口控制器模塊)。MySQL部署模塊主要用來創(chuàng)建MySQL的Pod并且添加相應的鏡像到Pod中。除此之外,該模塊還把容器依附到持久卷上面進行持久化存儲。MySQL服務模塊將Service定義為節(jié)點Pod的邏輯集合,它提供了可以訪問Pod的IP地址和DNS。使用該模塊可以非常輕松地通過Pod擴展管理負載平衡。MySQL服務模塊中的服務實質(zhì)上是Kubernetes中的REST對象,可以通過Kubernetesapiserver創(chuàng)建。不同服務之間通過TCP/IP協(xié)議通信與數(shù)據(jù)傳輸。PhpMyAdmin模塊主要用來創(chuàng)建負責可視化工具的Pod,并且與MySQL容器進行連接。為了簡化PhpMyAdmin的對外訪問,入口控制器模塊將PhpMyAdmin連接公共Internet網(wǎng),同時創(chuàng)建一個入口資源,將其指向PhpMyAdmin容器的服務資源。

2.3 系統(tǒng)開發(fā)工具

系統(tǒng)逐漸構(gòu)建并實現(xiàn)的過程中,使用了很多不同的工具,這些工具縮短了配置環(huán)境的時間,同時也為后續(xù)部署集群和創(chuàng)建節(jié)點提供了支持。系統(tǒng)使用的開發(fā)環(huán)境為MacOS,開發(fā)工具為DockerDesktop,Kuherneces和ZSHshell等。

3系統(tǒng)實現(xiàn)

系統(tǒng)需要構(gòu)建一個Kuhernetes集群,集群中擁有一個Masler集群控制節(jié)點,并在集群中創(chuàng)建一個擁有兩個Pocl的Node節(jié)點,其中第一個Pod包含一個MySQL容器,并通過Persistent Volume Claim持久化數(shù)據(jù)庫的存儲,第二個Pod里面創(chuàng)建PhpMyAdmain容器,并通過設置環(huán)境變量來連接MySQL,這樣就實現(xiàn)了運行在云中的MySQL服務系統(tǒng)。本系統(tǒng)的核心功能包含:MySQL的持久卷聲明、MySQLPod創(chuàng)建和PVC的使用和MySQLservice的聲明。下面將逐一介紹它們的具體實現(xiàn)思路與方法。

3.1

MySQL的持久卷聲明

在持久卷聲明中,首先聲明了PVC類型,然后賦予了名字和讀取的模式,最后為聲明分配了1 Gi的存儲空間,隨后可以掛載到MySQL的Pod上來實現(xiàn)持久存儲,代碼片段如下:

mysql-persistentVolumeClaim. vaml

apiversion:vl

kind: Persistentvolumec-.laim

metadata:

name:mysql-data-disk

spec.:

accessModes:

-ReadwriteOnceresources:

requests:

storage:1Gi

3.2

MySQL Pod創(chuàng)建和PVC的使用

為了創(chuàng)建Pod.首先應聲明資源類型為deployment,然后設置好相應的鏡像名稱、容器端口、數(shù)據(jù)庫密碼等變量,然后將剛剛聲明好的PVC掛載到這個Pod上實現(xiàn)持久化存儲。當退出數(shù)據(jù)庫再次進入時,之前的改變都將被保存。代碼片段如下:

spec:

conrainers:

- name:mysql

image:mnysql:5.7

ports:

- containerPort:3386

voluneMounts:

- mountPaLh:”var/lib/mysql"

subPath:mysql"

name:mysql-data

env:

-name: MYSqL_ROOT_PASSMORD

valueFrom:

secretKeyRef:

name:_mysql-secrets

key:ROOT_PASSNORD

volumes:

- name:mysql-data

persistentNolumec.laim:

claimnName: mysql-data-disk

3.3

MySQL service的聲明

在service類型資源中,筆者通過設定了這個Pod的端口號從而確定了IP地址,PhpMyAdmain就是通過設定對應于servic.e文件的端口號來連接數(shù)據(jù)庫,代碼片段如下所示:

kind:Service

metadata:

name:mysql-service

spec:

selector:

app:mysql

ports:

- prolocol:TCP

port:3306

targetPort:3306

此外,為了解決持久化容器存儲的問題,本文引入了兩個新的API資源-Persiscent Volume和Persiscent Volume Claim。如果Pod是有狀態(tài)的,那么它將始終需要關(guān)聯(lián)一個持久卷,表示Pod可能消耗的后端存儲實體將是PersistencVolume。PersistencVolume Claim持久卷聲明則代表特定Pod對持久卷的專有使用。

4 測試與驗證

為了驗證系統(tǒng)的正確性,本節(jié)構(gòu)建了一個Kuherneles集群。集群中擁有一個Masler集群控制節(jié)點,并通過在集群中創(chuàng)建一個擁有兩個Pod的Node節(jié)點,實現(xiàn)了運行在云中的MySQL服務系統(tǒng)。在第一個Pod中,筆者通過docker拉取的鏡像創(chuàng)建了第一個MySQL容器,并通過Persislent Volume Claim持久化數(shù)據(jù)庫的存儲,成功部署了第一個servlce。接下來在第二個Pod中,通過docker拉取了PhpMyAdmain的鏡像,并設置環(huán)境變量以連接集群中的數(shù)據(jù)庫,實現(xiàn)了MySQL的可視化管理。

在下面的測試中,筆者編寫4組不同的soL測試代碼,首先創(chuàng)建一個名字為World的數(shù)據(jù)庫,然后每組測試代碼分別創(chuàng)建一個table,并向其中插入記錄。筆者對系統(tǒng)進行了5次功能測試。

(1)創(chuàng)建名字為World的數(shù)據(jù)庫,退出數(shù)據(jù)庫后再次進入,檢查存儲是否持久。

(2)使用SQL語言創(chuàng)建名字為city的表格,并向其中插入25條城市記錄,退出數(shù)據(jù)庫后再次進入,檢查存儲是否持久。

(3)創(chuàng)建名字為Countrv的表格,并向其中插入25條記錄,退出數(shù)據(jù)庫后再次進入,檢查存儲是否持久。

(4)創(chuàng)建名字為Country Language的表格,并向其中插入25條記錄,退出數(shù)據(jù)庫后再次進入,檢查存儲是否持久化。

(5)執(zhí)行選擇SELECT語句,查看數(shù)據(jù)庫是否可以正常篩選。

測試結(jié)果表明,本文提出設計與實現(xiàn)的系統(tǒng)能夠正確地完成預期的功能。

5 結(jié)語

本文提出一種基于Kubernetes的云上MySQL數(shù)據(jù)庫系統(tǒng)的實現(xiàn)方法,充分利用基于Kubernetes的原生云的低開銷、集群化、通用性以及靈活的伸縮功能。該系統(tǒng)展示出較好的并發(fā)數(shù)據(jù)查詢、插入和自動橫向擴展性能。實驗表明該系統(tǒng)具備較好的實用性,各項性能指標符合預期。本文同時也展示了該系統(tǒng)的設計思想以及關(guān)鍵組件的實現(xiàn)方式與方法,以期為設計實現(xiàn)基于Kubernetes的其他服務軟件系統(tǒng)提供借鑒。

參考文獻

[1]ZHU C P, HAN B, ZHAO Y L.A bi-metricautoscaling approaCh for n-Tier web applications onKubernetes[J].Frontiers of Computer ScienCe, 2021(3):1-12.

[2] ZHU C P,HAN B,ZHAO Y L.A comparative studyof spark on the bare metal and kubernetes[ EB/OLl.(2020 - 12 - 27)[2023 - 03 - 20].https://www.researchgaLe. net/publication/350593000一A—Compar -ative_ Study—of—Spark—on—the—bare—metal—and—Kubernetes.

[3]朱常鵬,劉元超,李剛.Spark實時大數(shù)據(jù)處理技術(shù)在線開放課程建設與實踐[J].現(xiàn)代信息科技,2021(12):195-198.

(編輯王雪芬)

猜你喜歡
云計算容器數(shù)據(jù)庫
Different Containers不同的容器
難以置信的事情
實驗云:理論教學與實驗教學深度融合的助推器