この構成を適当にポチポチしてるだけで作れちゃうAWSはスゴイ...
手順メモ
1. VPCの作成 ウィザードを使って、VPCと1組目のパブリックとプライベートネットワークを作る。 Amazon Web Servicesから VPC 選択 https://console.aws.amazon.com/console/home?region=ap-northeast-1# 「Start VPC Wizard」 「VPC with Public and Private Subnets」 Two Subnets を編集 Public Subnet: 10.0.10.0/24 (251 available IPs) Availability Zone: ap-northeast-1a Private Subnet: 10.0.100.0/24 (251 available IPs) Availability Zone: ap-northeast-1a 「Create VPC」 「Close」 正常に終わるとVPCマネージメントコンソールの画面が表示されるハズ 「○ VPCs」○は数字 VPC ID をメモる VPC: vpc-hoge VPC が複数ある場合には名前を付けておく 「Tags」 「Add/Edit Tags」 Key:Name の Valueに名前を入れる ここまででVPCと 左パブリックと左プライベートネットワーク、左NATができる。 2. セキュリティグループの作成 VPC内のセキュリティグループはVPCマネージメントコンソールから作る EC2ダッシュボードから作れるセキュリティグループでは アウトバウンドを定義できない <-ココ重要 VPCマネージメントコンソール https://console.aws.amazon.com/vpc/home?region=ap-northeast-1 左ナビから「Security Groups」 2-1 NATサーバ用セキュリティグループ 「Create Security Groups」 Name: nat_sg Description: nat_sg VPC: vpc-xxxxxxxx 「Yes, Create」 Inbound 22 0.0.0.0/0 21 10.0.0.0/16 80 10.0.0.0/16 443 10.0.0.0/16 「Apply Rule Changes」 Outbound 21 0.0.0.0/0 22 0.0.0.0/0 80 0.0.0.0/0 443 0.0.0.0/0 「Apply Rule Changes」 2-2 Webサーバ用セキュリティグループ Inbound 22 0.0.0.0/0 80 0.0.0.0/0 <-後でExternal ELBからのアクセスに限定する Outbound 21 0.0.0.0/0 80 0.0.0.0/0 2-3 Mailサーバ用セキュリティグループ Inbound 22 0.0.0.0/0 25 10.0.0.0/16 Outbound 21 0.0.0.0/0 80 0.0.0.0/0 25 0.0.0.0/0 2-4 Batchサーバ用セキュリティグループ Inbound 22 nat_sg Outbound 22 nat_sg 21 nat_sg 80 nat_sg 25 10.0.0.0/16 <- 後で internal_elb_sg に変更する 2-5 Extermal ELB 用セキュリティグループ Inbound 80 0.0.0.0/0 443 0.0.0.0/0 Outbound 80 web_sg 2-6 Internal ELB 用セキュリティグループ Inbound 25 batch_sg Outbound 25 mail_sg 2-7 左NATのセキュリティグループを nat_sgに変更 EC2ダッシュボード 左NATを右クリック 「Change Security Groups」 nat_sgを選択 「Assign Security Groups」 3. 右パブリックネットワークと右プライベートネットワーク、右NATを作る 3-1 右パブリックサブネットの作成 VPCマネージメントコンソール https://console.aws.amazon.com/vpc/home?region=ap-northeast-1 「○ Subnets」○は数字 「Create Subnets」 VPC: 上でメモったVPCを選択 Availability Zone: ap-northeast-1c CIDR Block: 10.0.20.0/24 ルートテーブルの変更 「Details」タブの「Route Table」の「(replace)」リンクをクリック 0.0.0.0/0 (デフォルトゲートウェイ) が igw-xxxxx なのを確認して 「Yes, Replace」 3-2 右プライベートサブネットの作成 「Create Subnets」 VPC: 上でメモったVPCを選択 Availability Zone: ap-northeast-1c CIDR Block: 10.0.200.0/24 3-3 右NATインスタンスの作成 EC2ダッシュボード https://console.aws.amazon.com/ec2/v2/home?region=ap-northeast-1 「Launch Instance」 左ナビ「Community AMIs」 "ami-vpc-nat" で検索 amzn-ami-vpc-nat-pv-201X.XX.XX.x86_64-ebs を「Select」 「Next:Configure Instance Details」 Network : VPCを指定 Subnet : 右パブリックサブネットを指定 「Next:Add Storage」 「Next: Tag Instance」 インスタンス名登録 「Next: Configure Security Group」 nat_sg 選択 「Launch」 「Launch Instances」 # 自分宛でないパケットも拾えるように設定 インスタンス起動したら 右NATインスタンスを右クリック 「Change Source / Dest Check」」 「Yes, Disable」 # EIPの設定 VPCコンソール 左ナビ「Elastic IPs」 「Allocate New Address」 EIP used in: VPC できたEIPを右クリック 「Associate」 Instance:右nat 「Yes, Associate」 3-4 右プライベートネットワークのルートテーブルの作成 VPCコンソール 左ナビ「Route Tables」 「Create Route Table」 VPC:vpc-xxxxxxxx 「Yes, Create」 できたルーティングテーブルを選択 10.0.0.0/16 local 0.0.0.0/0 右NATインスタンスID 「Associations」タブ 右プライベートサブネットを選択 「Associate」 「Yes, Associate」 4. Webサーバの作成 4-1. 左Webサーバの作成 EC2マネジメントコンソール 左ナビ「Instances」 「Launch Instance」 Amazon Linux AMI 64-bit 「Select」 「Next: Configure Instance Details」 Network: vpc選択 Subnet: 左パブリックサブネット Public IP: チェックする 「Next: Add Strage」 「Next: Tag Instance」 Name: left-web 「Next: Configure Security Group」 web_sgを選択 「Review and Launch」 「Launch」 「Launch Instance」 「View Instance」 ログインする Apacheのインストール $ sudo yum -y install httpd $ sudo /sbin/chkconfig httpd on $ sudo /etc/init.d/httpd start $ sudo vi /var/www/html/index.html left-web <-記述 Web経由でアクセスして left-web が表出されることを確認する 4-2. 右Webサーバの作成 同様に作成する 5. 外部ELBの作成 EC2マネジメントコンソール 左ナビ「Load Balancers」 「Create Load Balancer」 Load Balancer Name: external-elb <-アンダースコア使えない Create LB inside: VPC指定 Create an internal load balancer: "チェックしない" Listener Configuration: HTTP 80 HTTP 80 「Continue」 「Continue」 左右のパブリックサブネットを選択 「Continue」 external_elb_sg を選択 「Continue」 左右のWebサーバを選択 「Continue」 「Create」 「Close」 作ったELBを選択 Instances タブで 左右のWebサーバインスタンスの Status が In Service になるのを待つ ヘルスチェックの設定がデフォルトだと 5分ぐらいで In Service になる Status が Out of Service から変わらなければ 左右のWebサーバの /var/log/httpd/access_log , error_logに ELB からのアクセスログがあるか確認する なければ、 1) ELBのヘルスチェックの設定を確認する。 2) web_sgかexternal_elb_sgのセキュリティグループの設定を確認する。 In Service になったらWebでELBにアクセス どちらかのWebサーバからレスポンスが返ってくるのを確認する 6. バッチサーバの作成 6-1. 左バッチサーバの作成 EC2マネジメントコンソール 左ナビ「Instances」 「Launch Instance」 Amazon Linux AMI 64-bit 「Select」 「Next: Configure Instance Details」 Network: vpc選択 Subnet: 左プライベートサブネット Public IP: チェック"しない" 「Next: Add Strage」 「Next: Tag Instance」 Name: right-batch 「Next: Configure Security Group」 batch_sgを選択 「Review and Launch」 「Launch」 「Launch Instance」 「View Instance」 6-2 NAT経由でのアクセス確認 バッチサーバはプライベートネットワークに配置されているので VPC外から直接SSH接続することはできない 左NATサーバからログインする 1) SSH の鍵をNATサーバの /home/ec2-user/.ssh に置く 2) バッチサーバにログイン $ ssh -i awscsccs.key 左バッチサーバのプライベートIPアドレス 3) yum 動作確認 $ sudo yum update 4) Web アクセス確認 $ wget http://www.yahoo.co.jp 5) SSH アクセス確認 $ ssh VPC外部のSSHサーバ 6-3 右バッチサーバの作成 右も同様に 7. Mail サーバの作成 7-1. 左Mailサーバの作成 EC2マネジメントコンソール 左ナビ「Instances」 「Launch Instance」 Amazon Linux AMI 64-bit 「Select」 「Next: Configure Instance Details」 Network: vpc選択 Subnet: 左パブリックサブネット Public IP: チェック"する" 「Next: Add Strage」 「Next: Tag Instance」 Name: left-mail 「Next: Configure Security Group」 mail_sgを選択 「Review and Launch」 「Launch」 「Launch Instance」 「View Instance」 ログインする 7-2. Postfixのインストール 下記参照 [AWS] メールサーバを建てる メモ http://d.hatena.ne.jp/knaka20blue/20130217/1361111413 $ sudo su - # yum update -y # yum install postfix -y # yum install mailx # mv /etc/postfix/main.cf /etc/postfix/main.cf.ORG # vi /etc/postfix/main.cf myhostname = mail.dmain.com mydomain = dmain.com myorigin = $mydomain inet_interfaces = all inet_protocols = ipv4 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain smtpd_banner = $myhostname ESMTP unknown smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $myhostname smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination message_size_limit = 10485760 # /etc/rc.d/init.d/saslauthd start # chkconfig saslauthd on # /etc/rc.d/init.d/sendmail stop # chkconfig sendmail off # alternatives --config mta => postfix # /etc/rc.d/init.d/postfix start # chkconfig postfix on Route53にDNS設定 A レコードと MXレコードを設定 $ mail hoge@gmail.com メールが届けばOK Postfixのログ /var/log/maillog 7-3 mail中継のテスト batchサーバからメールサーバを指定してメールを送れていればOK 要メール送信プログラム 7-4 右メールサーバの作成 右も同様に 8 Internal ELB を作ってメールサーバを冗長化する Load Balancer Name: internal-elb Create LB inside: vpc-hoge Create an internal load balancer: チェック TCP-25 -> TCP 25 Available Subnets subnet-26211152 10.0.10.0/24 ap-northeast-1a subnet-6fc99929 10.0.20.0/24 ap-northeast-1c 左右のメールサーバを紐づける
セキュリティグループ設定まとめ
メールサーバ用のセキュリティグループ設定がかなり雑。要注意
nat_sg Inbound 21 10.0.0.0/16 Delete 22 (SSH) 0.0.0.0/0 Delete 80 (HTTP) 10.0.0.0/16 Delete 443 (HTTPS) 10.0.0.0/16 Delete Outbound 21 0.0.0.0/0 Delete 22 (SSH) 0.0.0.0/0 Delete 25 (SMTP) 0.0.0.0/0 Delete 80 (HTTP) 0.0.0.0/0 Delete 443 (HTTPS) 0.0.0.0/0 Delete mail_sg Inbount 22 (SSH) 0.0.0.0/0 Delete 25 (SMTP) 10.0.0.0/16 Delete Outbound 21 0.0.0.0/0 Delete 25 (SMTP) 0.0.0.0/0 Delete 80 (HTTP) 0.0.0.0/0 Delete web_sg Inbound 22 (SSH) 0.0.0.0/0 Delete 80 (HTTP) 0.0.0.0/0 Delete Outbound 21 0.0.0.0/0 Delete 80 (HTTP) 0.0.0.0/0 Delete externalel_elb_sg Inbound 80 (HTTP) 0.0.0.0/0 Delete 443 (HTTPS) 0.0.0.0/0 Delete Outbound 80 (HTTP) web_sgのID Delete internal_elb_sg Inbound 25 (SMTP) batch_sgのID Delete Outbound 25 (SMTP) mail_sgのID Delete batch_sg Inbound 22 (SSH) nat_sgのID Delete Outbound 21 nat_sgのID Delete 22 (SSH) nat_sgのIDf Delete 80 (HTTP) nat_sgのIDf Delete 25 (SMTP) internal_elb_sgのID Delete 25 (SMTP) mail_sgのID Delete
参考文献
WEB+DB PRESS Vol.77