Skip to content

Commit

Permalink
Merge pull request #74 from ching-kuo/update_docs
Browse files Browse the repository at this point in the history
Update All Architecture Reference
  • Loading branch information
pichuang authored Dec 16, 2024
2 parents 4d763ff + a782982 commit bc083d0
Show file tree
Hide file tree
Showing 3 changed files with 112 additions and 154 deletions.
153 changes: 50 additions & 103 deletions docs/architecture/iaas.md
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 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.
113 changes: 62 additions & 51 deletions docs/architecture/network.md
Original file line number Diff line number Diff line change
Expand Up @@ -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])

0 comments on commit bc083d0

Please sign in to comment.