狠狠撸
Submit Search
[社内共有会]AWS NAT-GW導入と構成変化 2年運用して 同時接続数 秒間100->10万へ成長
?
1 like
?
2,278 views
Takahiro Moteki
Follow
颁测产别谤窜社内共有会资料蔼20180403
Read less
Read more
1 of 30
Download now
Download to read offline
More Related Content
[社内共有会]AWS NAT-GW導入と構成変化 2年運用して 同時接続数 秒間100->10万へ成長
1.
AWS NAT-GW導入と構成変化 2年運用して 同時接続数 秒間100->10万へ成長
2.
自己紹介 CyberZ F.O.X エンジニア 茂木
高宏(もてき たかひろ) 得意技術: ビッグデータ, AWS, ops系, サーバHW, kernel... twitter: @tkmoteki / facebook: takahiro.moteki.31 [登壇]FaaSで簡単に実現する数十万RPS 負荷試験 https://goo.gl/ffYVbt [登壇]Infrastructure as Codeを活用した F.O.Xのクラウドビッグデータ環境の変化 https://goo.gl/5HTPzY
3.
(2016年) 経緯 ● 広域ユースケースをカバー出来る良い制限/認証方法がない ●
連携先からのIP制限希望 連携先 成果通信 データ送付 連携先提供の アクセス 連携先セキュ リティポリシに 依存 ● ユースーケース ...IP制限かけることに... 理想な認証: 連携先に追加実装なく認証できること
4.
(2016年) 経緯 Amazon EC2 Amazon EC2 バッチ軍団 同一ユースケー スでスケールア ウトが可能 連携先連携先 制限必須で す 制限必須で はありません EC2の場合,EC2のElastic IP
or (Public IP)でイ ンターネット外へ ● -> EC2のElastic IP or (Public IP)を連携先 許可が必要 IPIP IP IP 大量の 連携先
5.
(2016年) 経緯 Amazon EC2 Amazon EC2 連携先連携先 制限必須で す 制限必須で はありません IPIP IP IP Amazon EC2 増設したい バッチサーバ IP 連携先 に
解除申請 連携先 連携先 IP IP IP IP 連携先 で 制限解除出来ないとバッチ増設出来ない アプリ設計 連携先多さ 運用的に
6.
(2016年) 経緯 ● 制限解除
増設可能へ ● バッチサーバ増設が自社起因で不可能な状態に
7.
(2016年) 経緯 NATすることに 連携先連携先 IPIP NAT
NAT IP IP IP IP 連携先 IP IP 連携先 IP IP IP
8.
(2016年) NATの選択肢 Amazon EC2 IPフォワード VPC NAT gateway パターン の
フォワードを用いて 上へ クラスタ構築 パターン 上のマネージドサービス を利用 詳細比較 https://goo.gl/ZuiBcy
9.
(2016年) 選択要件 ぶっちゃけラクしたい
10.
(2016年) NATの選択肢 Amazon EC2 IPフォワード VPC NAT gateway パターン の
フォワードを用いて 上へ クラスタ構築 パターン 上のマネージドサービス を利用 採用
11.
(2016年~2018年)NAT-GW仕様(1) 項目 説明 可用性 内部的に冗長化(単一AZレベル) 障害時の動き
数秒~数+秒で内部ノードリプレイス 種類(タイプ/サイズ) 選択出来ない 課金 NAT-GW料金(0.062/時間) + 通信量課金 サポートプロトコル TCP, UDP, ICMP 性能: 帯域 10Gbpsまでバースト 性能: スループット NATトラフィックに最適化 性能制限: 同時接続数 同時接続約65000(利用ポートレンジ1024 ~ 65535) 性能制限: タイムアウト アイドル5分以上で自動タイムアウト セキュリティ セキュリティグループ未対応/NACLで制御 メンテンナス AWSによって管理 機能制限 VPN越し接続, VPCピアリング越し接続, ダイレクトコネクト越し接続不可(横断不可) カスタマイズ パラメータ設定不可 その他機能制限 ポート転送, 踏み台機能不可 IPv6 未対応(Egress-only internet gatewayを利用) 参考 https://goo.gl/nBVRC5
12.
(2016年~2018年)NAT-GW仕様(2) ● NAT-GWの使い方 ● NAT-GWを経由するサブネットにENIを付与し配置するだけ ●
ENIを付与し配置 ○ 例: EC2, Lambda(VPC内実行)など ○ 意味ないけど、ElasticSearchService,RDS, ELBもENIを持つのでNAT-GWを 経由可 ● NAT-GWを経由するサブネットはprivate subnet ○ インターネット上からのpublicアクセス不可(IN) メリット: 使い方ちょうカンタン デメリット: 余計な通信でNAT-GWの負荷をかけやすい 重要
13.
(2016年) NAT-GW利用構成 Availability Zone
1a Availability Zone 1c Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet route table VPC NAT gateway subnet 多 多 1 ~AWS仕様~ route table VPC NAT gateway subnet 1 1 1 ~利用構成~ NAT間通信のsubentのみ1:1:1へ (シンプル性/route tableの切替え考慮)
14.
(2016年) 事前設計:負荷分散 NAT-GW側でやれること Availability Zone
1a Availability Zone 1c Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet Availability Zone 1x VPC NAT gateway route table public subnet private subnet このセット 追加 ケース) 高負荷で性能オーバな場合
15.
(2016年) 事前設計:負荷分散 アプリ側でやれること ケース) 同時接続数を減らす Availability
Zone 1a Availability Zone 1c Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet バッチ停止可能 な範囲から一部 停止 縮退 する必要が ない通信は別 バッチへ分割
16.
(2016年) 事前設計:切返し NAT-GW側でやれること Availability Zone
1a Availability Zone 1c Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet ケース) NAT-GW側が死んだ場合(内部的に冗長化されてるけど...) Availability Zone 1a Availability Zone 1c Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet 切返し
17.
(2018年) 2年後 Availability Zone
1a Availability Zone 1c VPC NAT gateway VPC NAT gateway Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway 同時接続数 100(秒間) 同時接続数 10万(秒間) 通信量約 100倍増加 ~2016年~ ~2018年~ ※ ある一定の条件あり
18.
(2018年) Q&A 100倍通信量増加して Q)
秒間10万 同時接続数でNAT-GW性能オーバーし負荷分散しま したか? A) No (捌けたから特にしてない) Q) 2年間運用してNAT-GW側に障害ありましたか? A) No (たぶん、そのはず) VPC NAT gateway ← こいつ案外 すげーな...
19.
(2018年) 2020年予測キャパ 2018年2016年 100 (同時接続数/秒) 2020年 10万 30万? 実際の 同時接続数 100倍 2倍と予測 (サービス的に予測可) (年月 合計NATGW 同時接続数 制限 13万13万 13万
20.
(2018年) 2020年予測キャパ 2018年2016年 100 (同時接続数/秒) 2020年 10万 20万? 実際の 同時接続数 100倍 (年月 合計NATGW 同時接続数 制限 13万13万 30万 性能アラート(自社): warn80%,
crit90% -> 予測段階で50~60%理想 2倍と予測 (サービス的に予測可)
21.
(2018年) NAT-GW事前対策1 NAT NAT NAT
NAT リザーブ NAT-GWをリザーブした ○ NAT-GW増設に自社起因で可能な状態へ 連携先 IP IPIP IP IP IP IP IP
22.
(2018年)NAT-GW対策2 VPC NAT gateway private subnet ●
VPCエンドポイントで負荷を逃がす ● NAT-GWを経由するサブネットは、インターネット上への通信がNAT-GWを経由(OUT) ○ SQS, Kinesis(Kinesis Streamエンドポイント付与してないから) ○ 例外: S3(S3エンドポイント付与したから),DynamoDBエンドポイントは進め中 endpoints Amazon Kinesis Amazon SQS Amazon S3 Amazon DynamoDB
23.
(2018年) NAT-GW対策3 コネクション持続特性でNAT-GW分けた Availability Zone
1a Availability Zone 1c VPC NAT gateway VPC NAT gateway ワリとバッチっぽい用途リアルタイム用途 ケース 成果通信 ケース データ送付 外部データ
24.
(2018年) NAT-GW現構成 Availability Zone 1a Availability
Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet Availability Zone 1a Availability Zone 1c VPC NAT gateway VPC NAT gateway route table route table public subnet public subnet private subnet private subnet NAT NAT NAT NAT リザーブ ケース データ送付 外部データケース 成果通信 endpointsendpoints endpoints endpoints
25.
(2018年) NAT-GW運用 ● モニタリング ●
障害対応 ● ロギング ● 痛い課題
26.
(2018年) NAT-GWモニタリング CloudWatchメトリクス参考 ● NAT-GW
CloudWatchメトリクス ● NAT-GWへICMP echo ○ pingやtraceroute, mtrで応答を見る ● NAT-GWのaliveness ○ AWSマネコンから確認可 ● VPC Flow logs 最も簡単で 確認しやすい
27.
(2018年) NAT-GW監視 CloudWatchメトリクス参考 NAT-GW CloudWatch監視すべきメトリクス 項目
説明 対応など ErrorPortAllocation 送信元ポートを割り当てられなかった件数。性能問題の発見。 スライド13,14 ActiveConnectionCount 同時接続数。性能制限の発見(同時接続数) スライド13,14 IdleTimeCount アイドル時間が5分以上になり自動でタイムアウトした件数。 同時接続数内訳のデバックに役立つ。 - PacketsDropCount NAT-GWでドロップしたパケット数。NAT-GWのdownの発見。 スライド15, aws service healthダッ シュボード確認(or 問合せ) 注意: 連携先(相手先)が死亡 -> IdleTimeCount増加 -> ActiveConnectionCount 増加(最大12万同時接続まで確認済)
28.
(2018年) NAT-GW障害対応 2016年時とほぼ一緒
29.
(2018年) 痛い課題 ● 処理データ課金が高い ○
同時接続数100倍 -> 課金も成長><
30.
その他: stoneプロキシとの使い分け ● NAT-GW
/ エンドポイント設定したサブネットは強制的通過 ○ stone利用: アプリケーション/プロトコルレベル等でNAT-GW / VPCエンドポイントを 経由させない(←構築背景) ○ IP固定化されるので、秘匿通信は不可 VPC NAT gateway private subnet (NAT経由する) endpoints Amazon S3 public subnet (NAT経由しない) アプリ1 アプリ1 アプリ1 アプリ1 endpoints Amazon S3 stone
Download