iT邦幫忙

2023 iThome 鐵人賽

DAY 29
0

接近一個月下來建立了許多虛擬機和服務 若是順應目前的趨勢
將我們的地端環境推上雲 並採用雲原生的方案
在雲上的架構和使用的技術會有那些變化?
今天就來回顧一下地端環境並且來看看上雲後的變化

地端架構

以到 DAY28 來說我的架構大致上是長這樣
https://ithelp.ithome.com.tw/upload/images/20231014/20162773C9gjnZxVZL.png

Network and Remote

在這個環境內的網路是由 Proxmox VE 開出來的虛擬網路 Proxmox Host-only Network 為主環境
Proxmox Host-only Network 的 Gateway 會由 Router 這台 VM 負責
而我平時使用的 CLI Bastion 是使用 SSH 到 Router
若是要控制網頁介面的話會改用 win-clt 這台 Windows 10 VM

Service

以服務的功能來大致分類的話 可以分出 Monitoring 和 Kubenetes 和 DNS
還有其他三台功能比較雜的 VM

Monitoring

在 Monitoring 這邊有這幾個部分
Prometheus 負責在各 VM 上收集 Metric
Grafana Loki 負責集中各 VM 上的 Log
Grafana 負責視覺化 Prometheus 和 Loki 的資料, 並提供 Alert 來警告 User
phpIPAM 負責管理 IP Usage 和儲存一些實體 Rack 的資訊

Kubenetes

這邊就是由 lke-main lke-node1 lke-node2 組成的 K8s Cluster 提供容器的運行空間
這邊使用了 Containerd 來作為 CRI, Calico 作為 CNI

DNS

DNS 的部分我是將服務放在 Router VM 上的
目前的 db.檔案長這個樣子
https://ithelp.ithome.com.tw/upload/images/20231014/20162773KYl4DeysSR.png
跟原本比起來多了蠻多的

Other Service

最後是上述沒有講到的服務 以每台 VM 上架的服務來說是這樣:
LCR 提供 Docker Image Repository 和 NTP Service
Navidrome 提供 Navidrome 音樂串流服務
OMV (OpenMediaVault) 提供 NAS 的功能給 Navidrome 音樂存放點且提供 SFTPGO 給使用者上傳音樂檔

大致上地端的環境說明就這樣 接著來看看搬到雲端後架構會如何變化


雲端架構

這邊以 Google 的 GCP 為使用的雲端來規劃架構 架構圖如下
https://ithelp.ithome.com.tw/upload/images/20231014/20162773bJts86XDob.png

Network

網路的部分這邊以一個 VPC (Virtual Private Cloud) 使用
VPC 是 GCP 上的一個私有網路環境 VPC 下可以透過 Subnet (子網路) 來指定網路的所在地和 CIDR
Subnet 的機器若需要對外會使用 Cloud NAT 來轉換到對外 IP 上網
而地端環境要和雲端服務連接 可以透過 Cloud VPN 來連接兩邊的網路環境

Service

接著來看看服務可以使用那些雲原生的服務來做

Monitoring

Cloud Logging 是收集整個雲端環境的 Log 並存放的地方 基本上就是對應在地端的 Grafana Loki
Cloud Monitoring 是集中且視覺化 Metric 和製作 Alert 並且提供 Uptime Check 去做 Health Check 的功能 對應了在地端的 Prometheus 和 Grafana 的功能
而 phpIPAM 的功能在雲端環境是可以直接透過觀察 VPC 內的 IP Address 頁面就可以知道哪些 IP 正在使用等資訊

Kubenetes

K8s 的部分則是使用 GCP 上的 GKE (Google Kubenetes Engine) 來運行
和地端不同的是 Google 有針對 K8s Node 上運行的系統進行優化可以使用到更好的效能
預裝的 CRI 和 CNI 也都是 Google 有去對雲端環境進行優化的
且能透過 GCP 上的 Auto-scaling 去做到反映負載來增加運算資源的功能
讓服務能夠依照使用情形來增減運算資源 防止服務因負載過大無法回應使用者

DNS

DNS 的部分在 GCP 可以使用 Cloud DNS / Cloud Domain 來做管理
Cloud DNS 是作為 Bind9 的功能 管理 Domain 內的 Record 可以設定 Private 和 Public 來對應使用情形
Cloud Domain 是可以向 GCP 來買 Domain 並且集中化管理持有的 Domain

Other Service

Artifact Registry 是 GCP 上存放 Container Image 的地方 也可以作為存放 APT npm 的 Repository 對應地端上的 LCR Image Repository
Filestore 是 GCP 上提供 NFS 檔案存放的服務 對應地端上的 OMV 提供的存放點
Navidrome 的功能則是安裝在 GCE (Google Compute Engine) 上
GCE 是虛擬機服務 能夠讓我們自己依照使用情形設定虛擬機所需要的 vCPU 和 RAM 來跑 Serverful 的 TASK
而 NTP 則是 GCP 上有提供一個 NTP 讓所有的服務和他進行校時 不需要自己架設

總結

可以發現在上雲後的架構上看到只有 Navidrome 是唯一一個還是需要自己安裝在虛擬機上的服務
其他服務/功能雲端供應商都已經將它們以 SaaS / PaaS / IaaS 的方式提供了
不但省下管理 Infra 的工本讓管理者/開發者能夠更專注在自己的工作上
安全性的部分各個雲端供應商也都有自己的方案
像 Google 的 GCP 有提供零信任模型出來強化安全性 有興趣的可以參考鐵人賽隊友的文章
且雲端的彈性和擴展性提供了很好的機制來對應不同的使用情境
讓服務能夠始終保持良好的狀況來回應使用者


上一篇
Day28 Grafana Alerting 建立 On Call 好夥伴
下一篇
Day30 地端建置大雜燴-我們是如何走到這地步的?
系列文
地端建置大雜燴-下從網路線上到Grafana的建置之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言