iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Software Development

從零開始構建能理解語義的 Linebot 架構系列 第 18

執行環境設定: AWS EC2 設定指南

  • 分享至 

  • xImage
  •  

概述

本專案的服務除了Serverless的AWS Lambda外,其他包括Kafka、BotServer、及MongoDB等,都是部署在AWS EC2上。這個章節將簡要說明一台能運作的AWS EC2需要的標配設定,來讓我們可以在上面進行部署、維護、更新等工作:

  • OS類型
  • 使用SSH連線到EC2
  • 上傳檔案到EC2
  • 安裝套件
  • 防火牆設定
  • 擴充硬體設備

AWS EC2

  • Amazon Elastic Compute Cloud (EC2)是AWS提供的雲端計算服務,就是最基本款的雲端虛擬機。
    說是基本款,並不是說他很便宜的意思,而是相較於其他專門為特定領域設計的服務(例如資料庫的RDS、Kafka服務的Amazone MSK),它提供的就是最一般的雲端機器,可以想像是你租了一台什麼都沒有的伺服器一樣。
  • 既然是空白的伺服器,要在上面把我們運作及維護我們的專案,就必須要從硬體配置、OS,套件安裝和連線設定等都配置好,才能順利運作。
  • 由於EC2可以自由選擇硬體設備的等級,使用者可以根據自己手頭上的餘裕,選擇平價EC2 Vs 奢華 EC2。
  • 本篇文章將介紹如何選擇選擇作業系統(AMI)、連線方法、SSH設定、安全性群組以及如何安裝所需的軟體。

AMI (Amazon Machine Image)

  • EC2上的作業系統(OS)和環境設定是由AMI控制。AMI是一組預先配置好,裝好基本Library的OS image,可以選擇適合需求的 AMI,並根據它來啟動 EC2 實例。

  • 查看AMI: 在EC2儀表板上,可以在左測選單的image -> AMI catelog查詢目前EC2的AMI Name和AMI Id。這些資訊可以用來查詢對應的操作系統和環境設定。例如,amzn2-ami-kernel-5.10-hvm-2.0.20221004.0-x86_64-gp2 對應的是 Amazon Linux 2。

  • 要開啟一台EC2 Instance時,就會有步驟選擇AMI,這邊不贅述流程。

https://ithelp.ithome.com.tw/upload/images/20241002/201052271YUzJbM5mk.png

Amazon Linux 2

  • Amazon Linux 2是AWS提供的自家 Linux 發行版,預裝了Amazon Linux 2專屬的yum repository。

  • 安裝套件: 透過sudo yum install [套件名稱] 來安裝所需的套件。

  • 檢查套件: 可以使用 sudo yum list [軟體名稱] 查詢是否有該套件。如果找不到,可能需要手動下載和安裝,例如docker-compose就沒有在Amazon Linux 2 yum repositories上, 要自己安裝。

  • 上述指令需要連線到EC2,連線方式如下介紹:

EC2 連線方式

下面介紹2種連線方式,都是以ec2-user這個預設帳號為例:

  • EC2 Instance Connect

    • 透過EC2 Instance Connect可以直接從AWS主控台連接到 EC2 實例,無需任何額外設定,但是只能登入EC2 Console後使用網頁上的GUI執行,不太方便,也不能用自己慣用的Client端程式連線。
    • 操作: EC2 Dashboard -> 點進Instance -> 點進Instance ID後,在 右邊點”Connect”,可找到EC2 Instance Connect
      https://ithelp.ithome.com.tw/upload/images/20241002/201052279jMe4C1vqp.png
  • SSH Client端

    • 如果希望從本地電腦SSH直接連線到EC2,需配置 SSH 金鑰,步驟如下:
      • 1.準備 SSH 金鑰:檢查本地電腦是否已經生成 Public KeyPrivate Key,通常保存在 ~/.ssh/ 目錄中。如果沒有,可以使用 ssh-keygen 生成一對新金鑰。
      • 2.將 Public Key 上傳至 EC2:使用 EC2 Instance Connect進入EC2,並將本地電腦的 Public Key 複製到 ~/.ssh/authorized_keys 中。
      • 使用 SSH 指令連接:
ssh -i ~/.ssh/id_rsa ec2-user@ec2-xx-xxx-xxx-xxx.ap-southeast-1.compute.amazonaws.com
  • 使用SCP上傳與下載檔案指令:
    • 上傳檔案到 EC2:
scp -i ~/.ssh/id_rsa [要上傳的檔案] ec2-user@ec2-xx-xxx-xxx-xxx:/home/ec2-user/[目的目錄]
* 從 EC2 下載檔案:
scp -i ~/.ssh/id_rsa ec2-user@ec2-xx-xxx-xxx-xx:/home/ec2-user/[要下載的檔案目錄] [要下載的本地目錄]

套件安裝

以下是本專案會用到的套件安裝指令:

  • 安裝 Java (OpenJDK 11)
    • 可以透過以下指令安裝 Amazon Corretto JDK(OpenJDK 11 的 AWS 版本)
sudo yum install java-11-amazon-corretto.x86_64
  • 安裝 Docker 與 Docker Compose
    • 安裝Docker
sudo yum install docker
sudo service docker start
sudo usermod -a -G docker ec2-user
sudo chkconfig docker on  # 設定 Docker 開機自動啟動
* 安裝 Docker Compose: 使用官方指令下載並安裝
curl -SL https://github.com/docker/compose/releases/download/v2.12.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod 775 /usr/local/bin/docker-compose
# 註: v2.12.2可換成需要的版本

防火牆設定

  • EC2使用安全群組(Security Group)來控制進出流量的規則。

  • 可以根據需求新增或修改規則,來允許特定IP和Port連接,例如Kafka可能就需要開放9092, 9093這些常見的Port。

  • 設定防火牆:

    • 在 EC2 Dashboard中,點擊EC2 Instance的Security。
    • 點選 "Inbound Rules(傳入規則)" 或 "Outbound Rules(傳出規則)"。
    • 編輯規則,設定允許的 IP 和 Port,並決定哪些流量可以進入或從EC2送出。
      https://ithelp.ithome.com.tw/upload/images/20241002/20105227522WP7P0DV.png

升級與擴充 EC2

  • 可以透過修改 EC2 Instance Type 來升級硬體,升級之前建議先備份實例或快照。

  • EC2可以只擴充硬碟容量,但是無法單獨改變CPU和Memory的規格,只能選擇各種類型提供的CPU / Memory組合。

  • 更改EC2 Instance Type

    • 在 EC2 Dashboard中,先停止EC2。
    • 點擊 "Actions" → "Instance settings" → "Change instance type"。
    • 選擇新的Instance Type後,重新EC2。
  • 快照與備份

    • 在擴充硬體前,可以透過建立AMI或EBS快照來進行備份。
  • 計費與預算管理

    • AWS EC2 的計費方式可以根據需求選擇 On-demand、Saving Plans等方案。在AWS主控台的 "Billing and Cost Management" 頁面,可以看到目前的計費詳細資料,並根據需求進行調整。
    • Saving plans會想辦法省錢,但改成Saving plans本身要先付錢...

總結

本篇文章概述AWS EC2 的基本設定方法和擴充方式,使我們得到一個專案運作所需的執行環境。希望對於初次使用 EC2的使用者有所幫助。


上一篇
Kafka 概念介紹及部署: 補充說明: Kafka Connect
下一篇
執行環境設定: 背景執行與記憶體監控指令
系列文
從零開始構建能理解語義的 Linebot 架構30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言