-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #74 from ching-kuo/update_docs
Update All Architecture Reference
- Loading branch information
Showing
3 changed files
with
112 additions
and
154 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
Binary file modified
BIN
+36.9 KB
(120%)
docs/architecture/images/high_level_network.png
100755 → 100644
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,73 +2,84 @@ | |
|
||
## 前言 | ||
|
||
此篇文件將介紹目前 Infra Labs 所使用的網路架構,由於預算問題很多部分設計都可以再改進,如果有相關建議歡迎與[管理員](mailto:[email protected])討論。 | ||
本文件旨在介紹 Infra Labs 目前使用的網路架構,說明各個網路設備的規格、用途,以及它們之間的連接方式。同時也會指出目前架構存在的問題和風險,為未來的改進提供參考。 | ||
|
||
## 架構圖 | ||
本文主要面向網路工程師和系統管理員,假設讀者已經具備基本的網路知識和經驗。如果您在閱讀過程中有任何疑問或建議,歡迎隨時與[管理員](mailto:[email protected])聯繫。 | ||
|
||
![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:[email protected]) | ||
各設備之間的連接方式如圖所示。由於預算限制,目前的架構還存在一些單點故障的風險,詳情將在後文中說明。 | ||
|
||
## 網路設備 | ||
|
||
### 路由器 | ||
|
||
路由器目前使用一台 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:[email protected])。 |