アットウィキロゴ

サーバー関連のFAQページ

OpenSSH

Samba

Apache

概説

NFSを使うとネットワーク上のファイルシステムをローカルと同じようにマウントできる。

NFSはUNIX由来の技術だが、Windowsとmixされた環境で使う場合は、Windowsネットワークのフリーソフトウェア実装であるSambaを使うこともできる。たとえば、Windowsをプリンタサーバにして、Sambaで繋いだりできる。
また、NISを使うことで、ネットワークにつながった各コンピュータで認証情報(ログインユーザ名・パスワード)を共通化できる。UNIXの優れた点はこうしたネットワーク性にあると言われる。NFSとNISはSun Microsystemsによる技術。
ほかに、OpneLDAPを使うことで、ディレクトリと呼ばれるデータベースから、ネットワークに繋がったネットワーク機器やユーザー認証情報などに一元的にアクセスできる。
その他ネットワーク関係の技術としては、WebサーバのApache, Nginx(Apacheにはプロセス・スレッドが10,000を超すと不安定になるC10K問題があり、たくさんのスレッドを作成せずイベント駆動でやりとりするNginxが最近流行っている)や、ProFTPDやvsftpdなどのFTPサーバ、lftpなどのFTPクライアント、Windowsとファイルやプリンタを共有できるSamba、メール関係ソフトウェア(MTA・メールサーバ)のsendmail(設定ファイルの形式が超難解), qmail, postfix, eximなどがある。
また、Linuxでは仮想化システムのDockerを使うことができる。Linuxカーネル上で隔離された仮想化コンテナプロセスを起動することができる。Dockerでは、Linuxカーネルの基本的な設定を引き継ぎながら、プロセスとファイルシステムを隔離し、コンテナ上で実行できる。Docker Hubを使うことで、簡単にRailsサーバなどのコンテナイメージを導入・共有できる。また、Kubernetesを使うことで、ネットワークで繋がったクラスタ環境を一台のホストとして仮想化した上でDockerの仮想化システムを実現できる。使うのは簡単だが概念が難しい(ここまで書いていて意味が分からない人は多いかもしれない)が、実際の開発現場ではDockerは開発環境で本番環境を再現するために使う。RailsサーバとMySQLサーバのように、複数のコンテナを連携させるには、Dockerに加えてYAMLでコンテナの構成情報を記述するDocker Composeを使う。
サーバの管理にはSSHを用いてリモートから接続してコマンドを実行する。以前はtelnetやrloginだったが、これらはパスワードなども含めて平文で送受信するため、公開されたインターネットの普及した現在ではセキュアなシェルとしてSSHを用いる。できるだけパスワード認証を使わず、公開鍵暗号通信を用いること、root認証を許可しないこと、デフォルトのポートを変えることなどがSSHにおけるセキュリティ対策の基本。
サーバマシンでないならXのネットワーク透過を使うとか、GNOMEのCORBAとかD-Busとかの分散システムを使ってネットワーク上のシステムを構築することもできる。CORBAやD-Busは、インターフェース記述言語によって、ネットワーク・言語・プラットフォームの垣根を越えてコンポーネントが通信し合う「分散オブジェクト」と呼ばれる技術。MicrosoftのCOMを元にしている。このような分散システムにはほかにRPC(遠隔手続き呼び出し)やJavaのRMI/JavaBeans/EJBなどがある。
LinuxやFreeBSDなどのUNIXには、タスクがたくさんあって高負荷になってもきちんと動くという特徴がある。このため、クラスタだけではなく、中小から大企業まで、サーバーによく使われる。逆に、WindowsのようなGUIで仕事をするデスクトップOSには不向きである。UNIXはインフラとして使うサーバ、Windowsはゲームの延長線上の仕事をするマシンに使うといいだろう。

クラスタ用語

Linuxはサーバやクラスタにおいてよく使われている。
クラスタについては、性能を重視するHPCクラスタと、信頼性を重視する可用性クラスタがある。Linuxで可用性クラスタをやりたいなら、Heartbeatやその後継のPacemakerが使える。
冗長化とは、サーバのデータ(特にデータベース)をコピーして、一部のデータが破損しても代わりが存在するように多重化すること。
フェイルオーバとは、サーバがダウンしても別のサーバが代わりのサーバを務めること。
ロードバランサとは、サーバの負荷を分散させるため、複数のサーバに処理を分担させる仮想的なサーバのこと。クライアントからの要求を仮想サーバに伝え、クライアントからはロードバランサがサーバであるかのように見える。LinuxではLVSなどのロードバランサ技術がある。
また、仮想サーバのリソースを管理する技術をワークロード管理と呼ぶ。主なワークロード管理ソフトウェア(ジョブスケジューラ)としてSlurmなどがある。
スループットは、単位時間あたりの処理数。これに対してレイテンシとよばれる実際の時間から応答時間を割り出す単位もある。
ネットワークは、大部分が円滑に動いていても、一番細くなっている部分が制限されていると、全体の速度が遅くなる。これをボトルネックと呼ぶ。
IBMのメインフレームのような大型コンピュータは、とても高い信頼性と性能を誇る反面、拡張性が低く、一度作ったシステムを拡張しようと思った時に巨額の追加資金がかかる。こうしたシステムを「中央集約型アーキテクチャ」と呼ぶ。
これに対して、俗に「オープン系」と呼ばれる、UNIXやC/C++/Javaのような「標準的OS・言語」を用いてクラスタを築く方法が増えている。こうしたシステムを「分散型アーキテクチャ」と呼ぶ。
最近は、クラウドと言って、ネットワーク上にコンピュータ資源が存在し、業者が管理する中でそうした「ネットワーク上のリソース」の上でシステムを築く手段も増えている。
だが、クラウドは手軽で安価な反面、物理マシンが自社内になく、管理もしづらいという欠点がある。クラウドに対してオンプレと呼ばれる、「自社内にシステムを構築し、自社で管理する」という方式もとられることが増えている。
最近のエンタープライズシステムは、Webクライアント、Webサーバ、APサーバ、DBサーバで構築されることが多い。これはWebブラウザを端末として使い、サーバを3段階構成にしたもので、LinuxであればApache, Java EE (WebならRuby on Rails), MySQLといった構成が多い。

最終更新:2026年01月07日 22:30