星期六, 4月 06, 2019

AWS Elastic Load Balancing with openSUSE instance in AWS 測試小記

AWS Elastic Load Balancing with openSUSE instance in AWS 測試小記

OS: openSUSE Leap 15
AWS CLI: 1.16.135

準備工作:

參考昨天自己的筆記建立兩個 openSUSE instances in AWS

因為要測試 Load Balancing
建立的 EC2 instance 分別隸屬於不同的 subnet ( 不同的 Availability Zone )


兩台 openSUSE Leap 15 instance ( 兩台 instances 都要做 )

==== 在 openSUSE instances 內 ====

切換成 root
>  sudo  su -

安裝 apache2 套件
# zypper  install  apache2

Building repository 'openSUSE-Leap-15.0-Non-Oss' cache ..................................................................................................[done]
Building repository 'openSUSE-Leap-15.0-Oss' cache ......................................................................................................[done]
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 11 NEW packages are going to be installed:
 apache2 apache2-prefork apache2-utils git-web libapr-util1 libapr1 libbrotlicommon1 libbrotlienc1 libgc1 system-user-wwwrun w3m

The following recommended package was automatically selected:
 w3m

11 new packages to install.
Overall download size: 3.3 MiB. Already cached: 0 B. After the operation, additional 8.8 MiB will be used.
Continue? [y/n/...? shows all options] (y):  Y

啟動 apache 服務 ( Web )
# systemctl  start  apache2

觀察服務狀態
# systemctl  status  apache2

● apache2.service - The Apache Webserver
  Loaded: loaded (/usr/lib/systemd/system/apache2.service; disabled; vendor preset: disabled)
  Active: active (running) since Sat 2019-04-06 11:29:18 UTC; 3s ago
Main PID: 2000 (httpd-prefork)

設定開機啟動服務
# systemctl  enable  apache2

Created symlink /etc/systemd/system/httpd.service → /usr/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/apache.service → /usr/lib/systemd/system/apache2.service.
Created symlink /etc/systemd/system/multi-user.target.wants/apache2.service → /usr/lib/systemd/system/apache2.service.

建立測試網頁 ( 不同 site 帶不同的數字 )
# vi   /srv/www/htdocs/index.html

<html> This is site 1 </html>

=============================

接下來在建立一個 security group 可以允許 port 80 連入

> aws ec2 create-security-group --group-name  testweb-sg  --description  "Test Web"

> aws ec2 authorize-security-group-ingress  --group-name  testweb-sg --protocol  tcp  --port  80 --cidr  0.0.0.0/0

接下來使用 aws 指令來將剛剛的 instance 掛上 test-sg ( port 22 ) 以及 testweb-sg ( port 80 )兩個 security group

針對兩個 instance 來修改
> aws ec2 modify-instance-attribute --instance-id  i-0563bb05f74c6d4d3 --groups "sg-09422cde3af0f76cb" "sg-0e725fc07ae70c8a8"

> aws ec2 modify-instance-attribute --instance-id i-06bfb784bea733d7b --groups "sg-09422cde3af0f76cb" "sg-0e725fc07ae70c8a8"

  • Instance-id 請換成自己的 id
  • --groups 後面請填上 security-group-id


測試網站存取
針對兩個 instance 的 Public IP 來存取




參考官方文件:

驗證是否有支援 ELB
> aws elbv2  help

如果有出現指令說明就是有支援

使用 aws 指令 建立 load balancer
> aws  elbv2  create-load-balancer  --name  test-elb --subnets  subnet-92dfe4fb subnet-e4e8989e  --security-groups  sg-0e725fc07ae70c8a8

  • 建立一個 test-elb, 與 2 個 subnet 和 1 個 security group

到 Manage console 觀察
目前的狀態是 provisioning ( 配置 )
Listeners 是空的


使用 aws 指令建立 target group
> aws  elbv2  create-target-group  --name  test-target  --protocol  HTTP --port  80  --vpc-id vpc-c42635ac

  • 這邊要指定 vpc-id 不能使用預設的方式

可以到 Manage console 觀察

順便觀察 Registered targets , 目前為空

接下來用 aws 指令將 instance 註冊到 target
> aws  elbv2  register-targets --target-group-arn arn:aws:elasticloadbalancing:us-east-2:772127831904:targetgroup/test-target/732b4ddaff306e56  --targets  Id=i-0563bb05f74c6d4d3  Id=i-06bfb784bea733d7b

  • Target-group-arn 用剛剛建立起來的 arn
  • --targets 後面接 2 個 openSUSE instance id

再次觀察 Registered targets


最後使用 aws 指令建立 listener

> aws  elbv2  create-listener --load-balancer-arn arn:aws:elasticloadbalancing:us-east-2:772127831904:loadbalancer/app/test-elb/00d35f538d194bd1  --protocol  HTTP  --port 80  --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-2:772127831904:targetgroup/test-target/742b4ddaff306e56


到 Manage Console 觀察 test-elb 的 Listeners


觀察  test-elb 的狀態為 active


點選 Description 觀察 DNS name 並複製 FQDN

開啟瀏覽器
使用 Load balancer 的 FQDN 進行存取測試, 應該會看到向不同 instance 進行存取


今天完成 AWS Load balaner 測試
也是再往前一小步

~ enjoy it


Reference: