Memo

メモ > サーバ > サービス: AWS > VPC

■VPC
※仮想ネットワーク(Virtual Private Cloud)を構築できる(リージョンに対して作成) ※後からの構成変更は大変なので、最初によく検討してから構築する 以前は一度作ったものは一切変更できなかったが、今は条件付きで後から拡張できるようになっているみたい(未検証) Amazon VPCを「これでもか!」というくらい丁寧に解説 - Qiita https://qiita.com/c60evaporator/items/2f24d4796202e8b06a77 フロントエンドエンジニアですが、AWS 始めてみます http://tech.recruit-mp.co.jp/infrastructure/retry-aws-minimum-vpc-server-environment/ カジュアルにVPC作った結果がこれだよ! http://www.slideshare.net/Yuryu/aws-casual-talks-1-vpc [新機能] VPCのCIDRが拡張可能になりました!IPアドレス範囲を追加可能です! | Developers.IO https://dev.classmethod.jp/articles/expanding-vpc-cidr/ Amazon VPCを使ったミニマム構成のサーバ環境を構築する http://dev.classmethod.jp/cloud/aws/minimum-amazon-vpc-server-environment/ VPC とサブネット http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/VPC_Subnets.html デフォルト VPC とデフォルトサブネット http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/default-vpc.html Amazon VPC設計時に気をつけたい基本の5のこと https://dev.classmethod.jp/cloud/aws/amazon-vpc-5-tips/ AWSのAZの割り当ては、アカウントごとに違うという話 - プログラマでありたい https://blog.takuros.net/entry/2019/08/26/090220 ■リージョンとアベイラビリティゾーンとサブネット リージョン内にVPC(仮想ネットワーク)を作成し、 その中にサブネット(サブネットワーク)を作成し、 その中にアベイラビリティゾーンを作成し、 その中でサーバの設置などを行う 作業前に、対象が「東京リージョン」であることを確認する(意図的なら他のリージョンで作業するのも問題ない) 2021年3月に、大阪リージョンが追加された。これにより、日本国内のみでマルチリージョンを実現できる AWS 大阪リージョン - 2021年3月 誕生! | AWS (アマゾン ウェブ サービス) https://aws.amazon.com/jp/local/osaka-region/ 東京リージョンに新たにアベイラビリティゾーンを追加 https://aws.amazon.com/jp/blogs/news/the-fourth-new-availability-zone-tokyo-region/ なお、複数のアベイラビリティゾーンにサーバを配置する構成を「マルチAZ」と呼ぶ 基本的にマルチAZ構成にしておくことが推奨される ■料金 VPC自体は無料で利用できる よくある質問 - Amazon VPC | AWS https://aws.amazon.com/jp/vpc/faqs/ 「VPC 自体の作成・使用には追加料金はかかりません。 Amazon EC2 などの他のアマゾン ウェブ サービスの利用料金が、データ転送料金を含めこれらのリソースに指定レートで適用されます。」 AWS VPCの料金 | TechCrowd https://www.techcrowd.jp/datalink/fee-2/ VPC自体は無料で、VPNやNATを使う場合には利用可能時間をもとに課金されるとのこと。(公式のスライドあり。) ■プライベートIPアドレスの範囲 プライベートIPアドレスには 10.0.0.0 〜 10.255.255.255 ... 大規模ネットワーク向け 172.16.0.0 〜 172.32.255.255 ... 中規模ネットワーク向け 192.168.0.0 〜 192.168.255.255 ... 小規模ネットワーク向け が使える ただし 192.168.0.1 など、AWS側で予約されていて使えないアドレスがあるので注意 127.0.0.1 〜 127.0.0.254 はローカルループバックアドレス(自分自身を表す)なので、これも使えない ネットワーク内のIPアドレス http://www.pc-master.jp/internet/private-ip-address.html AWSのVPCの予約IPについての勘違い https://www.infoscoop.org/blogjp/2015/09/11/awsip/ Amazon VPC IPアドレス設計レシピ http://dev.classmethod.jp/cloud/aws/vpc-cidr/ 0から始めるVPC https://www.slideshare.net/classmethod/0vpc ※デフォルトVPCのプライベートIPアドレスは 172.31.0.0 になっている ※自分でVPCを作る場合、可能なかぎり大きなサイズで作っておくのが無難 具体的には 10.0.0.0/16 で作っておくといい ■ネットワーク構成例 一般的なものとして、以下のような構成がある 基本的には「1」の構成をもとにすればいい 「2」の構成にするが、「4」に変更することを想定して「Public」「Protected」の2階層にする…というのも有効(むしろ1よりも柔軟でいいかも) 本来Trusted(Private)に置くべきサーバでも、監視のためにDMZ(Public)に置いたりすることはある その場合、セキュリティグループなどでアクセス制限を行う 1 DMZ ... Webサーバなど配置用 Trusted ... DBサーバなど配置用 2 Public ... Webサーバなど配置用 Private ... DBサーバなど配置用 3 DMZ ... Webサーバなど配置用 Operation ... 踏み台サーバ、デプロイサーバ、バッチサーバなど配置用 Trusted ... DBサーバなど配置用 4 Public ... Webサーバなど配置用 Protected ... DBサーバなど配置用 Private ... 外部と通信させない領域 5 Frontend ... ロードバランサー、直接公開のWebサーバなど配置用 Application ... ロードバランサー配下のWebサーバ、バッチサーバなど配置用 Datastore ... DBサーバなど配置用 【AWS】VPC環境の作成ノウハウをまとめた社内向け資料を公開してみる | Developers.IO https://dev.classmethod.jp/server-side/network/vpc-knowhow/ ネットワークやサーバなどを作成する際、名前タグを付けることができる 適当に付けても動作上は問題ないが、最初にルールを決めて名前を付けておくといい 以降の解説では例えばVPCの名前タグは「Develop-VPC」としているが、これはあくまでも一例 「xxsystem-dev-vpc」のように「案件名-環境-vpc」と付けるなども有効 弊社で使っているAWSリソースの命名規則を紹介します | DevelopersIO https://dev.classmethod.jp/cloud/aws/aws-name-rule/ ■VPCの作成 AWS → VPC → VPC(左メニュー) → VPCの作成 名前タグ : Develop-VPC IPv4 CIDR ブロック : 10.0.0.0/16 IPv6 CIDR ブロック : IPv6 CIDR ブロックなし テナンシー : デフォルト と設定して作成 2つ目を作成する場合でも、IPv4 CIDR blockは常に 10.0.0.0/16 でいい (後に記載するサブネットのように、10.1.0.0/16 とずらす必要は無い) ■サブネットの作成 サブネット(左メニュー) → サブネットの作成 名前タグ VPC アベイラビリティゾーン IPv4 CIDR ブロック - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Develop-DMZ-A Develop-VPC ap-northeast-1a 10.0.0.0/24 Develop-DMZ-C Develop-VPC ap-northeast-1c 10.0.1.0/24 Develop-Trusted-A Develop-VPC ap-northeast-1a 10.0.2.0/24 Develop-Trusted-C Develop-VPC ap-northeast-1c 10.0.3.0/24 と設定して作成 ※サーバが3台以上の構成だとしても、2つずつの作成でいい(東京リージョンにAZは2つしかないため。…だったが、後ほど追加された。それでも基本的に2つずつの作成でいい) 作成したサブネットに、自動作成されたルートテーブルが割り当てられていることを確認する ※1つのサブネットには1つのルートテーブルのみ、関連付けることができる 自動作成されたルートテーブルはインターネットゲートウェイを考慮したものではないので、以降で 「インターネットゲートウェイとルートテーブルを作成する。ルートテーブルにインターネットゲートウェイを登録する。そのルートテーブルをサブネットに関連付ける」 とする ※インターネットゲートウェイは、VPCをインターネットに接続する仮想ルーター ※ルートテーブルは、個々のネットワークの宛先への経路一覧を保持しているもの ■インターネットゲートウェイ(仮想ルーター)の作成 インターネットゲートウェイ(左メニュー) → インターネットゲートウェイの作成 名前タグ : Develop-Gateway と設定して作成 作成したものを選択して「VPCにアタッチ」を押し、先ほど作成したVPC「Develop-VPC」を選択して「アタッチ」 ■ルートテーブルの作成 ルートテーブル(左メニュー) → ルートテーブルの作成 名前タグ : Develop-Route VPC : Develop-VPC と設定して作成 作成したルートテーブルを選択し、下のタブから「ルート」を選択し、「編集」ボタンを押し、「別ルートの追加」ボタンを押す 送信先 : 0.0.0.0/0 ターゲット : 先ほど作成したインターネットゲートウェイ と設定して保存 サブネット(左メニュー) 先の手順で作成したサブネットを選択し、下のタブから「ルートテーブル」を選択し、「ルートテーブルの変更」ボタンを押す 「ルートテーブル ID」を先ほど作成したルートテーブルに選択し、下の一覧に追加されたのを確認して「保存」ボタンを押す インターネット接続を許可したいサブネットすべてに対し、同じ操作を行う ※「すべての宛先(0.0.0.0/0)をインターネットゲートウェイに流す」という設定のルートテーブルを作成したことになる ※ルートテーブルは、インターネット接続を許可したいサブネットすべてに対し設定する。今回は Develop-DMZ-A, Develop-DMZ-C のみ ■セキュリティグループの作成 ※セキュリティグループ=ファイヤーウォール。サーバ一台ごとではなく、グループ単位でファイヤーウォールを設定できる ※セキュリティグループ「default」は編集せずに、Webサーバ用やDBサーバ用に新規作成する セキュリティグループ(左メニュー) → 「セキュリティグループの作成」 名前タグ : Develop-SSH グループ名 : ssh 説明 : for develop ssh VPC : Develop-VPC と設定して作成 グループ名は、デフォルトのセキュリティグループで「default」という名前が付いているので、小文字の英数字で概要を一言で書けば良さそう 説明は、デフォルトのセキュリティグループで「default VPC security group」と設定されているので、英語で概要を書けば良さそう 作成したセキュリティグループを選択し、下のタブから「インバウンドルール」を選択し、「編集」ボタンを押す タイプ プロトコル ポート範囲 送信元 SSH(22) TPC(6) 22 203.0.113.9/32 … アクセス元のIPアドレス カスタムTPCルール TPC(6) 10022 203.0.113.9/32 … アクセス元のIPアドレス と設定して保存。(ただし22番ポートは後ほど塞ぐ) 同様にして以下も作成する。 名前タグ : Develop-Web グループ名 : web 説明 : for develop web VPC : Develop-VPC タイプ プロトコル ポート範囲 送信元 HTTP(80) TPC(6) 80 0.0.0.0/0 … すべてのIPアドレス HTTP(443) TPC(6) 443 0.0.0.0/0 名前タグ : Develop-Cache グループ名 : cache 説明 : for develop cache VPC : Develop-VPC タイプ プロトコル ポート範囲 送信元 カスタムTPCルール TPC(6) 11211 0.0.0.0/0 名前タグ : Develop-DB グループ名 : db 説明 : for develop db VPC : Develop-VPC タイプ プロトコル ポート範囲 送信元 MySQL/Aurora(3306) TPC(6) 3306 0.0.0.0/0 ■パブリックDNSを割り当てるための設定 AWSでPublic DNS(パブリックDNS)が割り当てられない時の解決法 http://qiita.com/sunadoridotnet/items/4ea689ce9f206e78a523 対象のVPCを選択し、「概要」で「DNS 解決」と「DNS ホスト名」を確認する デフォルトでは DNS 解決: はい DNS ホスト名: いいえ このようになっているが、この設定ではパブリックDNSは割り当てられない 以下の手順で両方とも「はい」にする (対象のVPCを選択) → アクション → DNS解決の編集 (対象のVPCを選択) → アクション → DNSホスト名の編集 ■RDSからVPCを利用するための設定 AWS → RDS → サブネットグループ → DBサブネットグループの作成 名前 : Develop-DB 説明 : for develop. VPC ID : Develop-VPC と入力。さらに アベイラビリティーゾーン : サブネットを作成したAZ サブネット ID : DB用に作成したサブネット を追加し、さらに アベイラビリティーゾーン : サブネットを作成したAZ(上とは別のAZ) サブネット ID : DB用に作成したサブネット(上とは別のサブネット) を追加し、「作成」ボタンを押す ■ElastiCacheからVPCを利用するための設定 Laravelのセッション管理にRedisを指定し、AWSのElastiCacheを利用する - 商売力開発ブログ https://www.prj-alpha.biz/entry/2018/05/06/230232 AWS → ElastiCache → サブネットグループ → Cacheサブネットグループの作成 名前 : Develop-Cache 説明 : for develop. VPC ID : Develop-VPC と入力。さらに アベイラビリティーゾーン : サブネットを作成したAZ サブネット ID : DB用に作成したサブネット を追加し、さらに アベイラビリティーゾーン : サブネットを作成したAZ(上とは別のAZ) サブネット ID : DB用に作成したサブネット(上とは別のサブネット) を追加し、「作成」ボタンを押す ■VPCのトラフィックログを取得する 【新機能】VPC Flow LogsでVPC内のIPトラフィックを監視することができるようになりました! | DevelopersIO https://dev.classmethod.jp/cloud/aws/introduce-to-vpc-flow-log/ VPC Flow Logsの出力先にS3が追加になって安価に使いやすくなりました | DevelopersIO https://dev.classmethod.jp/cloud/aws/vpcflowlogs_to_s3/ 【AWS】VPCフローログを使ってみた - Qiita https://qiita.com/noskilluser/items/a8db20c9d614c0f3096e

Advertisement