個人事業主サーバーサイドエンジニアがサーバの作り方を概説する

SPONSORED LINK

今回はIT業界に知識がない人向けに、エンジニアがどのようにサーバを作っているかについて概説的な内容を書いておきます。
目線は主にサーバーエンジニアから見たものです。


SPONSORED LINK

最初に書くと、サーバの作り方は会社、プロジェクト、体制、要員、スキル、予算などによって千差万別となります。
あなたが会社に入ってサーバを作るやり方として習うのであればそれが正解になります。
筆者が知っているやり方を公開したからといってあなたの会社でそれが通じるとはなりません。むしろ全く違うやり方をしている方が可能性が高いでしょう。
サーバの作り方も複数パターンがありどれが正解というのはありません。
完全にその時次第としか言いようがないです。
なので「こういうパターンで作るときもあるのか」程度に見て下さい。

ケース①物理ハードにメディアでOSをインストール(物理環境のみ)

——————————————————

[物理サーバー]

——————————————————

[マネジメントボード]

——————————————————
よくある昔ながらのやり方です。
サーバー用のハードを購入してCDやDVDのメディアからOSをインストールして設定します。
企業用では必ずサーバーハードを購入します。ケースと部品を買って自分で組み立ててというのはありません。
プロジェクトではそういうことはありませんが、新卒の研修であれば「予算以内でケースと部品を買ってきて自分でコンセプトサーバーを組み立ててプレゼンせよ」ということがあるかもしれません。
そのため個人で一度は組み立てを練習してもいいでしょう。

今回事前作業については余り書きませんが、通常はハード・OS・ミドルとの相性やドライバ問題が起きないかどうかを最初に技術検討してやる場合が多いです。
技術検討せずにいきなり買って実装という場合は、どこかで瑕疵や問題が起きることが多いです。

物理ハードに入れるケースは大きなプロジェクト、小さなプロジェクト両方で有り得ます。
ハードについては他の稼動システムなどで実績のある会社を選定することが多いです。または、営業的に取引のある会社の製品を購入するのが一般的です。
「他のシステムで動いているから」というのはITの世界でかなり強いロジックになります。

プロジェクトによりますが、システムを入れるとなると大体、見積もりを出して予算を組んでもらい、ハードとソフトの値段を決め、ハードの寸法から収納ラックを決め、場合によってはラックも買ってもらい、ラックを搬入してからハードを搬入するという流れになります。

ラックの選定は物理的な寸法の他にも収容センターの電力消費や放熱・冷却量も計算する必要があるので、ある程度経験が必要です。
ラックは通常は「耐震ラック」を購入します。また、ラックかデータセンターどちらかには、通常冷却装置が付いています。というのも、サーバーの放熱量がかなり大きいからです。

ラックの搬入・組み立ては通常専門会社の作業者が行います。
ラックコンソールやディスプレイ、サーバー筐体とのケーブリング(結線)作業も行ってもらうことが多いです。
搬入を専門とした会社のエンジニアは作業がとても早く、ケーブリングも美しく出来ます。
ラックが組み立て後、サーバーエンジニアがサーバー筐体をラッキングするかどうかは場合によって変わります。
最近のプロジェクトはラッキングも専門会社の人にやってもらうことが多いです。
OS、ミドル作業を予定しているエンジニアは、ラック作業まで視野に入れていないので、作業に回っても余り効率が良くないからです。それで通常はこの段階での作業に参加しません。

ラックにハードがラッキングされたらインフラエンジニアの出番になります。
大体、最初に電源とケーブル類を挿して電源を投入しBIOSを設定後、メディアを入れてOSのインストールを行っていきます。
サーバーハードを購入した場合、Windows系だとOSがインストールされていることもあります。
LinuxやAIXだと自分でOSを入れるパターンが多いです。

RAIDについてはハード購入時にハード会社の方でやってもらうことが大半です。購入後にインフラSEがやるというケースは先ずありません。

最近はHP ProLiantのiLOや日立HA8000のSVPなど、筐体の中にサーバーとは独立したマネジメントボードが入っていて、このマネジメントボードにアクセスすることでサーバーの電源ON/OFFも全てリモートから操作出来ます。

ネットワーク的には、マネジメントボード用のポートとサーバーのネットワークボードのポートにそれぞれケーブルを挿して別のIPを設定する感じです。
HPだとiLOのアドレスにブラウザでアクセス⇒iLO上からサーバーの電源をオン⇒サーバーが起動するという感じです。
もしこうしたマネジメントボードがないとどうなるでしょうか。

マネジメントボードがない場合

  • OSインストール作業をラック前に立ってコンソール画面を見ながらやらなければなりません。
  • OSインストール中の画面撮影をスマホやカメラで撮影して後でドキュメントに貼り付けないといけません。
  • 電源を落とすのはリモートから出来ますが、電源を上げるためにはサーバのある場所まで行って電源を入れなくてはいけません。

マネジメントボードがある場合

  • 座ってリモートから作業出来ます。
  • OSインストール中の画面撮影をPCのスクリーンショットで撮影しながらドキュメントに貼り付け出来ます。
  • 電源の落とし上げがマネジメントボードの画面から出来ます。

マネジメントボードがあれば作業の面倒くささがかなり解消されることが分かると思います。
場合によってはサーバー用のファームウェア更新メディアでサーバーのドライバをアップロードします。
OSを設定後はDBやミドルウェア等を入れていきます。
この時点ではネットワーク設定済みの筈なのでIPにリモートアクセスしてログインします。(Windowsならリモートデスクトップ、LinuxやAIXならTELNETかSSHでアクセス。)

OS設定後のタイミングで一度バックアップを行うことが多いです。
というのもDBやミドルの設定で失敗したときにOSインストール直後からであればやり直しが容易だからです。
この先に進んでからだと問題がOSなのかミドルなのか切り分けが難しくなります。
バックアップ手段は何らかのバックアップソフト+テープ装置の組み合わせで行うことが大半です。
例えばArcserve® BackupやNetVault Backup+RDXの組み合わせがあります。
バックアップソフトについて詳しく知りたい場合はこちらへ。
バックアップツールの製品一覧・比較 – IT、IT製品の情報なら【キーマンズネット】

ケース②物理ハードに仮想マネージャーを立てて仮想環境でOSやミドルをインストール(物理環境+仮想環境)

——————————————————

|—[仮想ホスト(サーバーA)]

|—[仮想ホスト(サーバーB)]

——————————————————

[物理サーバー(仮想マネージャー)]

——————————————————

[マネジメントボード]

——————————————————
例えば、WEBサーバーとDBサーバーを使いたいが、予算などの関係で物理サーバー1台に複数の仮想サーバーを入れるという時にこのやり方になります。
仮想環境を使うにも仮想マネージャー用に最低1台は物理的なサーバーが必要となるので、物理サーバーに仮想マネージャーを立てて、そこに仮想ホストを作っていくという流れになります。
物理ハードを購入してラッキングしてBIOS設定後、OSをインストールするところまでは上と同じです。
但しこのサーバーには通常仮想マネージャーのみを設定して稼動させます。

このケースの場合、予算が余りない小さなプロジェクトやインフラ規模が小さなもので行うことが多いです。
というのも巨大な予算のプロジェクトや巨大なインフラ規模の場合、仮想環境を一から立てるということは先ずないからです。やるとしたら検証環境くらいで、本番環境や商用環境で一から仮想環境を立てるということはかなり少ないです。

ログインについてはネットワーク設定をすればリモートからのログイン(Windowsならリモートデスクトップ、LinuxやAIXならTELNETかSSHでアクセス。)が可能な他、自分で仮想マネージャーを設定しているので、物理サーバーにログインして仮想マネージャー上から仮想ホストに入ることも出来ます。

このケースでは自分で仮想マネージャーも立てて仮想ホストも作ることになるので最も面倒ですが、物理と仮想両方とも環境を見ながら設定出来るので、ある意味一番やり易いとも言えます。

仮想環境については主に2種類ありHyper-VまたはVMWareとなります。シトリックス等もありますが使っている企業は少数でしょう。
WindowsサーバーならHyper-Vがデフォルトで使用出来ます。
また、VMWareの場合はWindows、Linux系どちらでも使用出来ます。
値段はVMWareの方が高いですがその分高機能です。
Hyper-Vは小規模の環境で検証的に仮想環境を立てる分にはいいと思いますが、MSの場合ライセンス体系が複雑なので、購入してから運用に入った場合予算的にOKを取れるのかどうか事前にかなり調査する必要があります。
なので一口に仮想環境と言っても、どの仮想ソフトを使うかは予算を出す企業の都合によります。

ケース③既にある仮想環境に仮想ホストを作ってもらってからOSを設定(仮想環境のみ)

——————————————————

|—[仮想ホスト(サーバーA)]

|—[仮想ホスト(サーバーB)]

——————————————————
かなり大きなプロジェクトの場合のみ、このケースが多いです。
つまり物理サーバーや物理インフラは別の会社が担当していて、こちらに見えているのは仮想インフラのみです。
なので物理的な考慮は全て別の会社に任せ、こちらは仮想環境の中の設定のみを行います。
仮想ホストを立てるのも物理サーバーの仮想マネージャー上からになるので、仮想環境が必要になったら別の会社に依頼して立ててもらうことになります。
大抵、容量の見積もりなどが絡むため、単なる連絡でなく「申請」という形を取ることになります。つまり申請書に書いて仮想環境を1台下さい、とメールなり、申請システムなりで別会社に依頼することになります。
大抵、申請書を記入する作業もインフラエンジニアがすることになります。
申請受理され、仮想環境を受領出来たら、そこから実際の設定を行っていくことになります。
この場合、こちらからは物理サーバーが見えていません。また、仮想マネージャーもブラックボックスのため使えないことが大半です。
しかし、ネットワーク的に仮想ホストにログインする分には関係ないので、受領した仮想環境のIPにリモートアクセスしてログインします。
そのためログインに必要なIDやパスワードについても設定した別会社に払い出ししてもらう必要があります。

物理が別会社で仮想環境のみを設定するケースは作業的には最も楽ですが、仮想環境のエラーが原因で物理サーバーに問題が起きる場合があり、その際別会社とトラブルになることもあるので注意が必要です。
例えばプログラムやDBが原因でファイルのサイズが肥大化し物理サーバーの容量にも影響が出てエラーを吐くといった場合があります。

OSについて(WindowsServerと商用Unix・Linux)

サーバーハードを扱う以上、OSの作業については避けて通れません。
OSは通常WindowsServerか商用Unix製品(Linuxディストリビューション・AIX・Solaris等)どちらかになります。

WindowsServerは大体2008R2か2012R2使っている所が多いですが古いものでは2003を使っている企業もあります。
WindowsServerは通常WindowsPCで慣れ親しんだGUI画面にサーバー独自のマネージャーソフトが載っている構成になっています。

商用Unix系列はLinuxディストリビューションが圧倒的に多いです。特に企業用ではRHEL(Red Hat Enterprise Linux)を使うことが大半です。
Linuxというと黒い画面にコマンドで設定するというイメージがありますがLinuxもGUIを起動するとWindowsのようなGUI画面で操作出来ます。
AIXはIBM系列企業で使われることが多いです。

WindowsServerと商用Unix・Linuxを比較した場合、Windowsの方が簡単に見えますが実際は逆です。
WindowsServerの欠点としては、以下の様な事が挙げられます。
というかほぼ欠点しかないです。

  • MSのライセンス体系が複雑
  • ドライバ絡みで分けの分からないエラーが出ることが多い
  • エラーログが見辛い(イベントビューアが見辛い)
  • ログが意味不明のことが多い
  • 元々コマンドでの設定に最適化されていない(バッチファイル、WSH、PowerShell等もあるが、Linuxほど簡単ではない)
  • 事前に設定作業を全てコマンド化しておく、ということは難しく、GUIで設定することが一般的(Windowsを全てコマンドだけで設定することは不可能ではないかもしれないが、やっている人は見たことがない)
  • ActiveDirectoryが絡む事が多い
  • 元々PCユースを中心に作られているため長期の安定稼動に向いていない

WindowsServerはサーバーOSとして見た場合非常に厄介なOSです。
特に意味不明なエラーが出た場合は長期化、深刻化しやすいです。
利点は全くWindowsServerを触った事がない作業者(運用オペレーターなど)にもGUIで取っ付きやすく説明がし易いというくらいです。

商用Unix・Linuxの場合、Windowsとは逆のことが言えます。

  • ライセンス体系はそれほど複雑ではない
  • エラーログはシスログに一本化されている
  • シスログへのエラーの出し方もカスタマイズ出来る
  • エラーログが出た場合の解決方法もある程度ベンダーやネットの情報で判断出来る
  • 元々コマンドでの設定に最適化されているため、コマンドで設定をしながらリダイレクトでログを出すことが出来る(作業ログとして保存しておけば後で解析にも使える)
  • 事前に設定内容を全てコマンド化しておき、実際の設定時にはコピー・ペーストで作業することが可能
  • 必要に応じてCUI・GUIを切り替えながら作業出来る
  • 元々サーバーユースを中心に作られているため堅牢で安定している

商用Unix・Linuxのデメリットは全くUnix系を触ったことのない作業者(運用オペレーターなど)に対して説明が難しく手順書も工夫する必要があるということです。

インフラエンジニアとプログラム

今回プログラムについても余り書く気はありませんが、触りだけ書くとインフラエンジニアもプログラムを作る事はあります。
多くの場合、Linuxではシェルで作ります。
Linuxでは自動化も簡単に行えるので、シェルを作ってCronで動作させるシェルを設定しておけば自動的にログを取ったりプログラムを夜中に走らせたりということは普通にあります。
Linuxではサーバー作業の中に通常はシェルを作る部分も含まれています。
シェルはCやJava等のプログラム言語とは全く違います。シェルではコンパイルが必要なく、コマンドを繋ぎ合わせる感じで書いていきます。

WindowsServerでもPowerShellが使えるようになっていますが、以前はバッチでプログラムを書くのが一般的でした。
バッチは書き方も独特な簡易言語のような感じで動かせば面白いですが、やはりサーバーで動かすプログラムとしては微妙という印象です。
Powershellはほとんど触った事がないのでよく分かりません。
WindowsServerではプログラムというのは余り一般的ではありません。
WindowsServerでプログラムが必要な場合、サーバーサイドエンジニアより、どちらかというとプログラマがアサインされる事が多いように思います。

SPONSORED LINK

この記事をシェアする