オープンソース・Linuxが稼働する様々なIT基盤
前回ご紹介したように、ミッションクリティカルシステムにおいても、オープンソースやLinuxの波が押し寄せており、採用されているOSの種類に違いがあり、さらに、利用されつつあるオープンソースなどの状況が異なることが理解できたかと思います。
これらのミッションクリティカルシステム以外にも、多種多様なビジネス要件に対して、どのようなLinux OSやオープンソースが利用されるのかを知る必要があります。また、その要件を満たすためには、どのようなハードウェアやミドルウェア、管理ツールで構成されるのか、実績のあるオープンソースソフトウェアは何かなども合わせて知ってく必要があります。
今回は、Linuxを使ったサーバーシステムに限定し、Linuxやオープンソースの入門者にとって知っておくべきポイントをご紹介します。
バックエンドサーバーとフロントエンドサーバーにおけるオープンソース・Linux
ミッションクリティカルLinuxシステムなどのバックエンドシステムに対して、Webシステムなどのいわゆる顧客がアクセスする場所に近いところを一般的に「Webフロントエンド」といいます。Webフロントエンドは、全世界から押し寄せる大量のユーザーの通信を裁く必要があるため、一般的に、負荷分散装置や大量のサーバーを配置します。
このバックエンドとフロントエンドの違いを理解しておくと、そこに採用される業務用OSの違いを明確に理解できます。バックエンド側では、いわゆるミッションクリティカルシステムですので、絶対に停止が許されませんし、データの不整合も許されません。もし停止したとしても、ある時刻のとある指定した時点の状態に戻す(ロールバックといいます)ことが必須となるシステムです。
一方、フロントエンドシステムは、大量のサーバーを並べ、サーバーの1台が故障しても、負荷分散装置とその他のサーバーが処理を分担するため、システム全体としてクライアントからのトラフィックに影響はありません。一般的に、フロントエンドサーバーは、第1層、APサーバーは、第2層、データベースが稼働するバックエンドサーバーは、第3層とよばれ、全体として「3層構成」と呼びます。
3層構成は、3層システム、または3 Tierシステムと呼ぶこともあります。第1層は、クライアントへWeb画面などを提供します。第2層は、業務ロジックが稼働する層です。クライアントからの要求を受け取り、業務アプリケーションが稼働し、結果をクライアントに返します。業務ロジックが稼働するアプリケーションサーバーは、通称APサーバーとも呼ばれます。
第3層は、データベースソフトウェアが稼働し、個人情報、決済情報、業務ごとのパラメータなどを格納しています。業務ロジックが稼働する第2層からの要求に応じデータの書き込み、提供などを担います。3層システムは、その規模によってサーバーの規模やOSの種類を検討しなければなりません。
3層すべてのシステムをLinuxで構成する場合はデータベースサーバーのOSとしてLinuxが稼働することに注意が必要です。現在の多くのシステムでは、第1層のWebサーバーと第2層のWebアプリケーションサーバーにはLinuxを搭載しています。
一昔前は、データベースサーバーとして、UNIXサーバーを採用するのが一般的でしたが、近年は、データベースサーバーにLinuxとオープンソースのデータベースを搭載することも珍しくなくなりました。
ただし、これは、システムの用途や規模に依存しますので、データベースにかかる負荷、要件によって、Linuxとオープンソースデータベースが採用できない場合もあります。
システム規模、負荷テスト、擬似障害に対する復旧時間、データの保全性などを考慮した結果、データベースサーバーにおいて、Linuxとオープンソースデータベースで耐えられるという場合は、3層システムをブレードサーバーなどの比較的小規模な構成に集約することも可能です。
この場合、ブレードサーバーには、すべてLinuxを搭載し、SANストレージとブレードエンクロージャ内を組み合わせて3層システムが構成できます。データ容量が少ない場合は、ブレードサーバーのエンクロージャ1台だけで完結する場合もあります。DBサーバーのデータ容量、ユーザーデータの容量に応じてSANストレージを構成し、DBサーバーは高可用性クラスターを構成するのが一般的です。
ブレードサーバーとオープンソース・Linux
2000年代中頃から急速に普及したのが、ブレードサーバーです。ブレードサーバーは、Webシステムだけでなく、データベースシステムや、仮想化基盤など、様々な用途で利用されていますが、実は、世界的にブレードサーバーにおけるOSの割合は、WindowsよりもLinuxが圧倒的に多く、2000年代中頃から、オープンソース・Linuxといえば、ブレードサーバーというくらい数多くの実績があります。
ブレードサーバーが採用されている分野としては、Webサーバーやアプリケーションサーバー、メールサーバなどのエッジサーバだけでなく、データベース、HAクラスター、SANストレージを組み合わせ、高い耐障害性を要求されるシステムにもブレードサーバーが導入されることもあります。
また、ブレードサーバーの導入事例としてよく見かけるのは、仮想化基盤です。Linuxの場合は、OSに付属するKVM(Kernel Virtual Machine)と呼ばれる仮想化の機能がありますが、この仮想化の機能と、SANストレージを組み合わせた構成が一般的です。
物理マシンに対して、仮想化基盤ソフトウェア上で稼働する仮想的なコンピューターのことを「仮想マシン」(Virtual Machine:VM)といい、その仮想マシンのOSを「ゲストOS」と呼ぶのが一般的です。DreamWorks Animation社の事例では、KVMをベースとした仮想化製品とHPE BladeSystemを組み合わせて、数百のVMが稼働する基幹システムを構築した実績もあります。
3層構成で利用されるオープンソース・Linux
3層構成で採用されるオープンソースソフトウェアやLinuxは、一体どのようなものなのでしょうか?一般的に、フロントエンドサーバーは、大量のユーザーから発せられるリクエストを処理するため、大量の物理サーバーを並べますが、1台ごとの可用性は、それほど必要ありません。
1台や2台故障してもシステム全体への影響はあまりありません。そのようなサーバーシステムには、無償のLinuxが利用されるケースが少なくありません。通称フリーLinuxとよばれるOSです。OSの種類では、Ubuntu ServerやCentOS(Community Enterprise Operating System)などで構成されるのが一般的です。
一方、オンライントランザクション処理を行うデータベースサーバー、ユーザーコンテンツを保管するファイルサーバーなどでは、有償のLinux OSであるRed Hat Enterprise Linux(通称RHEL)やSUSE Linux Enterprise Server(通称SLES)が採用されます。
仮想化基盤であれば、仮想化専用のソフトウェア製品であるRed Hat Enterprise Virtualizationなどの採用もあります。一方、小中規模のシステムとしては、Apache Webサーバーとアプリケーションサーバー、データベースサーバーすべてをRHEL、あるいはSLESとそれに付属するミドルウェアやアプリケーションで構成するということもあります。
3層構成の応用事例
すこし3層構成の応用になってしまいますが、実は、省電力型のカートリッジサーバー「HPE Moonshot」のシャーシ内に3層構成を集約した事例もあります。省電力型サーバーで有名な「HPE Moonshot」は、手のひらにのるカートリッジ型のサーバーボードが、シャーシ内に45枚搭載することができ、負荷に応じてスケールさせるようなシステムに適しています。具体的な構成例は、以下のとおりです。
種類 | 主なオープンソースソフトウェア | 役割 |
---|---|---|
ゲートウェイ層 | HAProxy, Keepalived | 負荷分散等 |
Web/AP層 | Apache, Tomcat | Webの提供、業務アプリの稼働 |
DB層 | MySQL Cluster | 業務アプリのデータベース |
ファイルサーバー | GlusterFS | ユーザーデータの保管 |
バックアップ | cron | データのバックアップ |
監視 | Zabbix | サービス監視 |
UNIXサーバーや、ブレードサーバーの3層構成の図では、負荷分散装置が専用の機器で描かれていましたが、この事例では、負荷分散を行う機能もカートリッジ型サーバーで実現しています。オープンソースとしては、HAProxyとKeepalivedが採用されています。
ここではあまり深く説明しませんが、HAProxyは、Web/APサーバーのさらに前段に配置し、ユーザーからのトラフィックを分散する役目を担います。Keepalivedは、HAProxyサービスを冗長化させることが可能です。Webサーバーは、一般的なApache、APサーバーは、Tomcatを採用しています。
Tomcatは、サーバーで稼働し、動的なWebコンテンツをクライアントに提供します。一般的には、Javaの技術をベースにしています。JavaというとWebブラウザで稼働するソフトウェアと思われる方もいるかもしれませんが、動的なWebコンテンツを提供するAPサーバー側で稼働するJavaのプログラムは、サーブレットとよばれます。
Java、Tomcatともにオープンソースソフトウェアとして提供されています。DB層は、MySQLとよばれるオープンソースのデータベースソフトウェア(通称OSS-DBと呼ばれます)が稼働します。ファイルサーバーは、GlusterFSと呼ばれる分散ストレージソフトウェアを採用しています。
GlusterFSは、複数のサーバーカートリッジの内蔵ディスクを使って、一つの巨大なストレージボリュームとしてクライアントに提供します。サービス監視には、Zabbixとよばれるオープンソースソフトウェアがあり、日本では、非常に活発なコミュニティが存在します。
以上で、オープンソース・Linuxを駆使した3層構成の概要と応用事例などを簡単にご紹介しました。基本となる3層構成とそれを構成するオープンソース・Linuxについてざっくりと理解できかたかと思います。3層構成の各コンポーネントであるWebサーバー、APサーバー、DBサーバーについて、ここでは深く触れませんが、基本的なシステム構成や勘所については、今後の連載で適宜解説していきたいと思います。
【筆者プロフィール】
古賀政純(こが・まさずみ)
日本ヒューレット・パッカード株式会社
オープンソース・Linuxテクノロジーエバンジェリスト
兵庫県伊丹市出身。1996年頃からオープンソースに携わる。2000年よりUNIXサーバーのSE及びスーパーコンピューターの並列計算プログラミング講師、SIを経験。2006年、米国ヒューレット・パッカードからLinux技術の伝道師として「OpenSource and Linux Ambassador Hall of Fame」を2年連続受賞。プリセールスMVPを4度受賞。
現在は、日本ヒューレット・パッカードにて、Hadoop、Spark、Docker、OpenStack、Linux、FreeBSDなどのサーバー基盤のプリセールスSE、文書執筆を担当。日本ヒューレット・パッカードが認定するオープンソース・Linuxテクノロジーエバンジェリストとして、メディアでの連載記事執筆、講演活動なども行っている。Red Hat Certified Virtualization Administrator, Novell Certified Linux Professional, Red Hat Certified System Administrator in Red Hat OpenStack, Cloudera Certified Administrator for Apache Hadoopなどの技術者認定資格を保有。著書に「Mesos実践ガイド」「Docker 実践ガイド」「CentOS 7実践ガイド」「OpenStack 実践ガイド」「Ubuntu Server実践入門」などがある。趣味はレーシングカートとビリヤード。