Amazon Elastic Compute Cloud (Amazon EC2) 直譯過來是一種可伸縮的計算雲,提供了普遍的實例類型選擇,這些實例類型通過優化以適應不一樣的用例,實例類型包括CPU、內存、存儲和網絡容量的不一樣組合,使咱們可以靈活地爲應用程序選擇適當的資源組合。每一個實例類型包括一個或多個實例大小,容許您將資源擴展到目標工做負載的需求。這裏是 EC2 實例類型一覽表,截部分圖在這裏展現html
說簡單一點: EC2 就是一個按照你需求配置的虛擬機,若是你須要在虛擬機上作 CPU 密集型的任務,那就選高 CPU 低內存的實例,若是是 I/O 密集型的,那就選擇低 CPU 高內存的實例,花最少的錢知足提供最貼合你須要的服務git
有了這個基本的瞭解事後,咱們就能夠在 EC2 上安裝 Apache 服務來進一步瞭解 EC2github
因爲本身開通了 AWS free tier(綁定信用卡),能夠免費玩 12 個月,若是你也這樣作,建議設置好帳單閾值,當使用了產生費用的服務時,會給你提醒,以防產生過多開銷shell
點擊下圖 Launch Instance 按鈕新建 EC2 實例瀏覽器
新建 EC2 實例主要按照下圖上方的七步完成,首先是選擇 AMI (Amazon Machine Images), 其實就像選擇操做系統,標記爲 Free tier eligible
的是咱們能夠無償使用的,下圖用紅色框線標記的則是 Amazon 封裝好的 AMI,裏面會包含 ECS agent 以及 Docker 的配置(本次 demo 不會用到這些服務),其餘 AMI 可能須要手動安裝,因此沒有特殊要求也建議選擇 Amazon AMI安全
點擊右側的 Select 按鈕進入下一步bash
選擇系統配置,Free tier eligible 只有這麼一種類型(1個vCPU,1GB Memory)網絡
繼續點擊 Confiture Instance Details,進行詳細內容配置,下圖中作了一些字段的說明,演示的狀況下多以默認設置爲主負載均衡
若是沒有額外的 non-required
的配置,能夠繼續點擊 Add Storage 進行存儲方面的配置,默認會有 8GB 的存儲空間,足夠咱們安裝 Apache 服務,因此這裏不會額外添加其餘 Volumecurl
繼續下一步 Add Tags
下一步 Configure Security Group, Security Group 其實就比如防火牆,分爲 Inbound Rule(默認deny all) 和 Outbound Rule(默認 allow all),下圖配置了兩種(SSH/HTTP)方式反問 EC2 實例,前者用於後續安裝 Apache 服務,後者用於瀏覽器驗證服務,這裏的 source 都是 0.0.0.0/0 (指任何訪問來源,這是很寬鬆的規則,實際業務中也是不容許這樣的)
到這裏就能夠點擊 Review and Launch 來發布 EC2 實例了
檢查配置內容,若是沒有問題,最終點擊 Launch,在最終 launch 以前,還須要生成 key pair(將其下載到本地),用於 SSH 訪問,若是已經生成過,也能夠選擇用已有的
最終 Launch Instances,就獲得了一個處在 running 狀態的 EC2 instance
從上圖中能夠看出,咱們也被分配一個 Public IP 54.145.44.9
若是咱們不使用 Elastic IP ,咱們每次 Launch 一個 EC2 服務都會獲得一個新的 Public IP,因此你的應該和個人不同
接下來,咱們就能夠用剛剛的 Key Pair 鏈接 EC2 來安裝 Apache 服務
點擊上圖 Connect
按鈕, 有三種鏈接方式:
第一種鏈接方式就像你建立 github repo 同樣給出了你完整的操做步驟。默認狀況下,若是你直接使用下載下來的 Key Pair 來鏈接 EC2, 會報錯說「文件權限太大」。因此要經過 chmod 400
來給定合理的文件權限, 接下來就在 Mac 下作一下鏈接 EC2 的演示
其中
ec2-user
是 Amazon Linux 2 AMI 的默認用戶 (鏈接的前提必須是在 Security Group 的 Inbound Rule 支持 SSH 方式鏈接配置)
若是你身邊沒有命令行工具或者 Putty,也能夠直接使用第三種經過瀏覽器鏈接的方式:
點擊 Connect,一樣會進入 EC2
從上圖能夠看出,有兩個 IP,一個 Public IP,一個 Private IP,若是經過 SSH 鏈接,注意使用前者
第二種鏈接方式因爲默認狀況沒有 IAM 配置,暫時沒辦法經過該種方式鏈接:
到這裏,咱們就能夠進入 EC2 來安裝 Apache 服務了
切換爲超級管理員身份
sudo su
先作系統更新
yum update -y
安裝 httpd
yum install -y httpd.x86_64
啓動 httpd 服務
systemctl start httpd.service
Enable httpd 服務
systemctl enable httpd.service
到這裏 Apache 服務就已經安裝好了
直接在命令行中經過 curl 命名進行測試
curl localhost:80
從下圖能夠看出,Apache 服務已經安裝成功
這麼看着不是特別友好,因此經過瀏覽器再次訪問(經過 Public IP),就能夠友好的看到 Apache 服務的測試頁面了
按照測試頁面說明,更改一下測試頁面內容
echo "Hello AWS from $(hostname -f)" > /var/www/html/index.html
刷新瀏覽器頁面
到這完成的 Apache 服務就已經安裝完畢了
若是在 EC2 instance 建成後安裝 1 個軟件還好,若是要安裝多個軟件,而且要在多個 EC2 instance 上運行,上面這種安裝方式顯然很不友好,AWS EC2 支持使用 User Data 來解決咱們上述痛點
其實就是在 EC2 instance 第一次啓動的時候須要執行的 shell 腳本
咱們能夠將上述安裝 Apache 服務的全部步驟編寫成一個 shell script
#!/bin/bash sudo su yum update -y systemctl start httpd.service systemctl enable httpd.service echo "Hello AWS from $(hostname -f)" > /var/www/html/index.html
有了這個腳本,咱們就能夠在 EC2 instance 的 Configure Instance 步驟時的高級選項中,就能夠添加User Data 腳本內容
後續步驟和上面同樣,這裏再也不重複了,方便了許多
若是建立 EC2 instance,都須要輸入腳本,萬一哪次拷貝出現誤差,一樣會帶來一些問題和不變,因此 AWS 一樣支持將 EC2 打包成 image 的功能解決這個痛點(熟悉 Docker 的朋友應該秒懂建立 Image 的做用)以下圖
輸入相關的信息
一個 AMI 就這樣的建成了
本身建立的 AMI 能夠經過點擊左側菜單 AMIs 來查看
後續在 Create Instance 的時候就能夠選擇從你本身的 AMI 中建立,到這裏,關於 EC2 種安裝 Apache 服務就介紹完畢了
相信經過這篇文章,你對 EC2 有了一個基本的概念,經過安裝 Apache 服務,以及使用 User Data ,再到最後使用 AMI,也逐步豐富你對 EC2 相應功能的理解,以上的這些功能,也只是 EC2 的冰山一角,實際他能夠結合 EC2 Template作 AWS Batch Job 工做,以及多個 instance 經過 ASG 來管理。之後陸續展開說明
最後
瞭解過 EC2 基本功能後,也要及時 stop 或 terminate EC2 instance,以防長時間處在 running 狀態帶來開銷
EC2 是一個很是成熟的服務,有多種 instance 類型應對各類需求,同時水平擴展和垂直擴展策略也能夠從容應對各類突增請求。
在使用雲服務以前,要考慮基礎設施,網絡安全,負載均衡,健康檢查以及監控等,以上這些設置都要經過各類組件組合在一塊兒,反覆調試才能獲得一種相對較好的平衡。而 AWS EC2 藉助其餘服務 VPC, ALB,以及 CloudWatch 等能夠完美的將傳統搭建過程融合在一塊兒,大大下降了由於系統集成問題致使的 bug。無需搭建任何基礎設施,只須要簡單的配置,在保證穩定性,高可用的同時,大大縮短了一個 APP 上線週期。目前公司全部服務都已按照相應需求發佈到 EC2 實例上,單一的管理入口,讓多個服務管理也更加從容