Ithome鐵人賽

2021ironman 13th - DevOps - AWS ECS 雲地混合應用與週邊整合

2021ironman 13th – DevOps – Day04 – Amazon ECS Anywhere 基礎說明與建置(下)

先前將主機已經註冊上去了 那接下來就是進到『Task Definitions』開始來建立服務 點選『Create new Task Definition』 因為我們是要建立ECS Anywhere 點選『EXTERNAL』再來 Next Step Task definition name 輸入服務名稱,我這邊只是先建立一個apache測試環境所以名稱直接用『apache』 Network mode 記得保持預設 輸入這個Task所需的記憶體及CPU數量 記憶體單位是M CPU1024是代表1 vCPU 建立容器『Add container』 Container name 輸入名稱 Image 這邊看要抓取的 Image 位置及版本,我這個寫法因為沒有URL 所以會直接跟docker Hub拉 Port mappings 這個數值很重要 是外部要跟Container要對應的Port,看您包的Container是需要哪個Port就使用那個Port 點選『Create』

By Albert Yu

2021ironman 13th - DevOps - AWS ECS 雲地混合應用與週邊整合

2021ironman 13th – DevOps – Day03 – Amazon ECS Anywhere 基礎說明與建置(上)

這系列主要就是講Amazon ECS Anywhere 所以先來看看陽春版怎麼建立出來 基礎運行元件-將外部主機註冊到AWS的必要服務 要將主機註冊到ECS上會有幾個服務一定是必須且一定要使用到的 SSM Agent 協助將主機註冊到AWS 並且可協助部屬其他所需要的Agent或其他所需的軟體 雖然他不是運行中的必要條件但是他是一個部署及更版的重要環節 如果他停止了有很大的可能會出現服務障礙 同時也可以透過SSM自動化修補OS中的漏洞及更新 Amazon ECS container Agent Amazon ECS 容器代理可讓容器執行個體連線到您的叢集 Docker Docker運行的核心軟體 基礎運行元件-支持的作業系統與聯網條件 基本上地端主機只要符合OS且可連網基本上都沒問題的 建置流程 進去AWS ECS 進入到Clustes 並點寫 Create Cluster 開始建立 選擇Networking only 並點選 Next step 這邊要注意Networking only才有支援ECS Anywhere 填寫Clustes名稱並記得

By Albert Yu

2021ironman 13th - DevOps - AWS ECS 雲地混合應用與週邊整合

2021ironman 13th – DevOps – Day02 – 可能發生的費用、目標架構說明

可能發生的費用 1. 雲地混合的DevOps環境 * AWS CodeCommit * AWS CodePipeline * AWS CodeBuild * AWS ECS * AWS ECS Anywhere 以最小規格測試一個月費用大約$10 2. 雲地混合的EC架構 除了第一的費用之外 * AWS VPN * AWS Application Load Balancer * AWS Cloudfront AWS VPN會使用AWS的PaaS服務所以整體費用除原先DevOps費用之外會額外加上$65 費用上基本都可以在AWS的個服務上看到服務的計費方式 這邊有點比較特別的是目前 AWS ECS Anywhere 有提供六個月的三台非AWS機器註冊是免費的 所以如果要測試混合架構的話現在是個好時機 https://aws.amazon.com/tw/ecs/anywhere/pricing/ 目標架構基礎說明 雲地混合的EC架構 從『雲地混合的DevOps環境』展開單就DevOps是無法產出價值的,

By Albert Yu

2021ironman 13th - DevOps - AWS ECS 雲地混合應用與週邊整合

2021ironman 13th – DevOps – Day01 – 前言與Lab架構說明

前言 今年不搞自虐(之前都搞跟近期專案結合度比較低的主題) 結合最近一直在研究的Amazon ECS Anywhere 並且讓他結合地端、GCP、Azure 看Amazon ECS Anywhere的混合雲能做到哪個程度並且在電商、DevOps、IOT當中能碰出什麼樣的火花 直接拿我家的LAB環境加上AWS、Azure、GCP、Linode帳號來進行實作 身為資訊人如果不能在家中把真實的情境蓋出來那就不算真的熱愛資訊產業 PS:老婆交代別再給我去參加鐵人賽~我還是來了,希望寫完之前他都不要發現。 Lab架構說明 Lab設備列表 * MikriTik 的 CCR 1009-7G-1C-1S+ 作為Gateway * HP A5120 Series switch JE074A 24Port 作為Switch * E3-1230V2 + 32G的主機兩台安裝Proxmox VE作為一堆虛擬機的載體 * Synology DS1621+ 作為SAN Server與NFS備份用 架構上儘量模擬簡化版的企業環境希望整個環境上面是可以對比實際狀況 最終目標有兩個

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day15 – MYSQL 管理上的難題

方便與管理 傳統上管理MYSQL都是開發的工作 而phpmyadmin則是cpanel中的工具 在迷你網站上cpanel已是必備工具 而在拆分mysql後所需面對的就是如何去連過去 phpmyadmin 設定方式 首先要先瞭解到如果要客制化設定的話需產生config.inc.php,並且設定該檔案 該檔案範例檔案為 config.sample.inc.php 這是在您下載phpmyadmin就有的檔案 首先將config.sample.inc.php複製並重新命名成config.inc.php 然後打開config.inc.php尋找下列原始碼 如果只是需要單台主機連線就把 $cfg[\'Servers\'][$i][\'host\'] = \'localhost\'; 中的localhost改成遠端主機的IP或URL 如果是在單一個phpmyadmin中要控制多個主機則複製下列黃框中的文字 進一步往下貼上 貼上之後就會顯示如 這時就可以用您的帳號密碼進行登入

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day14 – AWS MYSQL 的選擇與評估

幾種建置方式 通常我們的建置會有幾種作法 * VM自建 * PAAS服務 * Container VM VM的作法其實就是AWS EC2 說實在的不是很建議因為備份還原等等機制都要自己做 我還有遇過客戶做了mariadb cluster結果只要讀寫超過一個瓶頸無論超過幾台就自動解散組不回去的狀況 但是勝在便宜可控制性高 這邊唯一要注意的是讀寫的部分是受到AWS EC2中的EBS所控制 PAAS服務 PAAS服務的MYSQL在AWS中通常指的是RDS MYSQL 這是指AWS利用EC2幫你做好的服務 你無法碰到底層但是AWS的調教功力絕對比你我都好 但是一樣會受到AWS EC2中的EBS所控制 另外還有一種資料庫是AWS特色服務 Amazon Aurora 他是一種大型storage架構出來的的資料庫 由下圖可一窺架構之一二 他的特色是已經做完讀寫分離且讀的部分已經透過proxy幫你做好分配 且讀取資源可做到自動擴展 讀五台不夠就開十台來跟你拼了 同時他每台再不考慮SQL效能之下都可以有200K/800K的奇特表現 算是雲端界的讀寫效能

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day13 – EC2第一個拆分的東西MYSQL

為何要先拆MYSQL? 其實很多東西都要分拆 而不是只有MYSQL 其實只要是程式碼之外的的東西都是需要分拆的對象 但是在整體結構當中通常資料庫都是第一分拆的 原因無他 在標準三層式架構中Web、AP、DB 本身就因該是獨立的且是做到HA的架構 且合理的三層式架構比起單台主機的架構相對多了彈性與擴展性 注意事項 拆分資料庫最重要的事情很多但是有幾件事情由其重要 1. 是否有停機時間,如果你匯出匯入時出現了新訂單?這時候該怎麼處理。最簡單的就是停機 2. 程式碼中的連線設定檔掌握了,我看過有公司一個PHP自建的ERP光連線一個資料庫就有10幾處設定檔,上去是一場災難 3. 資料庫不在本機狀況之下該如何管理? 先想好這幾點可以讓您搬遷的路途上少點灣路 最初與最後的拆分目標 可能會如同這張圖或者是接近 這是兩年多前協助客戶進行的專案了 你會發現有很多的拆分點 但是無論如何資料庫都是首先要務

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day12 – AWS Security Group

Security Group概念 安全群組會做為您執行個體的虛擬防火牆,控制傳入及傳出流量。當您在 VPC 中啟動執行個體時,您可以為執行個體指派最多五個安全群組。安全群組會在執行個體層級執行,而非子網路層級。因此,在您 VPC 中子網路內的每個執行個體都可指派給一組不同的安全群組。 原廠說明文件 <--連結--> Security Group基礎特性 * 您可以為每個 VPC 建立的安全群組數、每個安全群組可新增的規則數,以及您可以與網路界面建立關聯的安全群組數都具有配額。如需更多詳細資訊,請參閱 Amazon VPC 配額。 * 您可以指定允許規則,但無法指定拒絕規則。 * 您可以為傳入和傳出規則分別指定規則。 * 當您建立安全群組時,它沒有傳入規則。因此,直到您將傳入規則新增到安全群組之前,來自其他主機的流量都無法傳入您的執行個體。 * 根據預設,安全群組會包含允許所有傳出流量的規則。您可以移除規則並新增只允許特定傳出流量的傳出規則。若您的安全群組沒有傳出規則,將不會允許來自您執行個體的傳出流量。 * 安全群組是具狀態 — 的,若您從執行個體傳送請求,該請求

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day11 – AWS VPC 網路設計

何謂 VPC (官方說法) Amazon Virtual Private Cloud (Amazon VPC) 允許您在 AWS 雲端佈建一個在邏輯上隔離的部分,並在自己定義的虛擬網路中啟動 AWS 資源。您可以完全掌控虛擬聯網環境,包括選擇自己的 IP 地址範圍、建立子網路,以及配置路由表和網路閘道。您可以在 VPC 中同時使用 IPv4 與 IPv6 來安全且輕鬆地存取資源和應用程式。 您可以輕鬆自訂 Amazon VPC 的網路配置。例如,您可以為可存取網際網路的 Web 伺服器建立一個公開子網路。您還可以將後端系統 (如資料庫或應用程式伺服器) 放置在無法存取網際網路的專用子網路中。您可以利用安全群組和網路存取控制清單等多種安全層,對各個子網路中 Amazon EC2 執行個體的存取進行控制 原廠說明文件 <--連結--> 使用方式 其實我們可以把VPC想向專屬於我們機房中的專屬網路

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day10 – 轉換EC2第一個面對的問題與AWS中最基本的『網路與資安』

AWS 主機中最棒的工具Security group AWS Security group 功能 Security group的功能很簡單,他只是限定某個特定的IP、Port或是某範圍的IP、Port,限定這些東西能不能進出,可以把它視為一道非常簡單的防火牆, 設定完Security group後,再套用到某些機器上,來限制跟這台機器有關的網路進出,這就是Security group的功能。 AWS Security group的費用 Security group完全是免費的,所以大家可以不用擔心設定錯誤造成費用的產生,不過網路本身是必須收費的,所以一個好的Security group設定,可以幫助我們降低不當的網路流量所產成的費用。 設定AWS Security group 瞭解了Security group的設定後,我們可以來看一下Security group的設定介面: 首先我們來看一下 上方四個頁籤,最左邊的Description與最右邊的Tags,都是針對這一個Security group的設定,用來輔助使用者認出這個Security group而已,

By Albert Yu

2020ironman 12th – Modern Web - PHP on AWS 進化論 - 從單主機一路進化到Serverless,以WordPress與 laravel 為例 (中斷)

2020ironman 12th – Modern Web – Day09 – Amazon Lightsail 轉 AWS EC2

為何要轉換? AWS 官方說明 <-連結-> 其實就主機資源這件事情是最容易理解的 但就真實應用情境上來說 如果你希望有真實的網路環境使用 可以建立真正的私有網段或者是控制路由等等的功能 Lightsail是無法協助的 因為他的VPC是簡約版的 如果需要完整的周邊功能比如控制路由或與AWS其他幾百項的服務完整結合都還是要轉換到EC2的 轉換方式 轉換方式是由主機產生Snapshot再將這個轉換成AWS EC2 AMI 所以主機一定是需要一段時間停機的 製作方式只要進到主機的控制介面中切換至Snapshots就可以看到『Create snapshot』的按鈕了 這時候點選『Create snapshot』後輸入名稱及點選Create即可產生snapshot 要注意點選Create後會有一瞬間主機會是暫停的狀況來產生快照 會發生SSH斷線或者服務連不到的狀況幾秒 如果你的環境不能當下不能停機要注意這狀況喔 建立過程需要數分鐘(等待) 建立完成 點選右邊的點點就可以看到 點選『Export to Ec2』 確認轉換 告警頁面 這邊資訊很重要因為

By Albert Yu