diff --git a/docs/architecture/iaas.md b/docs/architecture/iaas.md index 53dad5d..c762eba 100644 --- a/docs/architecture/iaas.md +++ b/docs/architecture/iaas.md @@ -1,128 +1,75 @@ # Infra Labs IaaS 架構 -TODO: - -- [ ] 加上一些比較特殊設定的介紹 - ## 前言 -目前 Infra Labs 透過 OpenStack 和 Ceph 來提供 Infrastructure as a Service (IaaS) 服務。本篇會介紹使用的 OpenStack 專案以及 Ceph 的架構。 - -設定檔以及一些 Ansible Script 將公開於 [Infra-Labs-Config repository](https://github.com/cloud-native-taiwan/Infra-Labs-Config)。 - -## 硬體 +Infra Labs 透過 OpenStack 和 Ceph 來提供 Infrastructure as a Service (IaaS) 服務。IaaS 允許使用者透過網路以程式化的方式佈建運算、網路和儲存資源,而無需購買、管理和維護實體伺服器和基礎設施。 -Infra Labs 使用了 9 台伺服器用於提供 IaaS 服務,規格如下: - -Hostname: `openstack01-03` - -- CPU: Intel Xeon Gold 6230R \* 2 -- RAM: 32GB DDR4 2933Mhz ECC RDIMM \* 12 -- NIC: - - on board quad port 1G - - Mellanox ConnectX-4 100GbE -- Disk - - Boot Disk: Intel 730 240GB \* 2 or Sandisk CloudSpeed Eco Gen II 480GB \* 2 - - Ceph SSD: Samsung NGSFF PM983 3.84TB - -Hostname: `openstack04-05` - -- CPU: AMD Epyc 7413 -- RAM: 32GB DDR4 3200Mhz ECC RDIMM \* 8 -- NIC: - - on board quad port 1G - - Mellanox ConnectX-4 Lx Dual Port 25GbE -- Disk - - Boot Disk: Seagate Enterprise Performance 15K 900GB \* 2 - - Ceph SSD: Samsung 980 1TB \* 4 - - Ceph HDD: Seagate X18 16TB - -Hostname: `openstack06` - -- CPU: Xeon Silver 4110 -- RAM: 32GB DDR4 2666Mhz ECC RDIMM \* 6 -- NIC: - - on board dual port 1GbE - - Mellanox ConnectX-4 Lx Dual Port 25GbE -- Disk - - Boot Disk: Intel S3500 120GB \* 2 - - Ceph HDD: Seagate X18 16TB - -Hostname: `arm01-03` - -- CPU: Ampere eMAG 8180 -- RAM: 32GB DDR4 2400Mhz ECC RDIMM \* 2(arm03 \* 4) -- NIC: - - on board dual port 1GbE - - Mellanox ConnectX-4 Lx Dual Port 25GbE -- Disk - - Boot Disk: Intel S3500 120GB - - Ceph HDD: Seagate X16 16TB +OpenStack 是一個開源的雲端運算管理平台,提供了一套工具來管理運算、網路和儲存資源。Ceph 是一個開源的分散式儲存系統,可提供高可靠性和可擴展性的物件、區塊和檔案儲存。 -## 軟體 +本文將介紹 Infra Labs 的 OpenStack 和 Ceph 架構,包括使用的元件、硬體規格、網路拓撲和自訂設定。詳細設定檔公開於 [Infra-Labs-Config repository](https://github.com/cloud-native-taiwan/Infra-Labs-Config)。 -### 主機任務分配 +## 架構概覽 -- OpenStack Controller: `openstack01-03` -- OpenStack Compute: `openstack01-05` -- Ceph Controller: `openstack01-03` -- Ceph OSDs: All nodes -- Monitoring: `openstack06` +上圖展示了 Infra Labs IaaS 的高層架構。使用者透過 Horizon 網頁介面或 OpenStack API 與服務互動。API 請求被發送到對應的 OpenStack 服務,這些服務協調運算節點 (透過 Nova)、網路資源 (透過 Neutron) 和儲存 (透過 Cinder、Glance、Swift)。 -### Ansible +Ceph 提供了高可靠性的區塊儲存 (透過 RBD) 給 Nova、Cinder 和 Glance 使用,以及物件儲存 (透過 RGW) 給 Swift 使用。 -Ansible 被用來做一些 OS 安裝後的設定,如安裝一些必要軟體、網卡的設定等等。 +MariaDB 儲存了 OpenStack 服務的狀態和元資料,而 RabbitMQ 則負責服務間的訊息傳遞。Keepalived 和 HAProxy 提供了高可用性的 API 端點。 -### OpenStack +## 硬體 -Infra Labs 所使用的 OpenStack 服務有: +Infra Labs 使用了 6 台伺服器來提供 IaaS 服務: -用於部屬主機: +| Hostname | CPU | RAM | NIC | Boot Disk | Ceph Disk | +|---------------|--------------------------------------------------|--------------------------------|--------------------------------------------------------------------|------------------------------------------------------------|---------------------------------------------------------------------------------| +| openstack01-02 | AMD Epyc Rome 7282 * 2 | 32GB DDR4 2933MHz ECC RDIMM * 16 | On-board dual port 1GbE, Mellanox ConnectX-4 Lx dual port 25GbE | Intel 730 240GB or Sandisk CloudSpeed Eco Gen II 480GB | KIOXIA CD6 3.84TB, Intel DC S3500 1.6TB | +| openstack04-05 | AMD Epyc Milan 7413 | 32GB DDR4 3200MHz ECC RDIMM * 8 | On-board quad port 1GbE, Mellanox ConnectX-4 Lx dual port 25GbE | Seagate Enterprise Performance 15K 900GB * 2 | Samsung NGSFF PM983 3.84TB, Intel DC S3500 1.6TB (openstack05 only), Seagate X18 16TB | +| openstack06 | Xeon Silver 4110 | 32GB DDR4 2666MHz ECC RDIMM * 6 | On-board dual port 1GbE, Mellanox ConnectX-4 Lx dual port 25GbE | Intel S3500 120GB * 2 | Seagate X18 16TB | +| arm01-03 | Ampere Altra Q80-30 * 2 | 32GB DDR4 3200MHz ECC RDIMM * 4 | On-board dual port 1GbE, Mellanox ConnectX-4 Lx dual port 25GbE | Samsung PM9A3 512GB | N/A | -- [Bifrost](https://docs.openstack.org/bifrost/latest/) -- [Kolla](https://docs.openstack.org/kolla/latest/) -- [Kolla-Ansible](https://docs.openstack.org/kolla-ansible/latest/) -- [Diskimage-builder](https://docs.openstack.org/diskimage-builder/latest/) +## 軟體 -用於提供服務: +### 主機角色分配 -- [Nova](https://docs.openstack.org/nova/latest/) -- [Neutron](https://docs.openstack.org/neutron/latest/) -- [Keystone](https://docs.openstack.org/keystone/latest/) -- [Glance](https://docs.openstack.org/glance/latest/) -- [Heat](https://docs.openstack.org/heat/latest/) -- [Cinder](https://docs.openstack.org/cinder/latest/) -- [Swift](https://docs.openstack.org/swift/latest/) -- [Designate](https://docs.openstack.org/designate/latest/) -- [Octavia](https://docs.openstack.org/octavia/latest/) -- [Placement](https://docs.openstack.org/placement/latest/) -- [Horizon](https://docs.openstack.org/horizon/latest/) +- OpenStack 控制節點:```openstack01,02,04``` +- OpenStack 運算節點:```openstack01,02,04,05,arm01``` +- Ceph 控制節點:```openstack01,02,04``` +- Ceph OSD 節點:```openstack01,02,03,04``` -其他 OpenStack 所需元件: +### OpenStack 服務 -- [MariaDB](https://mariadb.org/) -- [RabbitMQ](https://www.rabbitmq.com/) -- [Keepalived](https://github.com/acassen/keepalived) -- [HAProxy](http://www.haproxy.org/) +Infra Labs 使用以下 OpenStack 服務: -詳細設定檔皆公開至[此 Repo](https://github.com/cloud-native-taiwan/Infra-Labs-Config)。 +部署工具: +- [Bifrost](https://docs.openstack.org/bifrost/latest/):裸機部署 +- [Kolla](https://docs.openstack.org/kolla/latest/):容器化 OpenStack 服務 +- [Kolla-Ansible](https://docs.openstack.org/kolla-ansible/latest/):使用 Ansible 部署 Kolla +- [Diskimage-builder](https://docs.openstack.org/diskimage-builder/latest/):建立客製化的 OS 映像檔 -### Ceph +核心服務: +- [Nova](https://docs.openstack.org/nova/latest/):運算(虛擬機、裸機) +- [Neutron](https://docs.openstack.org/neutron/latest/):網路 +- [Keystone](https://docs.openstack.org/keystone/latest/):身份驗證 +- [Glance](https://docs.openstack.org/glance/latest/):映像檔 +- [Cinder](https://docs.openstack.org/cinder/latest/):區塊儲存 +- [Swift](https://docs.openstack.org/swift/latest/):物件儲存 +- [Placement](https://docs.openstack.org/placement/latest/):資源庫存和使用量追蹤 -Ceph 使用 [Cephadm](https://docs.ceph.com/en/latest/cephadm/index.html) 部屬,後端網路使用 100G/25G 網卡。 +其他服務: +- [Heat](https://docs.openstack.org/heat/latest/):協調多個 OpenStack 服務來部署應用程式 +- [Designate](https://docs.openstack.org/designate/latest/):DNS 即服務 +- [Octavia](https://docs.openstack.org/octavia/latest/):負載平衡即服務 +- [Horizon](https://docs.openstack.org/horizon/latest/):Web UI -提供的服務有: +### Ceph 服務 -- RBD - - 提供給 Nova, Cinder, Glance 作為儲存後端。 -- RGW - - 提供給 Swift 作為儲存後端,並且透過 Keystone 認證提供 S3 Compatible API。 +Ceph 使用 [Cephadm](https://docs.ceph.com/en/latest/cephadm/index.html) 部署,後端網路使用 25GbE 網卡。 -目前 Crush Rule 分為兩種: +提供的服務: +- RBD:為 Nova、Cinder、Glance 提供區塊儲存 +- RGW:為 Swift 提供物件儲存,並透過 Keystone 認證提供 S3 相容 API -- replicated_nvme - - 使用 NVMe SSD 作為儲存媒介 -- replicated_sata_ssd - - 使用 SATA SSD 作為儲存媒介 -- erasure profile main - - 4+2 Erasure Coding 作為 S3 儲存池 +目前 Crush Rule 包括: +- ```replicated_nvme```:使用 NVMe SSD +- ```replicated_sata_ssd```:使用 SATA SSD +- ```replicated_hdd```:使用 HDD diff --git a/docs/architecture/images/high_level_network.png b/docs/architecture/images/high_level_network.png old mode 100755 new mode 100644 index 1844323..b4f54b0 Binary files a/docs/architecture/images/high_level_network.png and b/docs/architecture/images/high_level_network.png differ diff --git a/docs/architecture/network.md b/docs/architecture/network.md index 9080498..ae1aa6f 100644 --- a/docs/architecture/network.md +++ b/docs/architecture/network.md @@ -2,73 +2,84 @@ ## 前言 -此篇文件將介紹目前 Infra Labs 所使用的網路架構,由於預算問題很多部分設計都可以再改進,如果有相關建議歡迎與[管理員](mailto:infra@cloudnative.tw)討論。 +本文件旨在介紹 Infra Labs 目前使用的網路架構,說明各個網路設備的規格、用途,以及它們之間的連接方式。同時也會指出目前架構存在的問題和風險,為未來的改進提供參考。 -## 架構圖 +本文主要面向網路工程師和系統管理員,假設讀者已經具備基本的網路知識和經驗。如果您在閱讀過程中有任何疑問或建議,歡迎隨時與[管理員](mailto:infra@cloudnative.tw)聯繫。 -![High Level Network](images/high_level_network.png) +## 架構總覽 -## 設備 +上圖展示了 Infra Labs 網路的整體架構。主要由以下幾個部分組成: -目前 Infra Labs 採用多廠牌網路設備,由於網路設備使用開源軟體極少以及價格通常偏高。 -因預算問題,目前網路設備大多數使用閉源軟體,並且有單點故障的風險 (Single Point of Failure)。 +- 路由器:NFX250,負責 NAT、VPN 等功能 +- 核心交換機:Arista DCS-7060CX-32S,負責內部網路和上游 BGP +- 管理交換機:Juniper EX3300-48T,負責 Out-of-band 管理網路 +- LTE 設備:提供備援網路連接 -廠商若有意願贊助網路設備,歡迎[聯絡管理員](mailto:infra@cloudnative.tw) +各設備之間的連接方式如圖所示。由於預算限制,目前的架構還存在一些單點故障的風險,詳情將在後文中說明。 + +## 網路設備 ### 路由器 -路由器目前使用一台 Juniper NFX250,主要功能是與上游進行 BGP 宣告和 Infra Labs 使用 public IP 的 gateway。除此之外,路由器也被用來過濾掉一些容易被攻擊的連接埠。 +- 型號:NFX250 +- 功能: + - In-band management 網路的 NAT 網關 + - Dashboard 和 DNS 伺服器的 NAT + - Out-of-band management 網路的 VPN 接入 + - DNS 伺服器的流量限制 + - 運行虛擬機 (VM),用於: + - 使用 Ansible 等管理工具部署各設備 + - 提供管理網路的 VPN 接入 -另一台 NFX250 主要用於: +### 交換機 -- In band management 網路 NAT gateway -- Dashboard, DNS server 的 NAT -- Out of band Mangement 網路 VPN access -- DNS server 流量限制 +#### 核心交換機 -### 交換機 +- 型號:Arista DCS-7060CX-32S +- 規格:32 port 100G 交換機 +- 功能: + - 與上游進行 BGP 互聯 + - 承載 Infra Labs 內部 OpenStack/Ceph 等服務的網路 -#### Arista DCS-7060CX-32S +#### 管理交換機 -Arista DCS-7060CX-32S 100G 交換機主要用於 VM 內/外部網路、Libvirt migration 網路和 Ceph 的 public/private 網路。 +- 型號:Juniper EX3300-48T +- 功能: + - 提供 Out-of-band 管理網路 + - 連接主機的 IPMI 和網路設備的管理端口 + - 上行連接 NFX250 路由器 -### Celestica DX010 +### LTE 設備 -Celestica DX010 100G 作為 Rack2 的核心交換機。 +LTE 設備用於提供備援網路連接。當主要網路(Arista 或 NFX250)出現故障導致外部無法訪問時,可以通過 LTE 遠程接入管理網路進行搶修。 -#### Juniper EX2200-24T +## 網段規劃 -Juniper EX2200-24T 主要用於 Out of band management 網路。下接至各個主機 IPMI、網路設備 management port,上接至 Fortigate 200D。 +| VLAN | 網段 | 用途 | +|------|--------------|------------| +| 1 (untagged) | 192.168.0.0/24 | In-band management | +| 100 | 10.0.0.0/24 | VM internal | +| 101 | 10.0.1.0/24 | libvirt internal (for migration) | +| 1113 | 192.168.113.0/24 | API network | +| 1114 | 192.168.114.0/24 | Ceph public network | +| 1115 | 192.168.115.0/24 | Ceph private network | +| 2116 | 103.122.116.0/23 | Public network | +| 1007 | 192.168.7.0/24 | Out-of-band management | -### LTE 設備 +## 總結 + +綜上所述,Infra Labs 目前的網路架構基本滿足內部服務和管理的需求,但仍存在一些問題和風險: + +1. 由於預算限制,核心設備缺乏冗餘,存在單點故障風險。一旦關鍵設備發生故障,可能導致整個網路不可用。 + +2. 缺乏對網路設備和鏈路的監控,故障定位和處理的效率有待提高。 + +未來我們計劃在預算允許的情況下,對網路架構進行以下優化: + +1. 引入設備冗餘,消除單點故障。 + +2. 建設全面的監控系統,實現網路的可視化和自動化運維。 + +3. 儘量採用開源軟體,降低成本並提高可定制性。 -LTE 設備主要提供備援網路,若 NFX250 設定出問題導致主要網路斷線無法從外部連入,可以透過 LTE 設備連入 management 網路進行維修。 - -## 網段 - -目前網段主要分為以下: - -- vlan3000 (untagged access): - - 192.168.0.0/24 - - PXE/IB -- vlan 100 - - 10.0.0.0/24 - - VM internal -- vlan 101 - - 10.0.1.0/24 - - libvirt internal (for migration) -- vlan 1088 - - rack2_mgmt: 192.168.88.0/24 -- vlan 1113 - - 192.168.113.0/24 - - API network -- vlan 1114 - - 192.168.114.0/24 - - Ceph Public -- vlan 1115 - - 192.168.115.0/24 - - Ceph Private -- vlan 2116 - - 103.122.116.0/23 public -- vlan 1007 - - mgmt: 192.168.7.0/24 +我們歡迎網路設備廠商提供贊助或優惠,幫助我們更快實現架構升級。如果您有任何建議或意願提供支持,請聯繫[管理員](mailto:infra@cloudnative.tw)。