TECH PLAY

ネットワヌク

むベント

マガゞン

技術ブログ

はじめに AI ゚ヌゞェントをオヌプン゜ヌスのフレヌムワヌクで䜜ろうずするず、実装はもちろんですが「コンテナ化」「Webサヌバヌ構築」「認蚌・セキュリティ統合」「スケヌリング」「監芖」「ロヌルバック」ずいった運甚たわりの課題に盎面するこずが倚いのではないでしょうか。 Microsoft Foundry の Hosted Agents は、こうした "゚ヌゞェントを動かし続けるための面倒ごず" をプラットフォヌム偎に任せ、開発者が ゚ヌゞェントの振る舞いそのものに集䞭できる ようにするためのフルマネヌゞドな AI ゚ヌゞェント実行基盀です。 Microsoft Foundry 䞊で実行
LifeKeeperの『困った』を『できた』に倉えるサポヌト事䟋から孊ぶトラブルシュヌティング再発防止策 こんにちは、SCSKの前田です。 い぀も TechHarmony をご芧いただきありがずうございたす。 システム基盀の䞻戊堎がオンプレミスからパブリッククラりドぞず移り倉わり、AWSやAzure䞊でHAクラスタを構築する機䌚がぐっず増えたした。クラりドでのむンフラ蚭蚈においお、「いかにクラりドリ゜ヌスを最適化し、コストや構築の手間を抑えるか」は垞に重芁なテヌマです。 そのため、サヌバヌのNICを最小限に抑えたり、オンプレミスず同じ感芚で同䞀サブネット内にネットワヌクをたずめようずしたり、監芖甚のサヌバヌWitnessの台数を節玄しようず考えるケヌスがよく芋られたす。 しかし、HAクラスタヌ゜フトりェアであるLifeKeeperをクラりド特にAzure環境で構築する堎合、この「オンプレミス感芚のネットワヌク蚭蚈」や「コストを意識した構成」が、思わぬ構築の壁ずなっお立ちはだかるこずがありたす。仮想IPVIPが正垞に機胜しなかったり、スプリットブレむン察策の構成芁件を満たせず、蚭蚈の手戻りが発生しおしたうのです。 本連茉䌁画「LifeKeeper の『困った』を『できた』に倉えるサポヌト事䟋から孊ぶトラブルシュヌティング再発防止策」では、サポヌトセンタヌに蓄積された「生のトラブル事䟋」を元に、安定運甚のための実践的な知恵を共有しおいきたす。 1. はじめに 前回の「カテゎリ3 第1匟」では、AWS環境における自動埩旧機胜ずの競合や回避策に぀いお解説したした。 第2匟ずなる今回は、 Microsoft Azure以䞋、Azure環境 にフォヌカスしたす。 Azure環境での構築・運甚においお、サポヌト窓口には「オンプレミスの感芚でIPアドレスやサブネットを蚭定したら通信ができない」ずいったネットワヌク呚りのご盞談や、「スプリットブレむン察策Quorumの最適な構成・ディスクの遞び方が分からない」ずいうお問い合わせを数倚くいただきたす。 今回は、Azure環境においおハマりやすい「ネットワヌク蚭蚈IP割り圓お・内郚ロヌドバランサヌ連携」 の眠ず、スプリットブレむンを防ぎ぀぀リ゜ヌスを最適化するための 「Quorum/Witness蚭蚈」の正解に぀いお、実際のサポヌト事䟋を亀えお玐解いおいきたしょう 💡 前回の蚘事カテゎリ3 第1匟はこちら ▶ 【クラりド環境特有の萜ずし穎 #1】良かれず思った自動埩旧が仇にAWS環境EC2/Route53/S3でハマる構成ず回避策 – TechHarmony 2. 今回の「困った」事䟋①IP・ネットワヌク蚭蚈の萜ずし穎 ❓ 事象の抂芁困った 「Azure䞊のWindowsサヌバヌ2台でLifeKeeperを構築予定です。コストや構築の手間を省くため、仮想IPリ゜ヌスずDataKeeperのミラヌリングで利甚するNICを『同䞀サブネット』に配眮したいず考えおいたす。ただ、仮想IP自䜓は別セグメントにする予定ですが、動䜜やサポヌト芁件に圱響はありたすか」 🔍 原因究明のプロセスず刀明した根本原因 オンプレミスであれば、柔軟にルヌティングやVLANを蚭定しお察応できるケヌスもありたすが、Azure環境ではネットワヌクの仕組みが異なりたす。サポヌトで仕様ず芁件を確認したずころ、Azure環境特有の厳しいルヌルが刀明したした。 Azure䞊で仮想IPVIPを機胜させるためには、ロヌドバランサヌILB内郚ロヌドバランサヌ等を甚いたネットワヌク切り替えが前提ずなりたす。この仕組みを正垞に動䜜させるため、LifeKeeperの芁件ずしお「保護するNICごずに異なるサブネットを割り圓おるこず」が必須同䞀サブネットでの構成は未サポヌトずなっおいるのです。 💡 具䜓的な解決策できた Azure環境でネットワヌクを構成する際は、以䞋の察応を行うこずで正垞に構築・運甚が可胜です。 異なるサブネットの割り圓お  ä»®æƒ³IPリ゜ヌスで䜿甚するNICず、DataKeeperのミラヌリング等で䜿甚するNICには、必ず 別々のサブネット を甚意しお割り圓おたす。 サブネットマスクは「/32」に蚭定  IPリ゜ヌスを䜜成する際、クラりド特有のルヌティング競合を避けるため、サブネットマスクは必ず  255.255.255.255 (/32)  ã«èš­å®šã—たすこれはクラりド環境共通の必須蚭定です。 ロヌドバランサヌの掻甚  VIPを機胜させるためのILBを適切に構成し、LifeKeeperの可甚性をさらに高めるために「LB Health Check リ゜ヌス」の導入も怜蚎したしょう。 ▌【図解】Azure環境におけるネットワヌク構成のNG/OK䟋 3. 今回の「困った」事䟋②スプリットブレむン察策ずQuorumの迷い ❓ 事象の抂芁困った 「Azure環境でスプリットブレむン察策を行いたいのですが、StorageモヌドやMajorityモヌドなど遞択肢が倚く、どれを遞べばいいか迷っおいたす。Azureの共有ディスクは䜿えるのでしょうか たた、耇数クラスタがある堎合、Witnessサヌバヌはクラスタごずに必芁ですか」 🔍 原因究明のプロセスず刀明した根本原因 スプリットブレむンネットワヌク分断により䞡ノヌドがアクティブになっおしたう珟象の察策はクラスタヌ運甚の芁ですが、クラりドでは共有ストレヌゞの扱いやネットワヌク構成がオンプレミスず異なるため、構成の遞択に迷うお客様が倚数いらっしゃいたす。 サポヌトからの回答により、Azure環境における最適なアプロヌチが敎理されたした。 💡 具䜓的な解決策できた お客様の芁件や環境に合わせお、以䞋のいずれかの手法を遞択するのがベストプラクティスです。 パタヌンA共有ディスクを利甚する堎合  v9.6.2以降Linux版の堎合、Azure共有ディスクを甚いた「SCSI-3 Persistent Reservations」によるI/Oフェンシングがサポヌトされおいたす。共有ストレヌゞを利甚できる構成であれば、これが掚奚の察策の1぀ずなりたす。 パタヌンBサヌバヌ構成Majorityモヌドを採甚する堎合 クラスタヌノヌドずは別のサヌバヌを「Witness監芖サヌバヌ」ずしお立おお倚数決をずる手法です。Witnessサヌバヌは、クラスタヌノヌドず異なる可甚性ゟヌンAZに配眮するこずが掚奚されたす。 ★嬉しいポむント耇数のLifeKeeperクラスタヌが存圚する堎合、 1台のWitnessサヌバヌを耇数クラスタで「共甚盞乗り」するこずが可胜 です。これにより、構築コストず運甚負荷を倧幅に削枛できたす ▌【図解】耇数クラスタでのWitnessサヌバヌ共甚盞乗りむメヌゞ クラスタごずに Witness サヌバヌを立おる必芁なく、 1 台のWitnessサヌバヌで耇数のシステムを監芖しおコストが削枛出来るわね 4. 補足事䟋DataKeeperのパフォヌマンス蚭蚈同期 vs 非同期ず朜むリスク Azureのようなクラりド環境あるいは遠隔地ぞのDR構成でDataKeeperを利甚する際、避けお通れないのが「同期モヌド」ず「非同期モヌド」の遞択です。 ここでは、蚭蚈時に必ず議論になる「リヌゞョン間の距離ネットワヌク遅延」 ず、 「障害発生時のリスク」の2぀の芳点から解説したす。 1. 物理的な距離レむテンシが性胜に䞎える圱響 DataKeeperの同期モヌドは、皌働系で曞き蟌みが発生するたびに、タヌゲット偎ぞデヌタを送り、その「曞き蟌み完了通知ACK」が戻っおくるたでアプリケヌションの凊理を䞀時埅機させたす。 同䞀リヌゞョン内可甚性ゟヌンAZ間など  é…延が極めお小さいため、同期モヌドでも実甚的なパフォヌマンスが埗られるこずが倚いです。 リヌゞョン間東日本西日本間など  ãƒãƒƒãƒˆãƒ¯ãƒŒã‚¯ã®ã€Œç‰©ç†çš„な距離」に応じお通信遅延レむテンシが倧きくなりたす。同期モヌドを遞択した堎合、この遅延がそのたた「アプリの曞き蟌みレスポンス䜎䞋」ずしお珟れたす。 蚭蚈のポむント 東日本ず西日本を跚ぐようなDR灜害察策構成で同期モヌドを採甚する堎合は、「性胜䜎䞋を蚱容しおでもデヌタ保党を優先する」 ずいう明確な合意が必芁です。パフォヌマンスを最優先ずするなら、距離の圱響を受けにくい 「非同期モヌド」が第䞀の遞択肢ずなりたす。 2. 障害発生時のデヌタロスず自動フェむルオヌバヌ 非同期モヌドを遞択する際、もう䞀぀理解しおおくべきなのが「障害時の挙動」ず「蚈画的な切り替え時の挙動」の違いです。 同期モヌド  åžžã«äž¡ãƒŽãƒŒãƒ‰ã®ãƒ‡ãƒŒã‚¿ãŒäž€è‡Žã—おいるため、障害時もデヌタロスが発生せず、 最高レベルのデヌタ品質 を保おたす。 非同期モヌド  çšŒåƒç³»ã®æ›žãèŸŒã¿ã‚’優先し、同期はバックグラりンドで行いたす。 ⚠  【重芁】非同期モヌドの萜ずし穎  çšŒåƒç³»ãŒçªç„¶ãƒ€ã‚Šãƒ³ã—た堎合、埅機系ぞの 自動フェむルオヌバヌ自䜓は正垞に実行 されたすが、ただ転送されおいなかった「未同期のデヌタキュヌ」は、フェむルオヌバヌ時に すべお砎棄デヌタロスされたす。これにより、埩旧埌にデヌタ䞍敎合が生じるリスクがある点に泚意が必芁です。 💡 ã€è£œè¶³ã€‘蚈画的な切り替えは安党 ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ç­‰ã§ã€Œæ‰‹å‹•でのスむッチオヌバヌ」を行う堎合は、LifeKeeperが未同期のデヌタをすべお送り終えおから切り替える 動䜜をしたす。そのため、非同期モヌドであっおも手動切り替えであればデヌタロスや䞍敎合は発生したせん。 【結論どう遞ぶべきか】 Azure環境における刀断基準は以䞋のようになりたす。 項目 同期モヌド掚奚同䞀リヌゞョン/AZ間 非同期モヌド掚奚リヌゞョン間/DR構成 重芖する点 デヌタ品質・完党䞀臎ロスなし アプリケヌションの凊理速床レスポンス 距離の圱響 距離東日本-西日本などがあるず遅延する 距離に関わらず曞き蟌み速床に圱響しない 障害時の自動切り換え (フェむルオヌバヌ) ロスなし・䞍敎合なし 盎前のデヌタ砎棄・䞍敎合のリスクあり 蚈画時の手動切り替え (スむッチオヌバヌ) ロスなし・䞍敎合なし ロスなし・䞍敎合なし同期完了を埅぀ため 💡 さらに深掘り非同期モヌドで「デヌタ䞍敎合」はどこたで起きる 「非同期モヌドでデヌタが砎棄されるず、ファむルが壊れおOSやDBOracle等が起動しなくなるのでは」ず䞍安に思う方もいるかもしれたせん。しかし、DataKeeperにはそのリスクを最小限に抑える**「曞き蟌み順序の敎合性Write Order Fidelity」**ずいう重芁な仕組みがありたす。 曞き蟌み順序の保蚌  DataKeeperはブロック単䜍で同期を行いたすが、゜ヌス偎で曞き蟌たれた順序を厳密に守っおタヌゲット偎ぞ転送したす。そのため、「新しいブロックだけが先に届き、叀いブロックが欠萜する」ずいった䞍自然な状態は発生したせん。 「停電盎埌」ず同じ状態クラッシュ䞀貫性  éšœå®³ç™ºç”Ÿæ™‚のタヌゲット偎のディスクは、理論䞊**「゜ヌス偎のサヌバヌがある䞀瞬の時点で突然停電した際のディスク状態」**ず等䟡です。 埩旧のメカニズム  æœ€æ–°ã®æ•°ãƒ–ロックが倱われたずしおも、ディスク党䜓ずしおは「過去のある時点」の敎合性が保たれおいたす。そのため、フェむルオヌバヌ埌のOSNTFS/ReFS等やデヌタベヌスOracle等は、自身の暙準的なリカバリ機胜ログのロヌルバック等を䜿っお、䞍敎合を解消し正垞に起動するこずが可胜な蚭蚈ずなっおいたす。 【結論】 非同期モヌドは「盎前のデヌタ数秒分など」を倱う可胜性はありたすが、 「システムが二床ず立ち䞊がらなくなるようなファむル砎損」を防ぐための高床な転送制埡 が行われおいたす。パフォヌマンスを優先し぀぀、実甚的な可甚性を確保できるのが、DataKeeperが遞ばれる理由の䞀぀です。 5. 「再発させない」ためのチェックリストベストプラクティス これたでの事䟋を螏たえ、Azure環境での構築前・蚭定時に確認しおいただきたいチェックリストを䜜成したした。ぜひ日々の運甚や新芏構築時にお圹立おください ✅ 再発防止策Azure構築前・蚭定時のチェックリスト 【ネットワヌク・IP蚭蚈】  ä»®æƒ³IPリ゜ヌスに割り圓おるサブネットマスクは  255.255.255.255 (/32)  ã«èš­å®šã—おいるか  å„サヌバヌのNICIPリ゜ヌス甚ずミラヌリング甚などには、それぞれ 異なるサブネット を割り圓おおいるか※同䞀サブネットは未サポヌト  ä»®æƒ³IPを機胜させるためのロヌドバランサヌILB等は適切に蚭蚈されおいるか  LB Health Checkリ゜ヌスの導入を怜蚎し、フェむルオヌバヌの確実性を高めおいるか 【Quorum・デヌタ保護蚭蚈】  ã‚¹ãƒ—リットブレむン察策ずしお、自瀟環境に合ったフェンシング手法SCSI-3 PR、Majorityモヌド等を正しく遞定できおいるか  Majorityモヌドの堎合、Witnessサヌバヌはクラスタノヌドず異なる可甚性ゟヌンAZに配眮するよう蚭蚈しおいるか  DataKeeperの同期モヌドは芁件に合っおいるかLAN環境/デヌタ品質重芖「同期」、WAN環境/レスポンス重芖「非同期」 💡 ベストプラクティス Azure特有の蚭定マニュアルを必ず参照する  Azure環境はオンプレミスや他のクラりドず動䜜原理が異なる郚分がありたす。構築時は公匏マニュアルの「Azure 特有の蚭定に぀いお」を必ずご䞀読いただき、OSWindows/Linuxごずの差異も確認しおください。 Witnessサヌバヌの効率的な掻甚  è€‡æ•°ã‚¯ãƒ©ã‚¹ã‚¿ã‚’運甚する堎合、MajorityモヌドのWitnessサヌバヌは1台で共甚可胜です。無駄なリ゜ヌスを省き、コストの最適化を図りたしょう。 ログの監芖ポむントを把握する  ãƒ•ェむルオヌバヌの成吊やスプリットブレむン察策の挙動は、Linuxであれば  /var/log/lifekeeper.log  ã«èš˜éŒ²ã•れたす。運甚監芖ツヌル等ず連携し、このログを適切に監芖する仕組みを敎えるこずが安定皌働ぞの近道です。 6. たずめ いかがでしたでしょうか。Azure環境でLifeKeeperを安定皌働させるためには、クラりド特有のネットワヌク仕様ILB連携やサブネット芁件ず、ストレヌゞ仕様スプリットブレむン察策を正しく理解するこずが成功の鍵ずなりたす。 「オンプレず同じで倧䞈倫だろう」ず思い蟌たず、事前に公匏ドキュメントや本蚘事のチェックリストを掻甚しお、萜ずし穎を回避しおくださいね日々の運甚でここを意識すれば、䞍芁なトラブルは確実に防げたす。 7. 次回予告 次回の連茉テヌマは「カテゎリ4DataKeeperの萜ずし穎デヌタ保護ずパフォヌマンスのバランス」です。 DataKeeperのミラヌ同期トラブルや、性胜ボトルネックず障害時動䜜の確認ポむントに぀いお、実際のサポヌト事䟋からディヌプに解説したす。お楜しみに 📚 本連茉のバックナンバヌ 過去のトラブル事䟋ず解決策もぜひあわせおご芧ください カテゎリ1リ゜ヌス起動・フェむルオヌバヌ倱敗の深局 ▶ 【リ゜ヌス起動・フェむルオヌバヌ倱敗の深局 #1】EC2リ゜ヌスが起動しないクラりド連携の盲点ずデバッグ術 – TechHarmony ▶ 【リ゜ヌス起動・フェむルオヌバヌ倱敗の深局 #2】ファむルシステムの思わぬ萜ずし穎゚ラヌコヌドから原因を読み解く – TechHarmony ▶ 【リ゜ヌス起動・フェむルオヌバヌ倱敗の深局 #3】蚭定ミス・通信障害・バヌゞョン違いの深局ず再発防止策 – TechHarmony カテゎリ2OS・LKバヌゞョンアップで泣かないために ▶ 【OS・LKバヌゞョンアップで泣かないために #1】OSバヌゞョンは倉えおいないのにカヌネル曎新の「萜ずし穎」ず互換性の真実 – TechHarmony ▶ 【OS・LKバヌゞョンアップで泣かないために #2】「蚭定が消えた」「亡霊IPが譊告」を防ぐロヌドマップ単玔な䞊曞き曎新に朜む萜ずし穎ず回避策 – TechHarmony カテゎリ3クラりド環境特有の萜ずし穎 ▶ 【クラりド環境特有の萜ずし穎 #1】良かれず思った自動埩旧が仇にAWS環境EC2/Route53/S3でハマる構成ず回避策 – TechHarmony ▶ 【クラりド環境特有の萜ずし穎 #2】オンプレ感芚の「同䞀サブネット」はNG!?Azure環境のネットワヌク芁件ずQuorum蚭蚈の最適解 詳しい内容をお知りになりたいかたは、以䞋のバナヌからSCSK LifeKeeper公匏サむトたで
はじめに 本皿は、2026 å¹Ž 03 æœˆ 20 æ—¥ã«å…¬é–‹ã•れた â€œ Migrate Amazon CloudFront public origins to private VPC origins ” ã‚’翻蚳したものです。 この蚘事では、さたざたな戊略を䜿甚しお  Amazon CloudFront  のパブリックオリゞンを  Amazon Virtual Private Cloud  (Amazon VPC) ã‚ªãƒªã‚žãƒ³ã«ç§»è¡Œã™ã‚‹æ–¹æ³•を玹介したす。たた、 クロスアカりント で  VPC ã‚ªãƒªã‚žãƒ³ を䜿甚するこずで、セキュリティを最優先ずしたアヌキテクチャをサポヌトするこずもできたす。 CloudFront ãƒ¯ãƒŒã‚¯ãƒ­ãƒŒãƒ‰ã®ãƒãƒƒãƒˆãƒ¯ãƒŒã‚¯ã‚¢ãƒŒã‚­ãƒ†ã‚¯ãƒãƒ£ã‚’蚭蚈する際、集䞭型モデルず分散型モデルのいずれかを遞択する必芁がありたす。集䞭型アヌキテクチャでは、専甚のネットワヌキングアカりントがすべおの CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションをホストし、耇数のリ゜ヌスアカりントにたたがるオリゞンに接続したす。各リ゜ヌスアカりントは、Application Load Balancer (ALB)、Network Load Balancer (NLB)、Amazon Elastic Compute Cloud(Amazon EC2) ã‚€ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ãªã©ã®ã‚ªãƒªã‚žãƒ³ã‚€ãƒ³ãƒ•ラストラクチャをホストしたす。分散型アヌキテクチャでは、各リ゜ヌスアカりントが独自の CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションずオリゞンむンフラストラクチャをそれぞれ管理するため、他のアカりントから独立したワヌクロヌド環境が構築されたす。 VPC ã‚ªãƒªã‚žãƒ³ã¯ã€é›†äž­åž‹ãšåˆ†æ•£åž‹ã®ã©ã¡ã‚‰ã®ã‚¢ãƒŒã‚­ãƒ†ã‚¯ãƒãƒ£ãƒ¢ãƒ‡ãƒ«ã§ã‚‚䜿甚できたす。アプリケヌションをプラむベヌトにしおパブリックむンタヌネットから分離するこずで、セキュリティ䜓制が匷化されたす。 VPC ã‚ªãƒªã‚žãƒ³ã‚’䜿甚しお CloudFront ãƒ¬ã‚€ãƒ€ãƒŒã§ã‚¢ã‚¯ã‚»ã‚¹åˆ¶åŸ¡ã‚’管理するこずで、アプリケヌションをパブリックむンタヌネットから分離できたす。たた、オリゞンむンフラストラクチャに察する DDoS æ”»æ’ƒã®ãƒªã‚¹ã‚¯ã‚‚軜枛されたす。既存のワヌクロヌドで CloudFront VPC ã‚ªãƒªã‚žãƒ³ã‚’有効にする方法はいく぀かありたす。適切な移行アプロヌチの遞択は、珟圚の構成、ビゞネスニヌズ、運甚芁件によっお異なりたす。ここからは、さたざたな移行戊略を玹介し、お客様の環境に最適な方法を遞択するための䞻芁な考慮事項ずベストプラクティスに぀いお説明したす。 前提条件 CloudFront ã®ãƒ‘ブリックオリゞンをプラむベヌト VPC ã‚ªãƒªã‚žãƒ³ã«ç§»è¡Œã™ã‚‹å‰ã«ã€ä»¥äž‹ã®æº–備が必芁です AWS ã‚¢ã‚«ã‚Šãƒ³ãƒˆãšæš©é™  CloudFront および Amazon VPC リ゜ヌスを管理するために必芁な Amazon Web Services (AWS) Identity and Access Management (IAM) 暩限 AWS Resource Access Manager (AWS RAM) (クロスアカりント共有の堎合) リ゜ヌスが配眮されおいる AWS リヌゞョンずアベむラビリティヌゟヌン (AZ) で VPC オリゞンがサポヌトされおいる こずを確認 リ゜ヌス蚭定  プラむベヌトアプリケヌションリ゜ヌスのネットワヌク芁件を確立。 CloudFront VPC オリゞンの前提条件 のドキュメントを参照しおください。セキュリティグルヌプを䜿甚しおオリゞンを保護し、CloudFront からのむンバりンド接続のみに制限からのむンバりンド接続のみに制限 Amazon VPC のプラむベヌトサブネット内に必芁な ALB、NLB、たたは EC2 むンスタンスを䜜成。これらのリ゜ヌスを VPC オリゞンずしお蚭定 CloudFront ãšã‚ªãƒªã‚žãƒ³é–“で HTTPS é€šä¿¡ã‚’行うための、有効な SSL/TLS èšŒæ˜Žæ›žãšé©åˆ‡ãªæš—号化蚭定の構成 Amazon VPC Block Public Access (BPA) ã®èš­å®š  BPA ã‚’䜿甚しおいる堎合は、Amazon VPC å…šäœ“たたは特定のプラむベヌトサブネットに察する Amazon VPC BPA é™€å€–蚭定の䜜成。蚭定手順に぀いおは、 Amazon VPC BPA ã®åŸºæœ¬ のドキュメントを参照 VPC ã‚ªãƒªã‚žãƒ³ã®èš­å®š CloudFront  ã‚³ãƒ³ã‚œãƒŒãƒ« たたは  API  を䜿甚した VPC ã‚ªãƒªã‚žãƒ³ã® 䜜成 。プラむベヌトアプリケヌションリ゜ヌスを䜜成したリ゜ヌスオヌナヌアカりントを䜿甚 VPC オリゞンのデプロむには最倧 15 分かかる堎合あり テストず怜蚌  プラむベヌトアプリケヌションリ゜ヌス (ALB、NLB、たたは Amazon EC2 むンスタンス) が本番環境ぞアクセス可胜な状態であり、Amazon VPC 内からアクセス可胜であるこずの確認 同じ Amazon VPC 内のテストむンスタンスからプラむベヌトオリゞンぞの接続をテストし、アプリケヌションぞのアクセスの確認 アプリケヌションがパフォヌマンスベンチマヌクを満たし、期埅どおりにコンテンツを配信しおいるこずの怜蚌 モニタリングメトリクス  Amazon CloudWatch メトリクス 4xxErrorRate、5xxErrorRate、OriginLatency を远跡し、オリゞン接続の問題やパフォヌマンス䜎䞋の特定 CloudFront ログ アクセスログを確認し、オリゞン接続の倱敗、タむムアりト゚ラヌ、VPC オリゞンからの予期しないレスポンスコヌドの確認 Amazon VPC フロヌログ CloudFront から VPC オリゞンぞのトラフィックフロヌの確認。セキュリティグルヌプルヌルで必芁な接続が蚱可されおいるこずの確認 アプリケヌションログ オリゞンアプリケヌションログを監芖し、CloudFront ずの統合に問題があるこずを瀺す゚ラヌやパフォヌマンスの問題の確認 移行戊略 このセクションでは、CloudFront でパブリックオリゞンからプラむベヌト VPC オリゞンぞ移行するための戊略に぀いお説明したす。これらの戊略を実斜する前に、前提条件を完了しおおく必芁がありたす。 戊略 1CloudFront ç¶™ç¶šçš„デプロむの䜿甚 (掚奚) CloudFront 継続的デプロむ を䜿甚するず、蚭定の倉曎を安党にテスト・怜蚌でき、ステヌゞング環境を本番環境に昇栌させる前に倉曎内容をテストできたす。このブルヌ/グリヌンデプロむメントアプロヌチが掚奚される移行戊略である理由は、ダりンタむムれロの移行ずロヌルバック機胜が組み蟌たれおいるためです。たた、本番トラフィックに圱響を䞎える前に、VPC オリゞンの接続性、パフォヌマンス、機胜を安党にテスト・怜蚌できたす。この戊略を図 1 ã«ç€ºã—たす。 継続的デプロむメントでは、本番 (プラむマリ) ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションをミラヌリングするステヌゞングディストリビュヌションが䜜成されたす。ステヌゞングディストリビュヌションに新しい VPC オリゞンを蚭定できたす。プラむマリディストリビュヌションはパブリックオリゞンからのトラフィック配信を継続したす。ヘッダヌベヌスたたは重みベヌスの方匏で継続的デプロむメントポリシヌを䜜成し、ステヌゞングディストリビュヌションにトラフィックを振り分けるこずができたす。 たず、特定のヘッダヌでトラフィックをタグ付けしおテストを行うには、ヘッダヌベヌスタむプでポリシヌを有効にしたす。これにより、テストフェヌズ䞭に発生する可胜性のある問題を迅速に解決できたす。Amazon VPC、ネットワヌク、アプリケヌションのパフォヌマンスが怜蚌され、問題が解決したら、ポリシヌを重みベヌスタむプに曎新したす。 重みベヌスポリシヌでは、本番トラフィックの特定の割合 (0%〜15%) をステヌゞングディストリビュヌションにルヌティングできたす。最初は小さい割合から始め、埐々に増やしおいくこずができたす。重みベヌスポリシヌタむプを䜿甚する堎合、セッションの維持を有効にできたす。これにより、特定のナヌザヌセッションは、ビュヌワヌセッションが閉じられるたで特定のディストリビュヌションに維持されたす。怜蚌が完了したら、1 回の操䜜でステヌゞング蚭定を本番環境に昇栌させたす。詳现な手順に぀いおは、「  Use CloudFront continuous deployment to safely validate CDN changes  ã€ã‚’参照しおください。 図 1CloudFront 継続的デプロむメント機胜を䜿甚したプラむベヌト VPC オリゞンぞの移行 戊略 1 の考慮事項  キャッシュ プラむマリディストリビュヌションずステヌゞングディストリビュヌションはキャッシュは別管理。CloudFront がステヌゞングディストリビュヌションに最初のリク゚ストを送信した時点ではキャッシュは空であり、ビヘむビア蚭定に基づいおキャッシュを開始 トラブルシュヌティング 移行䞭に問題が発生した堎合は、継続的デプロむメントポリシヌでトラフィックの重みを 0% に削枛。問題を調査・解決しおから、トラフィックの割合を埐々に増加 セッション状態 継続的デプロむメントポリシヌを無効たたは有効にするず、CloudFront はすべおのセッション (アクティブなセッションを含む) をリセットし、すべおのリク゚ストを新芏ずしお凊理。セッションスティッキネスの無効化・有効化時にも同様 プロトコルサポヌト 珟圚、HTTP3 は継続的デプロむメントポリシヌでは未サポヌト ポリシヌ 重みベヌスポリシヌを䜿甚する堎合、重みは 0〜15 ã®æ•°å€€ã§æŒ‡å®š 戊略 2CloudFront ã‚šãƒƒã‚žé–¢æ•°ã®äœ¿ç”š  既存の CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションに、䜜成したプラむベヌト VPC ã‚ªãƒªã‚žãƒ³ã‚’オリゞンずしお远加したす。次に、viewer-request ãƒˆãƒªã‚¬ãƒŒã‚’䜿甚した  CloudFront Function  (サンプルコヌドは以䞋) ã‚’䜜成し、カスタムヘッダヌたたはパブリックオリゞンずプラむベヌト VPC ã‚ªãƒªã‚žãƒ³é–“の重み付けトラフィック分割に基づいお、トラフィックを VPC ã‚ªãƒªã‚žãƒ³ã«æŒ¯ã‚Šåˆ†ã‘たす。その他の䟋に぀いおは、GitHub ã®  amazon-cloudfront-functions ã‚µãƒ³ãƒ—ル を参照しおください。 import cf from 'cloudfront'; const kvsHandle = cf.kvs(); // Configuration: Update these values to match your CloudFront distribution origins const PUBLIC_ORIGIN_DOMAIN = 'your-public-origin.example.com'; // Replace with your public origin domain const PRIVATE_ORIGIN_ID = 'your-private-origin-id'; // Replace with your private VPC origin ID async function handler(event) { const request = event.request; try { const config = await kvsHandle.get('routing_mode', { format: 'json' }); if (config.mode === 'header') { const routeHeader = request.headers['x-route-origin']; if (routeHeader && routeHeader.value === 'public') { cf.updateRequestOrigin({ domainName: PUBLIC_ORIGIN_DOMAIN }); } else if (routeHeader && routeHeader.value === 'private') { cf.selectRequestOriginById(PRIVATE_ORIGIN_ID); } } else if (config.mode === 'weighted') { const hash = simpleHash(event.viewer.ip); if (hash % 100 < config.weight_percentage) { cf.selectRequestOriginById(PRIVATE_ORIGIN_ID); } else { cf.updateRequestOrigin({ domainName: PUBLIC_ORIGIN_DOMAIN }); } } } catch (error) { console.log('Routing error: ' + error); } return request; } function simpleHash(str) { let hash = 0; for (let i = 0; i < str.length; i++) { hash = ((hash << 5) - hash) + str.charCodeAt(i); hash = hash & hash; } return Math.abs(hash); } リク゚ストのルヌティングモヌドは KVS ã§å®šçŸ©ã—、キヌを「routing mode」、倀を  {"mode": "weighted", "weight_percentage": 70}  たたは  {"mode": "header"}  に蚭定したす。テストを開始するには、パブリックオリゞンにトラフィックを転送する察象のビヘむビアに CloudFront Function ã‚’関連付けたす。 たず、KVS ã®å€€ã‚’  {"mode": "header"}  ã«èš­å®šã—たす。カスタムヘッダヌ  x-route-origin  ã®å€€ã‚’  public  ãŸãŸã¯  private  ã«æŒ‡å®šã—たリク゚ストを CloudFront ã«é€ä¿¡ã—おテストを開始したす。テストフェヌズ䞭に発生する可胜性のある問題を迅速に解決できたす。 蚭定、ネットワヌク、アプリケヌションのパフォヌマンスメトリクスを怜蚌したす。明らかな問題を解決した埌、KVS ã‚’曎新しお重み付けでトラフィックをルヌティング  {"mode": "weighted", "weight_percentage": 5}  したす。たずトラフィックの  5%  ã‚’プラむベヌトオリゞンに送信し、 weight_percentage  ã‚’埐々に  100%  ãŸã§å¢—加させたす。プラむベヌトオリゞンがトラフィックを受信し、期埅どおりに動䜜しおいるこずを確認したら、キャッシュビヘむビアを曎新しお、珟圚のパブリックオリゞンの代わりにプラむベヌトオリゞンを䜿甚するように倉曎したす。その埌、トラフィックがプラむベヌト VPC ã‚ªãƒªã‚žãƒ³ã«ãƒ«ãƒŒãƒ†ã‚£ãƒ³ã‚°ã•れおいるこずを怜蚌したす。゚ラヌがないこずを確認したら、キャッシュビヘむビアから CloudFront Function ã‚’削陀したす。他のキャッシュビヘむビアに぀いおも同じプロセスを繰り返したす。 図 2CloudFront ゚ッゞ関数を䜿甚したプラむベヌト VPC オリゞンぞの移行 戊略 2 ã®è€ƒæ…®äº‹é …  キャッシュ ディストリビュヌションは、蚭定されたキャッシュビヘむビアに基づいおリク゚ストをキャッシュ トラブルシュヌティング 移行䞭に問題が発生した堎合は、トラフィックの重みを 0% に削枛。問題を調査・解決しおから、トラフィックの割合を埐々に増加 オリゞン蚭定 CloudFront Function でオリゞン固有の蚭定を远加する堎合は、 オリゞン倉曎のヘルパヌメ゜ッド を参照。特に指定がない限り、すべおの蚭定はオリゞン蚭定たたは関連するキャッシュビヘむビア蚭定から継承 CloudFront Function ビヘむビアに既存の CloudFront Function が関連付けられおいる堎合は、オリゞン遞択ロゞックをサブ関数ずしお実装し、メむン関数から呌び出す圢で統合 KVS 関数コヌドの耇雑さを軜枛し、コヌド倉曎のデプロむなしでデヌタを曎新可胜。詳现な手順に぀いおは、「 CloudFront Functions ç”šã®äœŽãƒ¬ã‚€ãƒ†ãƒ³ã‚·ãƒŒãƒ‡ãƒŒã‚¿ã‚¹ãƒˆã‚¢ã€Amazon CloudFront KeyValueStore ã®ç޹介 」を参照 戊略 3既存ディストリビュヌションの曎新 (むンプレヌス移行)  このむンプレヌスアップグレヌド戊略は、既存の CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションを盎接倉曎しお、パブリックオリゞンを VPC ã‚ªãƒªã‚žãƒ³ã«çœ®ãæ›ãˆã‚‹æ–¹æ³•です。このアプロヌチは最も迅速な移行方法ですが、サヌビスの䞭断を最小限に抑えるために、慎重な蚈画ずメンテナンスりィンドりが必芁です。この戊略を図 3 ã«ç€ºã—たす。 たず、既存の CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションに新しい VPC ã‚ªãƒªã‚žãƒ³ã‚’䜜成し、キャッシュビヘむビアを曎新しおパブリックオリゞンの代わりに新しいプラむベヌトオリゞンにトラフィックをルヌティングしたす。すべおのビヘむビアの曎新ず怜蚌が完了したら、叀いパブリックオリゞンの蚭定を削陀できたす。このアプロヌチは、プリプロダクション環境やテスト環境で VPC ã‚ªãƒªã‚žãƒ³ã‚’テストする堎合に最適です。本番環境では、戊略 1 ã«åŸ“うこずを掚奚したす。本番ディストリビュヌションにむンプレヌスで倉曎を行う堎合は、アプリケヌションに十分なメンテナンスりィンドりを確保しおください。たた、切り替え䞭にワヌクロヌドが䞭断に蚱容できるこずを確認しおください。 図 3キャッシュビヘむビアの曎新によるプラむベヌト VPC オリゞンぞの移行 (むンプレヌス移行) 戊略 3 ã®è€ƒæ…®äº‹é …  CloudFront ディストリビュヌションの曎新 新しい蚭定が曎新されるず、CloudFront はすべおの゚ッゞロケヌションぞの倉曎の䌝播を開始。゚ッゞロケヌションで蚭定が曎新された埌、CloudFront はそのロケヌションから新しい蚭定に基づいおコンテンツの配信を即座に開始。それたでは、CloudFront は叀い蚭定でコンテンツを配信 サヌビスの䞭断 ビヘむビアの曎新プロセス䞭に、新しく䜜成したリ゜ヌスでネットワヌクやアプリケヌションに関連する問題が発生する可胜性があるため、トラブルシュヌティング甚に十分なメンテナンスりィンドりを確保 ロヌルバックの耇雑さ ロヌルバックにはビヘむビアの倉曎を元に戻す必芁があり、パブリックオリゞンの再䜜成が必芁になる堎合あり。倉曎を行う前に元の蚭定を蚘録しおおくこず。 テスト芁件 本番環境でむンプレヌスアップグレヌドを実斜する前に、非本番環境で VPC オリゞンの接続性を十分にテスト ビヘむビアの䟝存関係 耇雑な蚭定を持぀耇数のビヘむビアがある堎合は、䜓系的に曎新し、各倉曎を個別に怜蚌 戊略 4マルチテナントディストリビュヌションのプラむベヌト VPC ã‚ªãƒªã‚žãƒ³ãžã®ç§»è¡Œ マルチテナント CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションは、パスベヌスたたはホストベヌスのルヌティングを䜿甚しお、単䞀のディストリビュヌションで耇数のアプリケヌション、顧客、たたはビゞネスナニットにコンテンツを配信したす。これらのディストリビュヌションを VPC ã‚ªãƒªã‚žãƒ³ã«ç§»è¡Œã™ã‚‹ã«ã¯ã€åˆ†é›¢ãšã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£å¢ƒç•Œã‚’維持しながら、どのテナントにも圱響を䞎えないよう慎重な蚈画が必芁です。この戊略を図 4 ã«ç€ºã—たす。 マルチテナントディストリビュヌションでは、各テナントは芪ディストリビュヌションから蚭定を継承し、独自のドメむンを持ちたす。オリゞンはメむンディストリビュヌション䞊で䜜成・蚭定され、テナントぞのトラフィックルヌティングのテンプレヌトずしお䜿甚されたす。そのため、むンプレヌス移行を行うず、オリゞンがテナント間で共有されおいるため、すべおのテナントに圱響を䞎える可胜性がありたす。 掚奚されるアプロヌチは、VPC ã‚ªãƒªã‚žãƒ³ã‚’䜿甚した新しいマルチテナントディストリビュヌションを䜜成し、各テナントを新しいディストリビュヌションに関連付けるこずです。これにより、各テナントを個別にテストし、テナントを 1 ã€ãšã€ VPC ã‚ªãƒªã‚žãƒ³ã‚’䜿甚した新しいディストリビュヌションに移行できたす。 図 3キャッシュビヘむビアの曎新によるプラむベヌト VPC オリゞンぞの移行 (むンプレヌス移行) 戊略 4 の考慮事項  ビヘむビアの敎理 移行䞭の混乱を避けるため、テナントごずにビヘむビアがパスパタヌンたたはホストヘッダヌで明確に敎理されおいるこずを確認 クロスアカりントの耇雑さ 異なるテナントのオリゞンが異なる AWS アカりントに存圚する堎合は、AWS RAM を䜿甚しお各アカりント間で VPC オリゞン共有を適切に蚭定 テナントごずのテスト 次のテナントに進む前に、各テナントの移行を個別に怜蚌 ロヌルバック蚈画 他のテナントに圱響を䞎えずに個別のテナントをロヌルバックする必芁がある堎合に備え、テナントごずにロヌルバック手順を個別に文曞化 コミュニケヌション 各テナントたたはアプリケヌションオヌナヌず調敎し、垌望するメンテナンスりィンドり䞭に移行をスケゞュヌル その他の考慮事項 Origin Shield パブリックオリゞンで Origin Shield を䜿甚しおいた堎合、プラむベヌト VPC オリゞンでも匕き続き䜿甚可胜。 オリゞングルヌプ 珟圚の CloudFront ディストリビュヌションでオリゞングルヌプを䜿甚しおいる堎合は、新しいオリゞングルヌプを䜜成し、ビヘむビアをオリゞングルヌプにマッピングするよう蚭定が必芁 レむダヌ 7 の保護 AWS Shield Standard は、幅広い DDoS 攻撃から CloudFront ディストリビュヌションを保護。AWS では、プラむベヌト VPC オリゞンをレむダヌ 7 の暙的型攻撃から保護するために、AWS Shield Advanced および AWS WAF のむンテリゞェントな脅嚁緩和メカニズム (レむダヌ 7 DDoS 緩和ルヌル、Bot Control など) によるディストリビュヌションの保護を掚奚 クォヌタ CloudFront ã®ã‚¯ã‚©ãƒŒã‚¿ã‚’確認し、必芁に応じお移行前に VPC ã‚ªãƒªã‚žãƒ³ã«é–¢é€£ã™ã‚‹ã‚¯ã‚©ãƒŒã‚¿ã‚’匕き䞊げ クリヌンアップ 継続的な課金を避けるため、トラフィックルヌティングずテスト甚に䜜成した未䜿甚のリ゜ヌスを削陀しおください。CloudFront ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションを削陀する前に、すべおのトラフィックが移行枈みで、DNS ãƒ¬ã‚³ãƒŒãƒ‰ãŒæ›Žæ–°ã•れおいるこずを確認しおください。移行テスト甚にテスト ALB、NLB、たたは EC2 ã‚€ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã‚’䜜成した堎合は、䞍芁であれば削陀しおください。 継続的デプロむ (戊略 1) ã‚’䜿甚した堎合は、ステヌゞング蚭定をプラむマリディストリビュヌションに昇栌させたす。゚ッゞ関数 (戊略 2) ã‚’䜿甚した堎合は、CloudFront Function ãšãã® KVS ã®é–¢é€£ä»˜ã‘を解陀しお削陀したす。むンプレヌス移行 (戊略 3) ã‚’䜿甚した堎合は、叀いパブリックオリゞンの蚭定を削陀したす。マルチテナントアヌキテクチャ (戊略 4) ã‚’移行した堎合は、すべおのテナントの移行完了埌に叀いマルチテナントディストリビュヌションを無効化しお削陀したす。 クリヌンアップが完了したこずを確認するには、CloudFront ã‚³ãƒ³ã‚œãƒŒãƒ«ã§ãƒ†ã‚¹ãƒˆé–¢æ•°ãšæœªäœ¿ç”šã®ãƒ‡ã‚£ã‚¹ãƒˆãƒªãƒ“ュヌションが削陀されおいるこずを確認したす。さらに、 AWS Cost Explorer  ã‚’ 24〜48 æ™‚間モニタリングし、䞀時リ゜ヌスぞの課金が停止しおいるこずを確認したす。 たずめ VPC ã‚ªãƒªã‚žãƒ³ãžã®ç§»è¡Œã¯ã€ãƒ‘ブリック゚ンドポむントを排陀するこずでセキュリティ䜓制を匷化したす。アクセス制埡は CloudFront ãƒ¬ã‚€ãƒ€ãƒŒã§ç®¡ç†ã§ããŸã™ã€‚CloudFront ã®ãƒ‘ブリックオリゞンからプラむベヌト VPC ã‚ªãƒªã‚žãƒ³ãžç§»è¡Œã™ã‚‹ãŸã‚ã® 4 ã€ã®ç§»è¡ŒæˆŠç•¥ã¯ã€ãã‚Œãžã‚Œç§»è¡Œé€ŸåºŠã€ãƒªã‚¹ã‚¯è»œæž›ã€é‹ç”šã®è€‡é›‘さの間で異なるトレヌドオフを持っおいたす。最適な移行アプロヌチは、既存の構成、ビゞネスニヌズ、および運甚芁件によっお異なりたす。 移行を始める準備はできたしたか æœ€åˆã®ã‚¹ãƒ†ãƒƒãƒ—は、珟圚のディストリビュヌション構成を十分に理解するこずです。それにより、ご自身の環境に最適な戊略を遞択するために必芁な知識が埗られたす。詳现な蚭定ガむダンスずベストプラクティスに぀いおは、 CloudFront VPC ã‚ªãƒªã‚žãƒ³ のドキュメントをご芧ください。 CloudFront ã®æ©Ÿèƒœã‚„ベストプラクティスに関する最新情報に぀いおは、 AWS Networking and Content Delivery Blog  ã‚’フォロヌしおください。フィヌドバックがある堎合は、コメントセクションにコメントを送信しおください。質問がある堎合は、 Amazon CloudFront re:Post  ã§æ–°ã—いスレッドを開始するか、 AWS Support  ã«ãŠå•ã„合わせください。 著者 Kartik Bheemisetty Kartik Bheemisetty は US-ISV のお客様を担圓するシニアテクニカルアカりントマネヌゞャヌであり、お客様が AWS クラりドサヌビスを掻甚しおビゞネス目暙を達成できるよう支揎しおいたす。AWS のネットワヌクおよびコンテンツ配信サヌビスに関する専門知識を持っおいたす。ベストプラクティスに関する専門的なガむダンスの提䟛、分野別専門家ぞのアクセスの促進、AWS の支出、ワヌクロヌド、むベントの最適化に関する実甚的なむンサむトの提䟛を行っおいたす。 LinkedIn で圌ず぀ながるこずができたす。 Ravi Avula Ravi ぱンタヌプラむズアヌキテクチャに泚力する AWS のシニア゜リュヌションアヌキテクトです。゜フトりェア゚ンゞニアリングにおいお 20 幎の経隓を持ち、決枈業界で゜フトりェア゚ンゞニアリングおよび゜フトりェアアヌキテクチャの耇数のリヌダヌシップ職を歎任しおきたした。 翻蚳は Solutions Architect の長谷川 玔也が担圓したした。

動画

曞籍

おすすめマガゞン

蚘事の写真

クルマの䟡倀を匕き出す「芋えない土台」 ──NTTデヌタMSEの車茉プラットフォヌム開発

蚘事の写真

【北九州垂】デゞタルで"皌げるたち"をどうアップデヌトする―産孊トップランナヌず語る【KITAKYUSHU Tech...

蚘事の写真

【#TUC Growth Summit 2025】孊び続ける者だけが、未来を倉える。 ——その䞀歩が、あなたの人生を動か...

蚘事の写真

【ブラザヌ工業】AWSサヌバヌレスで䞖界䞭のデバむスず぀なぐ──AWSアカりント管理ず、フルサヌバヌレスIoTプラットフ...

蚘事の写真

運転空間をたるごず蚭蚈する──Hondaが描く未来の運転空間ず「スマヌトキャビン」構想ずは

新着動画

蚘事の写真

【ゞュニアは育おるべきか】AI時代の若手育成の本質「シニアはい぀か死に絶える」 / ロゞカルシンキングず非認知スキル /...

蚘事の写真

【砎壊防止】意図しないリ゜ヌス削陀を防ぐTerraform䞀行コヌド株匏䌚瀟ディヌカレットDCPThe OneLi...

蚘事の写真

【AIは60点しか出せない】基瀎力がないず芋抜けない / ゞュニア゚ンゞニア䞍芁論の栞心 / ミノ駆動氏『良いコヌド/...