サーバについて

f:id:hnaruibb:20200501113342j:plain

はじめまして。インフラチームのN井です。
今回はサーバエンジニアの観点から、サーバがどんなものでどんなことをしているのかについて書いてみたいと思います。

 

1. サーバとは

最初にサーバという単語についてです。
サーバが意味するところは主に2つあります。
1つ目はサーバという機能、2つ目はサーバというコンピュータです。

(1) 機能を指す場合

サービスを提供(サーブ:serve)するものをサーバと呼びます。
逆にサービスを提供される側はクライアントと呼びます。
普段の生活で例えると、ウォーターサーバは水を提供するサーバですし、水の提供を受ける人はクライアントとなります。

(2) コンピュータを指す場合

サーバ機能を持たせることのできるコンピュータを指して、サーバと呼びます。
以降は主にこちらのサーバについて記載します。

2. サーバの種類 (物理/仮想)

サーバには物理サーバと仮想サーバがあり、ハードウェア上に構築されたサーバは物理サーバ、仮想化ソフトウェア上で構築されたサーバは仮想サーバと呼びます。
クラウドサービスで私たちが構築するサーバは、クラウドサービスを提供しているベンダーのデータセンタ内にある物理サーバ上に構築される仮想サーバです。
物理サーバと仮想サーバについては、次以降に記載します。

f:id:hnaruibb:20200507000347p:plain

図1

3. 物理サーバについて

まず、仮想化ソフトウェアを動かしていない物理サーバについてです。
物理サーバは基本的には ハードウェア / OS / ミドルウェア / アプリケーション という要素で構成されています。
サーバエンジニアが主に携わるのは ハードウェア / OS / ミドルウェア ですので、この3点について説明します。

f:id:hnaruibb:20200506161920p:plain

図2

(1) ハードウェア

サーバのハードウェアというと何か特別なものに感じるかもしれませんが、構成自体はパソコンとほぼ同じで、マザーボード(メインボード) / CPU / メモリ / ディスク / NIC(ネットワークインターフェースカード) / 電源 などで構成されています。 

f:id:hnaruibb:20200430172723p:plain

図3

パソコンとの主な違いは、各パーツの性能や冗長化による可用性の高さです。
個人が使うパソコンと異なり、サーバは複数のクライアントに対し常にサービスを提供し続けるため、PCよりも高性能なパーツが用いられます。
またそれぞれのパーツに予備パーツが備えられている場合が多く(冗長化)、片方が壊れてもシステムを継続稼働できるようになっています(高可用性)。
例えば 、電源を2つ備えたサーバは、1つが壊れたとしても壊れていない方の電源で動き続けます。
その間に壊れた電源を交換して、また冗長化した状態で運用します。

(2) OS

OS(オペレーティングシステム)は、コンピュータを操作(Operate)するためのソフトウェアです。
サーバのOSは、WindowsMacOSなどのパソコン用のクライアントOSとは異なり、サーバ用のサーバOSを用います。
主なOSにWindowsServerとLinuxディストリビューションがあり、WindowsServerはWindowsServerStandardEditionやWindowsServerDatacenterEdition、LinuxディストリビューションRHEL(RedHatEnterpriseLinux)やCentOSDebian、UbuntuServerなどがあります。
WindowsServerとLinuxディストリビューションの大まかな違いについては、下記を参考にしてください。

f:id:hnaruibb:20200507013403p:plain

表1

(3) ミドルウェア

OSとアプリケーションの中間(Middle)に位置するので、ミドルウェアと呼ばれます。
アプリケーションから要求を受け取り、OSとやり取りして結果を返すソフトウェアになります。
主なミドルウェアとして、Web、AP、DB、監視、ジョブ管理、バックアップ、高可用性クラスタなどがあります。
サーバの機能の中心となるものもあり、サーバ上で動かしているミドルウェアに応じて、○○サーバ(例えばWebサーバ)と呼ばれたりします。
また、本番環境においてはSPOF(単一障害点:Single Point of Failure)になり得るサーバは可用性を高める為、高可用性クラスタを用いてクラスタを組んでいることが多いです。

f:id:hnaruibb:20200501130210p:plain

表2

4. 仮想サーバについて

仮想サーバは、物理サーバの仮想化ソフトウェア上に構築される仮想のサーバです。
ハードウェアは仮想化ソフトウェアを動かす物理サーバのものを利用し、OS / ミドルウェア / アプリケーション は物理サーバとほぼ同じです。
残りの仮想化ソフトウェアですが、こちらはホスト(ホスト型またはホストOS型)とベアメタル(ハイパーバイザ型)の2つがあります。

f:id:hnaruibb:20200507001442p:plain

図4

 (1) ホスト(ホスト型またはホストOS型)

OS上で仮想化ソフトウェアを動作させる方式です。
例えば VMware Workstation などがこちらに該当します。 

f:id:hnaruibb:20200531100751p:plain

図5

(2) ベアメタル(ハイパーバイザ型)

物理機器上で仮想化ソフトウェアを動作させます。
OSを挟まない分、こちらの方がオーバヘッドが小さくパフォーマンスが出ます。
現場で扱うのはこちらが多いと思います。
例えば VMware vSphere ESXi や Microsoft Hyper-VLinux KVM などが該当します。

f:id:hnaruibb:20200531101456p:plain

図6

5. ミドルウェアを用いたシステム

最後に、ミドルウェアを用いたシステムの例を紹介します。
実際のシステムではミドルウェアを用いて、サーバ同士でサーバ-クライアントの関係になります。

(1) Web系のミドルウェアを用いたシステム

こちらはWebシステムの簡易図です。
この様にサーバ間でデータの要求が発生し、WebブラウザにWebページを表示しています。

f:id:hnaruibb:20200430185206p:plain

図7

(2) 運用系のミドルウェアを用いたシステム

こちらは運用系のサーバも含めたもう少し詳細なWebシステムの図です。
SPOFになり得るサーバはクラスタを組み、監視サーバが各サーバに異常がないかノード監視/プロセス監視/リソース監視などで監視します。
ジョブ管理サーバはバックアップジョブなどを定期的に実行し、監視サーバがその結果をログ監視で監視します。

f:id:hnaruibb:20200501094313p:plain

図8

6. 終わりに

今回はサーバについて書いてみました。理解の助けになれば幸いです。

 

 このブログはBulletGroupが運営しております。
BulletGroupについてはこちら

 

bltinc.co.jp