Continue(s)

Twitter:@dn0t_ GitHub:@ogrew

「インフラエンジニアの教科書」を読んだ。Part1

知り合いの勧めで購入した「インフラエンジニアの教科書」がとても良かったので紹介させていただきます。
(実はその友人は「インフラエンジニアの教科書2」を本当は勧めたかったようですが...)

買ってからわかったことなのですが、著者の方がLINEのインフラエンジニア @sanonosa とのことで(Twitterフォローしてた!)、教科書という名前ほど内容も硬いものではなく、普段の業務でのインフラエンジニアの立ち振る舞い方など現場目線の話が多く、インフラ素人人間でも読んでいて面白かったし為になるものでした。

twitter.com

ちょうど読み終わったので、ここでは読みながら並行して僕がとっていたメモを載せておきます。

強調しておきますが、ここに書いたものはあくまでメモであり、もしこの記事を読んでる人で手元に本書がなく(そしてインフラの知識をつけたいのであれば)ぜひ購入して欲しいと思います。おすすめです。

インフラエンジニアの教科書

インフラエンジニアの教科書

まず目次から。

●CHAPETR 01 インフラエンジニアの仕事

●CHAPETR 02 サーバ

●CHAPETR 03 OS

●CHAPETR 04 ネットワーク

●CHAPETR 05 ストレージ

●CHAPETR 06 購買と商談

●CHAPETR 07 データセンター

●CHAPETR 08 ソリューションとセキュリティ

●CHAPETR 09 インフラ運用

●CHAPETR 10 大規模インフラ

●CHAPETR 11 インフラエンジニアの成長


CHAPTER1「インフラエンジニアの仕事」

特になし

CHAPTER2「サーバ」

サーバの種類

ラックマウント型サーバとタワー型サーバ
- ラックマウント型...サーバラック内に機器を収納していくスタイル
- タワー型...でかい、おもい、うるさい
IAサーバとエンタープライズサーバ
- IAサーバ...インテル互換CPU搭載、通常のPCと動揺のアーキテクチャをベースに設計されたもの。ベンダーや機種によって多少勝手が異なることもある。
- エンタープライズサーバ...主に基幹系に使われるようなサーバ。IAサーバよりも基本的に高価。

※値段や性能に応じて、エントリー→ミドル→ハイエンドサーバと呼ぶことも。
※わざわざ書かないが、サーバと普段使いのパソコンの違いとは何か、みたいな初歩的な説明もしっかりとされている。

サーバの選定

サーバスペックの決め方
1. 実際の環境を試験的に構築し、測定結果から判断
2. 借り着目下スペック機器を本番投入し、実際のリソース利用状況を測定してパーツを増減させる
3. 消去法でスペックを絞り込む
スケールアップとスケールアウト
- スケールアウト…性能が足りなくなったら「サーバ台数を増やそう!」
- スケールアップ…性能が足りなくなったら「パーツを追加 or 上位互換に交換!」

※負荷分散の難易度によるが、多くの場合可能であればスケールアップのほうが望ましい

CPU

<用語>
- ソケット数…CPUの個数
- コア数…主要計算部。複数ある場合、マルチコアと呼ぶ。
- スレッド数…1つあたりのコアで処理できる数
- 動作周波数…1秒間に刻むクロック数。高ければ高いほど、処理は早くなるが、当然電力効率は下がり発熱も増える。

メモリ

<用語>
- スロット数…メモリを挿すマザーボード上にある口の数。何枚挿せるか。
- チャネル…デュアルチャネルにすることで2枚一組でデータ転送幅を倍にすることができる。トリプルやクアッドでも動揺。ただし、マルチチャネルにする場合、各プロセッサでのメモリ構成は同一である必要性がある。
- ランク…メモリコントローラがメモリ上のDRAMからデータを入出力する単位。1つのランクは64bitの単位で入出力される。

※シングルランク、デュアルランク、クアッドランクがある。DRAMチップの集合体としてのメモリ。シングルランクであれば、1枚のメモリに64bit分のDRAMチップが搭載。デュアルランクであれば、128bitのDRAMチップが搭載。
メモリ表記の味方

「4GB 2R✕8 PC3L - 10600R -90 - 1D - B0 - P1」
4GBのメモリでダブルランク8bitのチップを使用していて、DDR3の低電圧、最大データ転送速度が約10.67GB/sのレジスタ付き。

メモリの挿し方ルール
1. 各プロセッサでメモリ構成が同じになるようにしなければならない。
2. RDIMMとUDIMMは混在できない。
3. 各チャネルに搭載するメモリは同一種類にしなければならない。
4. 低電圧メモリと非低電圧メモリは混在可能な場合が多い。
5. ECCメモリと非ECCメモリは原則混在できない。

RAID

複数のHDDを一つのドライブのように認識させて稼働させる技術のこと。

カリフォルニア大学バークレー校のDavid A.Patterson氏、Garth Gibson氏、Randy Katz氏の共同論文「A Case for Redundant Arrays of Inexpensive Disks(安価なドライブを組み合わせることで冗長性を持たせる仕組み)」より

RAIDには1−5(正確には0や6も)のレベルが存在しているが、現在も利用されているのはRAID1とRAID5の2種類。

参考サイト(http://buffalo.jp/products/catalog/storage/raid/

仮想化

物理サーバと仮想サーバ
- 物理サーバ…CPU使用率、ディスクI/O負荷、ディスク使用容量が大きい用途に向く。データベースサーバやアプリケーションサーバ向き。
- 仮想サーバ…CPU使用率、ディスクI/O負荷、ディスク使用容量が小さい用途に向く。Webサーバや開発サーバ、メモリDBなど。
☆物理サーバを仮想化する
  • メリット
- コストダウン
- ゲストOSのハードウェアリソースの増減が容易。
- ゲストOSなら他の新しい物理サーバになっても、そちらで仮想環境を良いすれば、移行が容易。 
  • デメリット
- あるゲストOSが多量のハードウェアリソースを使うと、当然他のゲストOSの動作は不安定になる。
- 使われなくなったゲストOSを撤去し忘れがち。(管理の問題)
仮想化環境の種類

<有償ソフト>

- VMware vSphere (VMware社)
- Hyper-V(Microsoft社)

<オープンソース>

- Xen(Linux Foundation)
laaS型クラウドとして世界最大規模のAWSの「EC2」が利用していることで有名。Linuxカーネル3系ではXenのコードがマージされているため、カーネルを変更することなく、XenのホストOSとゲストOSのいずれにも利用可能となった。
- KVM(Red Hat社の子会社)
イスラエルのQumranet社にて開発。発表2ヶ月でLinuxカーネルにマージされた。現在は標準機能。Red Hatによる買収後は、RHELバージョン6以降Xenのサポートは修了、KVMのみのサポートとなった。

クラウド(IaaS)

クラウドSaaSとPaaSとIaaSの3種類に分類。

- SaaS(Software as a Service)        ... アプリケーションをサービスとして提供
- PaaS(Platform as a Service)        ... アプリケーション実行環境をサービスとして提供
- IaaS (Infrastructure as a Service) ... システムインフラをサービスとして提供
  • IaaSの特徴
- 物理サーバを持たずに済むため、それを管理するエンジニアが不要。
- 物理サーバを持たずに済むため、利用したい分だけサーバ増強が可能。
- 利用申請後、短期間でOSがインストールされた状態ですぐ使える。
- 使った分だけ費用が発生する従量課金制。
AWS

IaaSで世界最大規模。日本には東京リージョン(場所)が存在。中核サービスにはEC2S3がある。

- Amazon EC2(Elastic Compute Cloud)
仮想サーバを提供。1時間単位の従量課金制。使うOSとサーバスペックによって単価が異なる。
- Amazon S3(Simple Strage Service)
仮想ストレージを提供。1ヶ月単位の従量課金制。使うデータサイズと重要度によって単価が異なる。
クラウド環境でのインフラの利用

クラウドベンダーから仮想サーバのインスタンス、もしくは物理サーバの使用権を借り受け、リモートで各種設定を行うことでサーバ機能を利用する。

- スケールアップには弱い。(ベンダーによっては仮想サーバだけでなく物理サーバを提供するサービスを行っている場合もある。)
- 物理サーバに障害が発生しても、自分たちでは何もできない。(復旧を待つのみ。)ただし、直ちに別の物理サーバでインスタンスを起動するといった対処方法もある。
- クラウドベンダーの手違いで重要なデータがなくなるリスクと隣り合わせ。

Chapter3以降は次回。