内部SLBでシステム可用性を向上

小規模サービスでもクラウドロードバランサーを使用する5つの理由

この前の記事で紹介した通り、単純なサービスを運用してもロードバランサーを使用するメリットは様々あります。ところで、Alibabaクラウドのロードバランサー (SLB) サービスは外部からのアクセスを分散するインターネットSLBの他、イントラネットSLB (内部SLB) も提供しています。この記事は内部SLBが解決する問題について書きたいと思います。

よくあるアーキテクチャの問題

内部のSLBが存在しない構成。ウェブサーバーは直接にアプリケーション・サーバーへ連絡

ウェブアプリケーションはよく上記の図のような多層アーキテクチャで設計されているかと思います。この構成は開発観点から見ればとても良いと思いますが、運用観点から見ると、いくつかの問題があります。

  • ウェブ層にあるサーバーはApp層にあるすべてのサーバー情報を管理しないといけません。App層にサーバーを追加・削除するたびに、ウェブ層のサーバーの設定などを変更しなければなりません。各層にあるサーバー台数が少なければ、この運用はよいですが、サーバー台数が増えると設定ファイルの管理や変更時の設定ファイルの配布が面倒になり、トータルの運用コストが増えます。
  • App層のサーバーは障害が起きたとき、その障害情報がウェブ層へ伝達されないため、障害のサーバーがサービスから切り離せずサービス影響が起きてしまいます。また、障害があったサーバーを切り離すのは手動作業のため、復旧するまでに時間がかかり、サービス継続性へ影響を与えてしまいます。

当然ながら、App層へのリクエストをプロキシする内部のECSインスタンスを構築することによって上記の問題を解決できますが、この解決方法だと内部ECSサーバーが単一障害点となり、障害が起きたらサービス停止になります。更に、プロキシサーバーの帯域幅やスループットは限界があり、サーバー管理も注意しないといけません。

こういうときに内部SLB

ウェブ層とApp層の間にイントラネットSLBを起き、層またぐ通信プロキシとする。

こういうときはイントラネットSLBを使用すればスムーズにすべての問題を解決できます。内部SLBを設置することによるメリットは主に3つがあるかと思います。

  • ウェブ層のサーバーは内部SLBの情報だけを管理すればよく、ウェブ層とApp層の依存性がなくなります。ウェブ層のサーバーは内部SLBの情報のみ管理すればよく、App層にサーバーが増加してもウェブ層にあるサーバーが気にしなくてもよくなります。
  • プロキシインスタンスと違って、内部SLBはマネージドサービスであるため設定を始め、管理や冗長構成を構築することは自動的にしてくれます。SLBは高いスループットと帯域幅を持つように設計された商品のため、プロキシインスタンスのような問題がありません。
  • App層はウェブ層から独立となったことで、サーバー台数の最適化でAutoScalingを導入できます。AutoScalingは自動的に追加サーバーをSLBへ組み込んでくれるので、自動的にサーバー台数の調整が可能です。

そもそも値段は?

Alibabaクラウドではベストプラクティスを推進するため、内部SLBは 0円 で使えます。システムを設計するときには内部SLBを追加しましょう。

まとめ

内部SLBによってAppサーバーの負荷分散を実施できるようになりました。そして、モジュール間の依存関係を減らすことによって、Appサーバーの増加や縮小など容易にスケールアウトできるようになります。Alibabaクラウドの内部SLBは無料で使用できるため、システム構築するときには是非モジュールとして入れましょう。

この記事をシェアする