---
title: (1st) HowTo:架設安全、可負載高流量的網站 | zh
tags: HowTo, VCS, ZH
GA: UA-155999456-1
---
{%hackmd @docsharedstyle/default %}
{%hackmd @docsharedstyle/twccheader-zh %}
# 第一部分:搭建網站服務架構
網站服務將由**負載平衡器**做為整體網頁架構的最前端,在使用者發起連線後,負載平衡器將會把使用者流量疏導至**後方的網頁伺服器**,並決定由哪一台伺服器提供網頁服務。
[TOC]
### Step 1. 建立前端負載平衡器
- 由服務列表點選「**負載平衡**」進入「**負載平衡器管理**」頁面,點擊「**+建立**」

- 輸入負載平衡器設定資訊,完成後點擊「**下一步:檢閱+建立>**」
1. 類型:選擇「**應用程式負載平衡器**」
2. 監聽器:
a. 協定選擇 「**HTTP**」,連接埠設定 「**80**」,提供 HTTP 服務
b. 協定選擇 「**HTTPS with SSL**」,連接埠設定 「**443**」,提供 HTTPS 加密傳輸服務
3. 平衡方法:選擇 「**ROUND_ROBIN**」
4. 虛擬網路:選擇需架設負載平衡器的網段
:::danger
<i class="fa fa-exclamation-triangle fa-20" aria-hidden="true"></i> **重要:**
負載平衡器與 [Step 2](#Step-2-建立後方網頁伺服器,架設-NGINX-網頁服務) 的虛擬運算個體建立於相同虛擬網路上,才能發揮平衡流量之作用。
:::
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:**
TWCC 提供三種負載平衡器平衡方法:
1. **ROUND_BIN** (循環分配):負載平衡器會輪流將使用者分配至不同伺服器,因每台伺服器權重皆相同,所以會照順序輪流提供使用者服務。
2. **LEAST_CONNECTION** (依連線數分配):負載平衡器會偵測伺服器群,將使用者分配至連線數少的伺服器。
3. **SOURCE_IP** (依來源 IP 分配):此模式是依來源位址(使用者的 IP),由負載平衡器來分配使用者至不同的網頁伺服器,在下一次進行連線時,系統會再重新分配。
:::

- 建立完成後,回到負載平衡器列表,請點選該筆平衡器。

- 進入詳細資料頁,等到狀態變成 **`ACTIVE`** 後,才可繼續編輯。
- **VIP (Virtual IP)**,**可申請 DNS 以對外提供給使用者,透過此 IP 使用您的網頁服務**。

### Step 2. 建立後方網頁伺服器,架設 NGINX 網頁服務
- 進入虛擬運算管理頁,建立名為 *lbssl01* 與 *lbssl02* 的兩台虛擬運算個體。
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:**
- 詳細虛擬運算個體建立步驟,請參考[<ins>虛擬運算服務</ins>](https://man.twcc.ai/@twccdocs/doc-vcs-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fguide-vcs-create-zh)。
- 範例選用 **Ubuntu 映像** 檔建立,**虛擬網路和負載平衡選用相同網路**,請**開啟公用 IP** 供後續網站管理員維護使用,其他設定皆以預設資訊建立。
:::

:::warning
<i class="fa fa-lightbulb-o fa-20" aria-hidden="true"></i> **提示:** 您也可以在*lbssl01* 個體將網頁架設完成後,再使用[<ins>映像檔</ins>](https://man.twcc.ai/@twccdocs/doc-vcs-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fvcs-vds-instance-image-zh)快速建立 *lbssl02* 網頁伺服器,節省應用程式重複安裝的成本。
:::
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:** 後續步驟將使用虛擬運算個體的私有 IP,請進入詳細資料頁面,並將此資訊記下來方便後續使用。

:::
- 使用公用 IP 連線進入 *lbssl01* 與 *lbssl02* 個體後,分別使用以下 3 個指令,**將 2 台個體安裝 NGINX 架設網頁服務**:
:::info
<i class="fa fa-paperclip fa-20" aria-hidden="true"></i> **附註:**
1. 詳細虛擬運算個體連線步驟,請參考[<ins>連線虛擬運算個體</ins>](https://man.twcc.ai/@twccdocs/doc-vcs-main-zh/https%3A%2F%2Fman.twcc.ai%2F%40twccdocs%2Fvcs-guide-connect-to-linux-from-windows-zh)。
2. 範例以 NGINX 做為架設網站的工具,您可以依需求安裝不同工具。
:::
```bash
$ sudo su
$ apt update
$ apt install -y nginx
```

- 安裝好後,即可開始在 *lbssl01* 的個體,架設您的網頁,或依照範例輸入以下指令,編輯靜態網頁示意內容:
```bash
$ vim /var/www/html/index.nginx-debian.html
```
- 鍵盤按下 <kbd>i</kbd> 進入編輯模式,並將`\<h1>\</h1>`中間字串,改為 「**Hi, this is VCS lbssl01!**」

- 再按下鍵盤 <kbd>Esc</kbd> 跳離編輯模式,並輸入 `:wq!` 與按下 <kbd>Enter</kbd>,存檔離開。

- 再輸入指令,重啟 NGINX
```
$ systemctl restart nginx
```
- 接著同樣以上述的步驟,修改 *lbssl02* 的內容,網頁顯示字串可以修改為不同的內容:「**Hi, this is VCS lbssl02!**」以利檢查負載平衡的作用。
### Step 3. 設定個體的安全性群組:開啟 80 連接埠
透過設定安全性群組,建立 80 連接埠,讓負載平衡器能串接後方網頁伺服器 (虛擬運算個體)、分配使用者的請求,並取得回覆傳送給使用者。
- 請點選左側「**聯網與資安**」> 「**安全性群組**」

- 並點選建立的 *lbssl01* 個體

- 再點選進入個體的安全性群組,點選「**+建立**」

- 設定資訊
1. **方向**:選擇「**Ingress**」(使用者從外部連線,進入此個體使用網頁服務)
2. **連接埠範圍(最小)、連接埠範圍(最大)**:皆設定「**80**」(僅開放 80 連接埠,提供 HTTP 服務,網頁程式將自動將連線導向 443 連接埠,提供 HTTPS 網頁服務。)
3. **協定**:選擇「**TCP**」
4. **CIDR**:填入虛擬網路之 CIDR,確保同網段的負載平衡器可存取此個體<br>

- 個體 *lbssl02*,也請依相同步驟新增 80 連接埠。
### Step 4. 將虛擬運算個體連結至負載平衡器
- 進入「**負載平衡器詳細資料頁**」> 點選「**編輯**」。
- 先將 *lbssl01* 個體 **`<私有IP>:<連接埠> (80)`** 資訊,新增到此負載平衡器 > 點選「**確認**」,完成設定。
:::danger
<i class="fa fa-exclamation-triangle fa-20" aria-hidden="true"></i> **重要:** **此時請勿新增** *lbssl02* 至負載平衡器,請待 SSL 憑證申請完成後再新增。
:::
