nakayumcの技術ブログ

エンジニア1年目のブログです。

BIG-IP VE を AWS に構築してWEBサーバを負荷分散させる その1

はじめに

お疲れ様です。nakayumcです。

この内容は2つに別れていて、この記事は前編です。 ここでは、インスタンスの作成からBIG-IPの初期設定とWEBサーバの構築まで記載しています。
Self IPやVirtual Serverの設定については後編をご覧下さい。※作成中

BIG-IP とは

BIG-IPといえばロードバランサーで有名ですが、ほかにもWAFや認証といった機能を持っています。 機能毎にライセンスが分かれていて、それぞれ有効化すると利用できるようになります。

機能として以下のようなものがあります。

構成図

ネットに出られるPublicサブネットにBIG-IPを配置、PrivateサブネットにはWEBサーバを配置しています。
特徴な点だと、BIG-IPに対してPublicサブネットを2つ用意して管理用とWEBアクセス待ち受け用で分けています
そのため、BIG-IPには2つのENIを割り当てていてそれぞれにパブリックIPであるEIPを付与しています。

VPCなどの環境

構成図と照らし合わせながら作成してみてください。

VPC

名前 アドレス/CIDR
f5_bigip-vpc 10.0.0.0/16

サブネット

名前 アドレス/CIDR 用途
f5_bigip-subnet01 10.0.0.0/24 BIG-IPのmgmt
f5_bigip-subnet02 10.0.1.0/24 BIG-IPのVirtualServer
f5_bigip-subnet03 10.0.2.0/24 WEBサーバ用

ルートテーブル

ルートテーブル名 ルート 用途
f5_bigip-rtb01 0.0.0.0/0 デフォルトルート
10.0.0.0/16 VPC
f5_bigip-rtb02 0.0.0.0/0 デフォルトルート ※WEBサーバの構築のため一時的に入れてます
10.0.0.0/16 VPC

サブネットの関連付け

ルートテーブル名 関連付けサブネット名
f5_bigip-rtb01 f5_bigip-subnet01
f5_bigip-subnet02
f5_bigip-rtb02 f5_bigip-subnet03

インスタンスIPアドレス

インスタンス プライベートIP Elastic IP 用途
f5_bigip_ve 10.0.0.100 13.113.24.** mgmt
10.0.1.100 Local通信用
10.0.1.200 18.182.20.** VirtualServer
f5_bigip_web01 10.0.2.25 52.68.1.** 構築完了後にEIP解放します
f5_bigip_web02 10.0.2.82 52.193.4*.** 構築完了後にEIP解放します

前提条件

・既にVPCやサブネット、IGWなどは上記の名前やアドレスで作成されていることを想定しています。
・BIG-IPは評価ライセンスを使用することを想定しています。
以下のサイトから評価ライセンスを発行できます。 www.f5.com

1. EIPの作成

ElasticIPを4個作成します。 2つはBIG-IP用、もう2つはWEBサーバ用です。
WEBサーバのElasticIPについてはhttpdなどのインストールで一時的に必要です。 構築ができ次第解放してOKです。

「Elastic IPを割り当てる」 をクリックします。

ここは特に編集せずに「割り当て」をクリックしてください。

するとElasticIPが払い出されます。この作業をあと3回ほど繰り返し行ってください。
下記のようになればOKで、 名前を付けておくと分かりやすいです。

2. BIG-IPインスタンスの作成

2-1. 名前とAMI

いよいよ、BIG-IPのインスタンスの作成です。
名前を入力したら、右下の「その他のAMIを閲覧する」をクリックします。

Amazonが提供しているマシンイメージを選択できる画面になるので、
AWS Marketplace AMI」タブを選択して、検索欄に「big-ip ve dns byol」と入力します。

今回は、機能が少なめな BIG-IP VE - LTM/DNS (BYOL 1 Boot Location) にしました。
AWAF機能などを試したい方は、ALL というエディションもあります。

「選択」をクリックするとイメージの詳細が表示され、料金などが表示されます。
今回は評価ライセンスを使用するためBYOL(Bring Your Own Licence)を使用しています。

「続行」をクリックするとインスタンス作成画面に戻ります。

2-2. キーペア

ログインに必要なキーペアを作成します。
作成されたキーはなくすとインスタンスにアクセスできなくなってしまうため気をつけてください。

2-3. ネットワーク設定

次に、ネットワークの設定です。
VPCf5_bigip-vpcを選択して、サブネットはf5_bigip-subnet01 を選択します。

セキュリティグループ

セキュリティグループの設定は、ソースの部分が初期でなぜが0.0.0.0/1になっているため、0.0.0.0/0に変更しています。

ネットワークインターフェイス

ネットワークインターフェイス1 は、プライマリIPを10.0.0.100に設定しました。
設定できたら、今回は2個のインターフェイスが必要なため「ネットワークインターフェイスの追加」をクリックします。

ネットワークインターフェイス2では、サブネットをf5_bigip-subnet02を選択します。
プライマリIPは10.0.1.100セカンダリIPは10.0.1.200にしました。

上記の設定が出来たら「インスタンスの起動」をクリックします。
起動できると、以下のようになればOKです。

ElasticIPの割り当て

下にスクロールして「ネットワーク」をクリックします。
インターフェイスの画面が出てくるので、まずはIPアドレス10.0.0.100インターフェイスをクリックします。

インターフェースの画面になったら、「アクション」をクリックして「アドレスの関連付け」をクリックします。

関連付けの画面に切り替わったら、ElasticIPはf5_bigip-eip_mgmtを選択して、プライベートIPv4アドレスは10.0.0.100を選択します。

関連付けができたら、もう一つのインターフェイスにもElasticIPの割り当てを行うため、IPアドレス10.0.0.100インターフェイスをクリックします。

関連付けの画面に切り替わったら、ElasticIPはf5_bigip-eip_virtualを選択して、プライベートIPv4アドレスは10.0.1.200を選択します。

ElasticIPの割り当てが完了したら、ひとまずインスタンスの設定は完了です。

3. BIG-IPの初期設定

BIG-IP VEの設定をしていきます。

3-1. adminのパスワード設定

まずはBIG-IPの管理用IP(f5_bigip-eip_mgmt)に対し、SSHで接続します。
ユーザ名はadminで、インスタンス起動時に指定したキーペアを使ってログインします。

$ ssh -i *******.pem admin@13.113.24*.***
admin@(ip-10-0-0-100)(cfg-sync )(NO LICENSE)(/Common)(tmos)#

ログインができたらmodify auth password adminコマンドでadminのパスワードを変更をします。

admin@(ip-10-0-0-100)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)# modify auth password admin
changing password for admin
new password:<adminのパスワード>
confirm password:<adminのパスワード>

パスワードが設定できたら、save sys configコマンドで設定をコミットします。

admin@(ip-10-0-0-100)(cfg-sync Standalone)(NO LICENSE)(/Common)(tmos)# save sys config
Saving running configuration...
  /config/bigip.conf
  /config/bigip_base.conf
  /config/bigip_user.conf
Saving Ethernet mapping...done

これでコマンド操作は終了です。

3-2. 管理画面にアクセス

ブラウザを使用してBIG-IPの管理用IP(f5_bigip-eip_mgmt)HTTPSでアクセスします。
すると以下のようなログイン画面が出てきます。
Usernameにadmin、Passwordは先ほど設定したものを入力します。

ログイン出来るとセットアップの画面になるので「Next」を選択します。

ライセンスがNot Activateなので、「Activate」をクリックします。

評価ライセンスを入力したら「Next」をクリックします。

評価ライセンスを取得していない方は、以下のサイトから発行できます。 www.f5.com

EULAの同意画面になるので、「Accept」をクリックします。

すると、設定を反映させるため再起動?がかかります。
しばらくすると「Continue」が表示されるのでクリックします。

次に、評価ライセンスで使用できる機能を選択できる画面になります。
今回は何も触らず「Next」をクリック。

次に、証明書の画面になりますが特に変更せず「Next」をクリックします。

ホスト名、タイムゾーンAsia/Tokyoに変更します。

これでひとまず初期設定は完了です。

4. WEBサーバのインスタンス作成

次に、WEBサーバのインスタンスを2台作成します。

4-1. 名前とインスタンス

今回はWEBサーバのインスタンスを2台作成するため、右上のインスタンス数を2にしています。
そのため、同一の名前のインスタンスが作成されてしまうので途中まで入力しておき、後ほど設定します。

4-2. キーペア

BIG-IPのインスタンス作成時のものと同じものを使用しています。

4-3. ネットワーク設定

次に、ネットワークの設定です。
VPCf5_bigip-vpcを選択して、サブネットはf5_bigip-subnet03 を選択します。

4-4. セキュリティグループ

内部でHTTPの通信をするため、HTTPのルールを10.0.0.0/16 で追加します。

上記の設定が出来たら「インスタンスの起動」をクリックします。
起動できると、以下のようになればOKです。

4-5. ElasticIPの割り当て

BIG-IPと同様にインスタンスの詳細画面を開き「ネットワーキング」をクリックして、インターフェイスIDをクリックします。

インターフェースの画面になったら、「アクション」をクリックして「アドレスの関連付け」をクリックします。

関連付けの画面に切り替わったら、ElasticIPはf5_bigip-eip_web01を選択して、プライベートIPv4アドレスは10.0.2.25を選択します。

f5_bigip_web02にもElasticIPの割り当てが完了したら、WEBサーバのインスタンス設定は完了です。

5. WEBサーバの構築

Apacheを入れて簡単なWEBサーバを構築します。
2台に下記コマンドを投入します。

[ec2-user@ip-10-0-2-82 ~]$ sudo yum install httpd -y
[ec2-user@ip-10-0-2-82 ~]$ sudo systemctl enable --now httpd
[ec2-user@ip-10-0-2-82 ~]$ sudo vi /var/www/html/index.html
<html>
        <!-- webXXを01 or 02に変更して下さい-->
        <h1>This server is webXX</h1> 
</html>

コマンド入力後、それぞれのWEBサーバで下記コマンドを叩いて出力されれば構築完了です。

[ec2-user@ip-10-0-2-82 ~]$ curl localhost
<html>
        <h1>This server is web02</h1>
</html>

ここまでできたら、WEBサーバに割り当てたEIPを解放していただいてOKです。