前面我們建立了 ECS cluster 跟 service,並且用一台 EC2 instance 作為 container instance 來執行 task,最後用 EC2 instance 的 public IP address 連到 Laravel。

等等,如果只是要這樣,直接開台 EC2 instance 把 web server、php、database 裝一裝就好了吧?幹麻搞得那麼複雜?

沒錯,前面先了解如何建立 ECS cluster 跟 service,接下來我們要讓 ECS service 可以執行多個 task,並且以 load balancer 進行負載平衡、將 request 分散到多個 container 上。這麼一來,只要連到 load balancer 就能連到我們的 application 了。

今天我們先來玩玩 load balancer~

Read more »

終於要開始建立 ECS service 了!今天我們的目標是讓 Laravel 成功在 ECS service 上運作~

ECS Service 簡介

ECS service 是 AWS ECS 用來執行長期運作且 stateless 的 application 的功能,我們用 Laravel 開發的 web application 就是需要長期運作的 application,不像影片轉檔之類的工作,只在需要的時候執行一次。

一個 ECS cluster 可以建立多個 ECS service,每個 ECS service 會指定一個 task definition 及希望執行的 task 數量(task desired count)。

task 的數量由ECS service scheduler 負責維持,它以我們指定的 scheduling strategy 來決定 task 要放在哪台 container instance 上(task placement)。如果有 task fail 或 stop,ECS service scheduler 會啟動新的 task 以確保 task 數量。service 的 scheduling strategy 也被稱為 service type,有 REPLICA 跟 DAEMON 兩種。

接下來我們會啟動一個 MySQL container 作為 Database,然後建立一個基本的 ECS Service 並且看到 Laravel 的歡迎畫面。

Read more »

今天開始進入使用 Gitlab pipeline deploy 的部份,我們要把「手動 build docker image 並 push 上 ECR repository」這部份自動化、交給 Gitlab pipeline 做。不過使用 Gitlab pipeline 前,要先準備一台機器好安裝 Gitlab Runner。

需要一台機器?我們不是準備用 AWS 嗎?到 AWS EC2 開台機器吧!EC2 是個可以讓我們啟動機器的服務。機器需要有個網路環境才能啟動,所以我們今天先設置好它需要的網路環境,也就是 VPC 與 Subnet。(有種要做的事的 stack 一直被 push 的 fu 絕對不是錯覺!)

設置 AWS 費用通知

開始前先保護一下自己的荷包~(這很重要!)

前兩天提到除非還有免費使用期並且使用 free tier 的 resource,不然使用 AWS 服務會被收費、會被收費、會被收費(很重要說三次),要注意自己的資源使用狀況與費用(不然荷包會哭哭)。AWS 有個功能可以在花費達到設定的金額時寄 email 通知,可以用這個功能來注意費用有沒有超過太多。

這個功能是 Billing 裡 Cost Management 的 Budgets,用 root email 登入可以進到 Billing,從左邊選單進到 Budgets:

image.png

點選右上角 Create budget。

Read more »

2024 寫在最前面:這是去年(2023)IT 鐵人賽的文章,來個舊文重貼~


開賽啦~開賽啦~這 30 天會帶大家從地面飛上雲端!呃不是,是從本機建立 Laravel 的 Docker image 開始,一步步透過 Gitlab Pipeline 建立將 image deploy 上 AWS 的 CD 流程,再利用 AWS 的 container 服務 ECS 來運行 Laravel 的 web application。

另外,作為工程師,懶是最大的美德,能電腦做的事情就不要自己做,能用程式跑的東西就不要自己手動按,所以我們也會使用 infrastructure as code 的工具 Terraform 來維護以及持續進化各項基礎建設。(重點是雲裡那麼多複雜的設定,沒有程式碼筆者根本記不起來)

Read more »