新宿鮫:第11回AWSもくもく勉強会 ELBを触ってみました
先週に引き続き、新宿鮫:第11回AWSもくもく勉強会に参加しました。
今回はELB(Elastic Load Balancer)でアクセスの振り分け実験です。
ほんとはオートスケーリングまでやりたかったのですが、残念ながら時間切れ orz
アプリサーバーを用意
まずはEC2でTomcat起動。Tomcatのポートは8080を使っているので、セキュリティグループでアクセスできるようにしておきます。
このサーバーでAMIを作って、他のサーバーを立てていきます。
その際、表示されるページが同じだとどのサーバーが呼ばれているか判断できないので、JSPを用意してホスト名を動的に表示するようにします。
<%@page import="java.net.*" %>
<html>
<head></head>
<body>
Tomcat Server (Host:"<%= InetAddress.getLocalHost().getHostName() %>")<br>
</body>
</html>
AMIを作成。名前は MokuMokuAMI
AMIができたら、それを選んでLaunch
2台のEC2が準備できました。名前はRedとYellowです。
ちなみにアクセスするとこんな感じでホスト名が表示されます。
ELB(Elastic Load Balancer)の設定
EC2 DashboardにあるLoad BalancersからELBを作成します。
名前はMokuMokuELB
ここではVPC内に作成するので、"Create LB inside"でVPCを選びます。
VPC外からアクセスする必要があるので、"Create an internal ~"はチェックしないまま。
Tomcatへアクセスするために、ポート8080を追加します。
先ほど立てたEC2ではApacheも動くようにしてあったので、ポート80はそのまま残しておきます。
"Available Subnets"にあったものを選んで、"Selected Subnets"に移動します。
先ほど作成したEC2を両方とも選びます。
ELBの設定画面で各インスタンスの状況を確認できます。Status が In Service となっていればOKです。
インスタンスが正常に動作している場合でも、最初はIn Service になるまで少し時間がかかるようです。今回も2,3分ほど待ちました。
動作確認
設定画面にあるDNS Nameのポート8080にアクセスします。
無事2つのホストが交互に表示されました!
ただ、初めはなかなか切り替わらなかったのですが、なぜか画面のロードが終わってからF5を押して更新してもサーバーは切り替わらず、
F5をダブルクリックして、画面ロード中に再度アクセスすると切り替わるようですw
DNSが反映されるまでしばらく時間がかかるので、待ちきれない場合はnetstatなどでIPを調べれば表示できます。
管理コンソールからはIPを見ることができないので、裏でIPアドレスが自動に変わる可能性があります。そのため通常はDNS Nameを使った方がいいでしょう。