首先,先開一台 EC2 機器,架設一下 HTTP/HTTPS,設定完就建一個 AMI 保存起來,再從 My AMI 再多開一檯出來(記得要擺在同一個 Availablility Zone才行),變成有兩檯 EC2 機器正在運行。此外,若 SSL 憑證有第三方簽證,而對於 EC2 上的機器,其 SSL 憑證可以不必用第三方簽證,只要在 Elastic Load Balancer (ELB) 上頭是第三方簽證的就夠用了!讓管理方便許多。
接著設定 ELB 吧,比較需要留意是 SSL 的設定,其中 DNS 跟 SSL 憑證是委託 GoDaddy 維護的,所以先從 GoDaddy 取得 SSL 憑證吧,大概會有三個檔案:
- xxxxxx.crt
- gd_bundle-xxxx.crt
- xxxxxx.key
此時在填寫資料時,在 Public Key Certificate 就是 xxxx.crt ,而 Certificate Chain 就是 gd_bundle-xxxx.crt ,比較麻煩一點的是 Private key 那塊,需要稍微轉換 xxxxx.key
$ openssl rsa -text -in *.key
再把 -----BEGIN RSA PRIVATE KEY----- 到 -----END RSA PRIVATE KEY----- 裡的資料貼上即可。如此一來即可完成 SSL 設定。其他的步驟就沒什麼難的。
設定要用來監控判斷機器狀況的檔案:
挑兩檯機器以上吧:
設定好後就會得到一個網址可以連,此網址就會動態調整 requests 到數檯機器上:
此外,若有機器 out of service 時,也能觀測或動態刪減,十分方便:
其他筆記:
- 關於 SSL / HTTPS 的部分,記得去申請個 CNAME Record 來對應到 ELB 的網址,如此一來,使用者逛網頁時就不會彈跳出不會彈跳出憑證問題
- 關於如何測試 ELB 到底有沒有動態調整 requests 的部分,建議可以寫一隻 PHP 讀 /etc/hostname 出來,接著就可以透過 ELB 網址瀏覽,觀察讀出來的 hostname 是否有在變化
$ cat index.php
<?php
@date_default_timezone_set("Asia/Taipei");
$current_datetime = @date('Y-m-d H:i:s', @time());
echo "Service @ $current_datetime:".file_get_contents('/etc/hostname')."\n";
你好,
回覆刪除如果單一台ec2要架設https
amazon是否有提供ssl certificate呢?
謝謝