宗(284)1291129件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。ウィスキー、シガー、パイプをこよなく愛する大栗です。先日ALBでIPアドレスをターゲットとしてオンプレミスのリソースなどに対して負荷分散ができるようになりました。先日NLBでもIPアドレスをターゲットとして設定できるようになったためご紹介します。resourcesIPアドレスターゲットNLBが負荷分散するターゲットをインスタンスIDではなくIPアドレスを指定することが可能な機能です。ALBでも同様の機能がありますが、一部異なる部分があります。ALBのターゲットにIPアドレスを指定可能になりました指定可能なIPアドレスサポートされているIPアドレスは、以下の範囲です。ConnectやソフトウェアVPNコネクションで接続したオンプレミスのリソースをターゲットグループに登録できます。PeeringやハードウェアVPNコネクション(VPCのVPNコネクション)の先は登録できないので注意が必要です。登録できるリソースで『IPアドレスとポートを指定できるAWSリソース』という点が非常に重要になります。IPアドレスとポートが指定できれば、EC2以外のリソースも登録ができる訳です!!!RDSやElastiCacheなどのVPC内のリソースの負荷分散が可能になっています。今までソフトウェアロードバランサを使用していた箇所をマネージドサービスで代替できるということです。GWへのルート)が必要です。IPアドレスターゲットの場合はNLBへの到達性があればクライアントへのネットワーク到達性が不要になっています。オンプレミスのリソースを登録するために動作が変わっていると思われますが、VPC内のリソースもIPアドレスターゲットであれば同様の動作をします。今までは、以下の2パターンの構成でNLBを構築できました。Gatewayのように見える。Gatewayのように見える。IPターゲットのパターンIPターゲットの場合は、EC2のサブネットからインターネットへ出られないルートであってもNLBを経由して出ていくように見える動作となります。Gatewayへ通信この動作により完全なプライベートサブネットのリソースに対してもNLBを利用することができます。やってみるEC2インスタンスとRDSの負荷分散をやってみます。EC2インスタンスのIPターゲット登録まずは普通にEC2の負荷分散を行います。ここでは、以下の前提とします。(ami-4af5022c)を元にhttpdをインストール済みのものを使用また、ネットワーク構成は以下の図のようになります。構成図のようにアプリケーションサブネットにEC2を起動します。EC2では事前にhttpdを導入したものを使用します。UserDataで以下を設定して、インスタンスIDを/index.htmlに設定します。セキュリティグループはフロントエンドサブネット(10.20.0.0/24、10.20.0.0/24)とアクセス元IPアドレスに対してポート80を許可した物を使用します。次にターゲットグループを作成します。ターゲットグループ名:EC2-IP(任意で設定してください)プロトコル:TCP(NLBの場合はTCPのみです)ポート:80(HTTPのため)ターゲットの種類:ipVPC:対象のVPCを選択してくださいヘルスチェックの設定を以下のように実施しました。ヘルスチェックの設定プロトコル:TCPヘルスチェックの詳細設定ポート:トラフィックポート正常のしきい値:3非正常のしきい値:3(変更不能)タイムアウト:10(変更不能)間隔:10秒ヘルスチェックのプロトコルはHTTPを使用せずにTCPにしています。NLBのヘルスチェックは分散型で行われているためヘルスチェクのアクセスが多いので、負荷を下げるためにTCPにしています。自分の計測結果ですが、間隔を10秒にした時で180回/分以上、間隔を30秒にした時で120回/分以上のヘルスチェックが来る模様です。作成したターゲットグループのターゲットを登録します。ターゲットタブの編集をクリックします。上部メニューの+をクリックします。ネットワークに対象のVPCを選択し、IPにEC2のIPアドレスを設定してリストに追加をクリックします。2台のEC2を追加して登録をクリックしてと登録します。次にNLBを作成します。Subnet2)以下のようにルーティングの設定を行います。(変更不能)ターゲットのEC2を確認します。ロードバランサーの詳細を確認して作成をクリックします。経つとターゲットがhealthyになります。パブリックIPが無くインターネット値のアクセスもできないEC2に対してNLBで負荷分散が行なえます。次にRDSの負荷分散を行います。ここではAuroraで、Writer1台、ReaderをAZごとに2台ずつの計4台で起動して、以下のように構成します。VPCのネットワークは「EC2インスタンスのIPターゲット登録」と同じものです。DBサブネットグループの作成まずはDBサブネットグループを作成します。ここではデータストアサブネットの2個のサブネットを登録します。次に専用のDBパラメータグループを作成します。作成したDBパラメータグループのmax_connect_errorsを編集します。ここで最大値の18446744073709547520を入力します。これはNLBがヘルスチェックを行うと不正接続と判定されるため、アクセスを拒否しないための設定となります。セキュリティグループの作成セキュリテイグループも作成します。インバウンドのルールはアプリケーションサブネットのCIDRを許可します。NLBのヘルスチェックはIPアドレスでしか許可できないためです。Auroraの起動Auroraを起動します。これまでに作成した、Dbサブネットグループ、DBパラメータグループ、セキュリティグループを設定します。配置するAZ(サブネット)は、以下の通りです。Subnet2)ターゲットグループの作成RDS用のターゲットグループを作成します。ターゲットグループ名:RDS-IP(任意で設定してください)プロトコル:TCP(NLBの場合はTCPのみです)ポート:3306(MySQLのため)ターゲットの種類:ipVPC:対象のVPCを選択してくださいヘルスチェックの設定を以下のように設定します。ヘルスチェックの設定プロトコル:TCPヘルスチェックの詳細設定ポート:トラフィックポート正常のしきい値:3非正常のしきい値:3(変更不能)タイムアウト:10(変更不能)間隔:10秒ターゲットの登録ターゲットグループを作成したらターゲットを登録します。ここで注意が必要です。各々のDBインスタンスのインスタンスエンドポイントに対して名前解決をして、IPアドレスを確認します。確認したIPアドレスをターゲットグループに登録します。次にNLBを作成します。Subnet2)以下のようにルーティングの設定を行います。(変更不能)ターゲットのRDSのIPアドレスをを確認して、ロードバランサーの詳細を確認してロードバランサーを作成します。経つとターゲットがhealthyになります。アプリケーションサブネットのEC2からNLB経由でAuroraにアクセスしてみます。普通にログイン可能です。statement.mysql>何度かアクセスして、Auroraのhostnameを確認してみます。1000回確認してみました。hostnameip-172-23-2-124かなり綺麗に分散されています。比較のために読み込みエンドポイントで同様に確認してみます。hostnameip-172-23-2-124読み込みエンドポイントの場合は偏りが大きくなってしまいます。これは読み込みエンドポイントのTTLが5秒に設定されていることに起因します。NLBでReaderの負荷分散を行うことで理想的に分けられることが確認できました。さいごに自分でNLBの紹介ブログを書いていてなんなんですが、SSL/TLSが使用できなかったり、バックエンドEC2のセキュリティグループを外部公開する必要があったり、正直NLBを使う場面は極めて限定的でALBとくらべてほとんど出番が無いと考えていました。今回IPアドレスのターゲット登録ができるようになりEC2以外のリソースも負荷分散できるようになりました。大規模システムなどではDBの負荷分散が偏ると、負荷で順々に落ちていきサービスの全面ダウンが発生するようなことがあります。Auroraで読み込みエンドポイントを使用すると負荷の偏りが発生することがありましたが、NLBを使用するとほぼ理想的な分散となります。CLBやALB1ではEC2に対してしか負荷分散を行えませんでしたが、NLBではVPC内のリソースに対して自由にターゲット登録を行えます。今まで自分でソフトウェアロードバランサを使用していた部分でもマネージドサービスで運用する事ができることが期待できますね。ドキュメントによるとALBでもIPアドレスとポートを指定できるAWSリソースをターゲットに登録できる記載があるのですが、EC2以外でhttpでアクセスできるVPC内のリソースが思い当たりません。ウィスキー、シガー、パイプを愛するダメな大人です。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。2020年03月11日3【3/11(水)リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。kaji900AWSを全く知らない状態で入社して5年が経過、中途採用のAWSエンジニアの育成リーダーを1年間担当しています。そんな中で教える機会が増えました。自分がAWSに関するスキルアップために実践したことについてまとめてみました。どなたかのお役に立てれれば光栄です。濱田孝治437re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨132皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。kaji900AWSを全く知らない状態で入社して5年が経過、中途採用のAWSエンジニアの育成リーダーを1年間担当しています。そんな中で教える機会が増えました。自分がAWSに関するスキルアップために実践したことについてまとめてみました。どなたかのお役に立てれれば光栄です。濱田孝治437re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。夏目祐樹414こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。