• 
    

    
    

      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
      取米
      阿图什市| 兴安盟| 获嘉县| 临沧市| 中西区| 泰安市| 扎囊县| 葫芦岛市| 石棉县| 攀枝花市| 吴旗县| 灌阳县| 台南市| 云霄县| 潮州市| 安平县| 彭阳县| 洛川县| 九龙县| 温泉县| 那曲县| 宜州市| 峨眉山市| 库尔勒市| 武义县| 新巴尔虎右旗| 邵东县| 三明市| 波密县| 耿马| 仲巴县| 勃利县| 灵台县| 精河县| 会宁县| 津南区| 青浦区| 湖口县| 浮山县| 中西区| 新和县|