• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

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

    朱常鵬 李剛

    摘要:原生云作為云計算領域中的最新虛擬化技術,最顯著的優(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ù)查詢與操作性能。

    關鍵詞:容器: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而言,構建在云上的數(shù)據(jù)庫可以快速、低成本且高效率地擴展,也可廣泛地用于實驗教學環(huán)境[3]?;诖?,本文開發(fā)并完成了一個基于Kuhernetes的MySQL服務系統(tǒng),它可以為每一個使用該系統(tǒng)的用戶提供一個MySQL環(huán)境,對于大規(guī)模彈性部署基于MySQL的應用具有重要意義。

    2 系統(tǒng)設計

    2.1 Kubernetes介紹

    Kuherneces的主要結構如圖1所示,它采用了典型的主一從架構。這種架構不僅可以方便集群的日常管理與維護,也易于集群的橫向擴展與收縮。它的核心主鍵分別是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)度,具體包括:應用程序對資源的要求、跨節(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)絡代理,負責轉發(fā)請求。該代理比較靈活,可以處理簡單或循環(huán)的TCP.UDP或SCTP轉發(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服務模塊中的服務實質上是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)逐漸構建并實現(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)需要構建一個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)的,那么它將始終需要關聯(lián)一個持久卷,表示Pod可能消耗的后端存儲實體將是PersistencVolume。PersistencVolume Claim持久卷聲明則代表特定Pod對持久卷的專有使用。

    4 測試與驗證

    為了驗證系統(tǒng)的正確性,本節(jié)構建了一個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ù)庫是否可以正常篩選。

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

    5 結語

    本文提出一種基于Kubernetes的云上MySQL數(shù)據(jù)庫系統(tǒng)的實現(xiàn)方法,充分利用基于Kubernetes的原生云的低開銷、集群化、通用性以及靈活的伸縮功能。該系統(tǒng)展示出較好的并發(fā)數(shù)據(jù)查詢、插入和自動橫向擴展性能。實驗表明該系統(tǒng)具備較好的實用性,各項性能指標符合預期。本文同時也展示了該系統(tǒng)的設計思想以及關鍵組件的實現(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ù)處理技術在線開放課程建設與實踐[J].現(xiàn)代信息科技,2021(12):195-198.

    (編輯王雪芬)

    猜你喜歡
    云計算容器數(shù)據(jù)庫
    Different Containers不同的容器
    難以置信的事情
    數(shù)據(jù)庫
    財經(jīng)(2017年2期)2017-03-10 14:35:35
    基于云計算的移動學習平臺的設計
    實驗云:理論教學與實驗教學深度融合的助推器
    大學教育(2016年9期)2016-10-09 08:54:03
    云計算中的存儲虛擬化技術應用
    科技視界(2016年20期)2016-09-29 13:34:06
    數(shù)據(jù)庫
    財經(jīng)(2016年15期)2016-06-03 07:38:02
    數(shù)據(jù)庫
    財經(jīng)(2016年3期)2016-03-07 07:44:46
    數(shù)據(jù)庫
    財經(jīng)(2016年6期)2016-02-24 07:41:51
    取米
    富裕县| 老河口市| 嘉禾县| 万载县| 香河县| 巍山| 佛坪县| 沧州市| 定结县| 金华市| 眉山市| 奉新县| 保德县| 乾安县| 天全县| 灵寿县| 玉环县| 平阴县| 蒙自县| 岚皋县| 木里| 临夏市| 奇台县| 高尔夫| 阜平县| 西乌珠穆沁旗| 湖北省| 成武县| 黎川县| 南阳市| 抚顺县| 平顺县| 辽中县| 广汉市| 封开县| 金山区| 高清| 莎车县| 肇庆市| 古蔺县| 兴业县|