こんにちは! JQです。
前回は『 Amazon VPC編~Natインスタンスパート③~ 』ということで、テンプレートを利用せずにNatインスタンス立ち上げるまでをお話しました。
今回は『Amazon VPC編~Natインスタンスについてパート④~』と題して、
Natインスタンスの切替を試してみたいと思います。
それでは実際に、VPCのNatインスタンスの切替を試していきたいと思います。
前回に引き続き、以下の図のような簡単な冗長化を試してみます。
今回はスクリプトを利用してRouteTableを切り替えてみます。
1.NatインスタンスにAPIをインストール
まずはNatインスタンス用のSecurityGroupを変更してアクセス出来るようにします。
Versionが古いためアップデートをかけます。
1yum update aws-apitools-ec2NatインスタンスでAPIを利用できるように各種設定をしていきます。
以下の必要な変数を.bash_profileに記述します。
1export EC2_PRIVATE_KEY="${AWS_PATH}/cert/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem"2export EC2_CERT="${AWS_PATH}/cert/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem"3export EC2_URL="https://ec2.ap-northeast-1.amazonaws.com"4export AWS_CREDENTIAL_FILE="${AWS_PATH}/credential-file-path"5export EC2_REGION="ap-northeast-1"sourceコマンド等で反映します。
1# source /root/.bash_profile下記コマンドなどで確認しましょう。
1#ec2-describe-instances2.切替用のRouteTablesの作成
CreateRouteTableで切替用のRouteTablesを作成します。
Failover用のNatインスタンスを設定します。
3. RouteTableの切替シェルスクリプトを構築
下記はmainのRouteTableを切り替える単純なスクリプトになります。
describeでassociation.mainで絞り込んで取得した情報の「routetableassociationid」と「routetable_id」をROUTETABLE・ASSOCIATIONの変数に格納して、
現状のroutetableidでは無い方に切り替えます。
1#!/bin/sh23rt1=rtb-xxxxxxx14rt2=rtb-xxxxxxx256eval `ec2-describe-route-tables -F association.main=true | egrep '^(ROUTETABLE|ASSOCIATION)' | awk '{print $1"="$2}'`78if [ "$ROUTETABLE" != "$rt1" ]9then10 ec2-replace-route-table-association $ASSOCIATION -r $rt111fi1213if [ "$ROUTETABLE" != "$rt2" ]14then15 ec2-replace-route-table-association $ASSOCIATION -r $rt216fi4.切替確認
それでは実際に切替を試してみましょう。
先ずは下記コマンドで通信をしている状況を確認します。
※8.8.8.8はGoogleDNSになります。
1ping 8.8.8.82PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.364 bytes from 8.8.8.8: icmp_seq=1 ttl=58 time=5.50 ms464 bytes from 8.8.8.8: icmp_seq=2 ttl=58 time=5.81 ms564 bytes from 8.8.8.8: icmp_seq=3 ttl=58 time=5.86 ms664 bytes from 8.8.8.8: icmp_seq=4 ttl=58 time=5.57 ms764 bytes from 8.8.8.8: icmp_seq=5 ttl=58 time=5.78 ms通信をしている途中で現在のRouteTableのNatインスタンスの宛先を削除します。
pingがうまくいかなくなった事が確認出来たら、上記スクリプトを実行してみます。
1# sh routetables_change.shスクリプトがうまくいった場合はpingが再度成功していると思います!
いかがでしたでしょうか?
実際にはNatインスタンスの監視や別Zoneに置くべき等、設計が必要な箇所があるかと思います。
今回の作業でイメージだけでも掴んでもらえればと思います!
次回は『 Amazon EMR編~ElasticMapReduceの使い方パート①~ 』ということで、EMRを試してみたいと思います。お楽しみに!