質問: ### 前提・実現したいこと 大量(数百台)のサーバ(インフラ)を構築(オンプレミス)することになりました。 まだ、正式に参画していないので導入するOSのそこまで詳しい情報はありませんが、 Active Directoryなど使うといっていたのでWindowsServerを使うのは間違いなく、他のアプリケーションでlinux系のサーバが使われるのではと想定しています。 人力でやるのは設定ミスなど多発しそうなので、 サーバの設計・構成の管理・適用を行うツールなどを利用したいと思っているのですが、そういったもののデファクトスタンダードとなるようなツールは存在するのでしょうか? また、サーバのOS設定の設計はどのような思想を持てばいいでしょうか? 例えば、 * IPのセグメントはどんな単位でグループ(マスク)するか? * どんなユーザ・グループを作り、フォルダや各サーバへのSSHのアクセス権を適用するか * パッケージの管理は誰がやるか(インフラと開発チームで分けて管理した方がよい?) * ログ出力先 * 各サーバで共通的に利用するのに必要な環境変数やシェルはどんなのが考えられるか? * アプリケーションのサーバを冗長化し、2台並べるとき、環境コピー・個別の設定の適用はどのような方法が楽か? * 共通化していいところ・わるいところ など、分からないことだらけなのですが、気を付けていることなどありましたら教えていただきたいです。
回答: > > Active Directoryなど使うといっていたのでWindowsServerを使うのは間違いなく、他のアプリケーションでlinux系のサーバが使われるのではと想定しています。 > > > 認証統合をされたいのであれば、Windows MS Active Directory または、samba4 ldapを認証基盤とし、他WindowsOS、LinuxOS、他アプリケーションの認証を統合とする方式が挙げられると思います。 認証基盤を管理される方のレベルに合わせてプラットフォームを選択する必要があると考えます。 > > 人力でやるのは設定ミスなど多発しそうなので、 > > サーバの設計・構成の管理・適用を行うツールなどを利用したいと思っているのですが、そういったもののデファクトスタンダードとなるようなツールは存在するのでしょうか? > > > 設計におけるツールの存在は確認していませんが、Linux系サーバの大量展開における構成管理/構築については構成管理フレームワークを使用するのが一般的です。 cf-engine、chef、puppet、ansible等。 Windowsも含めるならansibleがいいかもです。 > > IPのセグメントはどんな単位でグループ(マスク)するか? > > > 存在するネットワークノード数を割り出し、使用するクラスを決定する。 クラス、マスクの設計は、セキュリティ面と拡張性の兼ね合いで決定します。 セキュリティ面を考慮するのであれば、余計なノードが介在できないマスクを採用する場面もあります。 拡張性を考慮するのであれば、広めにマスクを切ることも考慮します。 あとは、ルーティングの兼ね合いで、IP形体を決定します。(これは細かい話になるので、ここでは割愛) > > どんなユーザ・グループを作り、フォルダや各サーバへのSSHのアクセス権を適用するか > > > 基本的には、人為的ミスが起こりにくい、判別しやすいものを採用すべきと考えますが、用途によって変ってくると思います。 例えば、苗字1部+氏名とした場合、高校の例を挙げると毎年登録する必要性がでてきます。 これをIDとすると、3学年分のIDを用意するのみで、毎年の登録の手間が省けるなど。 システム要件と照らし合わせて設計すべきと考えます。 グループも同様と考えます。 ただし、アクセス権等の設定はグループ単位で行えるほうが効率が良いと思うので考慮して設計すべきと考えます。 > > パッケージの管理は誰がやるか(インフラと開発チームで分けて管理した方がよい?) > > 開発側のパッケージはセンシティブなので、開発チーム側に任せるべきと考えますが、開発チームがインフラに詳しい方でない場合は申請するような仕組みを作りインフラ側で管理するのも良いと思います。 > > > ログ出力先 > > > Linux系のログはsyslog転送の仕組みを使って、1つのサーバに纏めると管理しやすいと思います。 その場合、ディスク容量のサイジングが必要になります。 Windowsは好みですね。Windows側でもsyslog転送できるツールがあれば、Linuxに転送するのもありです。(文字コードとか気をつける必要がありそうですが...) Linux系において追加したログについては、ログローテートをすることを忘れずに。 > > 各サーバで共通的に利用するのに必要な環境変数やシェルはどんなのが考えられるか? > > > 何をしたいかに拠ります。広義すぎてご回答差し上げることができません。 > > アプリケーションのサーバを冗長化し、2台並べるとき、環境コピー・個別の設定の適用はどのような方法が楽か? > > > Windowsであれば、MSFC、WSFCまたは、サードパーティ性のクラスタソフトウェアで実現できると思います。 Linux系であれば、Hertbeat、HA、Pacemaker、DRBDなどでしょうか。 > > 共通化していいところ・わるいところ > > > 共通化って何を共通と定義しているのでしょうか?