[Vagrant] マルチサーバー環境を構築してインフラ構築検証を行う #1「負荷分散構成」

server-90389_1280
LINEで送る
Share on GREE
Share on LinkedIn

最近、仕事でサーバーばかり触っているが、世の中インフラエンジニアがとにかく少ないという話をよく聞く。

昨年は、WEBエンジニアが少ないとか、UIデザイナーが少ないとか・・・

個人的には、人材紹介の業界会社が、単価を向上させるために、その業界に向けて値上げしているだけだと思う。

何故なら、僕の知り合いには、そういう仕事をやりたがっている人がたくさんいるからだ。
マッチングがうまくできていないのか、企業は採用したいけどうまくできない。
求職者は仕事をしたいけど、いい仕事につけない。

世の中うまくいかない構図ですね。

インフラエンジニアに求められる事

サーバー構築するインフラエンジニアにおいて、最近はクラウドサーバーも増えてきて、1台だけのサーバーを丁寧に運用するのは、社内システムを扱う情報システムや、社内エンジニアグループぐらいでしょう。

外向きのサービスを運営する場合は、間違いなく、冗長構成から、複数サーバーにおけるバランシング構成や、サバクラ構成に加えて、キャッシュサーバー、イメージコンテンツサーバー、WAFを始めとするセキュリティサーバーなど、大量のサーバーで膨大なトラフィックをさばくサーバー構築を求められる。

負荷分散構成

中でもダントツに要望が多いのが、負荷分散構成であるが、ざっくり以下のような事で対応する。

・ロードバランサー機器を用いる
・LVSを用いてポートフォワーディング
・apacheのmod-proxyを使ってリバースプロキシ―
・heatbeatなどのフェイルオーバー
・DNSラウンドロビン

メリット、デメリット

たくさんあるようだが、この中でDNSのラウンドロビンとフェイルオーバーだけは、実用的でないので、絶対に検討にも入れないようにしよう。

理由としては、フェイルオーバーの仕組みは、2台の冗長構成において、メイン機が壊れた際にサブ機に切り替える技術だが、サーバーのよくはる半落ち状態の場合は切り替わらないので、正直綺麗に切り替わった試しがない。

DNSラウンドロビンは、複数台に対して、順番(ランダム)にDNSはの向き先IPアドレスを切り替える方法だが、複数台の中の1台に障害が発生しても、障害検知をする仕組みがないので、そのまま障害になってしまう。

このコトからどうしてもLBまたはLVSを選択せざるを得ない。
apacheやnginxを使ってリバースプロキシ―を構成してもいいが、SSLなどの処理がどうしてもうまくいかないため、簡易設計では有りだが、公開構成に関してはLB、LVSが望ましい。

負荷分散を制するエンジニアは世界を制する

落ちないサービス構成を構築できれば、そのサービスは、上昇することができる。

なれないエンジニアが、小規模から中規模アクセスになった際に、必ず負荷分散を余儀なくされるし、サービス自体の上限もその構成で決まる。

仕事でそのサービスの売上を2倍にしたければ、トラフィックやコネクションを2倍にするのと同じだし、10倍にしたければ、全ての許容範囲を10倍で考えなければならない。

もちろんプログラム構成や、DB構成により、上限値が決まる事が多いが、その辺は担当のプログラマに委ねよう。
全てを1エンジニアで行なっている場合は、歯を食いしばって100倍や1000倍まで拡張できる仕組みを考えておこう。

僕の経験上、1台サーバーで100万円の売上を立てるのは難しい。
このブログで何度も言っているが、SQL構成にした段階でよほど高価なDBシステムを使わない限り、DB-IOのボトルネックがついて回る。

とにかくサーバーをバランシングにするだけで、サーバーを100台とかにすればいい状態にできれば、営業さんが売れば売るほど100倍までの売上は可能となる。

それだけサーバーの基本構成は重要って事。

次回以降は、LVSを構築して負荷分散を簡単に設計してみようと思う。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*