はじめに
図解即戦力インフラエンジニアの知識と実務がこれ1冊でしっかりわかる教科書
インフラの基礎知識を知るため読んでみました。オレンジ文字部分は、個人的に気になったことや調べたことになります。
Ch. 1 ITインフラの基礎知識
【主な構成要素】
- ネットワーク(機器)
- サーバ
- OS
- ミドルウェア
- ストレージ
- (ケーブル類)
ITインフラに最も要求されることは、常に安定して稼働すること
Ch. 2 インフラエンジニアの仕事と仕組み
クラウドサービス事業者とは
高速なインターネット回線と高性能なコンピュータ、大容量のストレージを有したデータセンターを保有しており、膨大な物理的リソースの上で、仮想化されたインフラを提供している
- 用途に応じた適切な規模のインフラを検討
- 監視で障害の前兆を捉え、障害に至る前に対応できるものはする
Ch. 4 インフラエンジニアになるには
【土台となる仕組みの知識】
- NWの仕組み
- インターネット
- TCP/IP
- サーバの仕組み
- ユーザ権限
- プロセス
- シェル
【機器の操作の知識】
- NW機器の操作
- ルータの設定
- FWの設定
- クラウドの操作
- OSの操作
- Linuxの操作
- Windows Serverの操作
【TCP/IP】
インターネットやLANなど、近年のNWのほとんどでデータの送受信に使われている通信プロトコル
【情報収集】
- デザインパターン
- ホワイトペーパー
- ベストプラクティス
Ch. 5 インフラの概要
| NW種別 | 規格 |
|---|---|
| LAN | イーサネット |
| WAN | PPP |
| 有線or無線 | 規格 |
|---|---|
| 有線LAN | イーサネット |
| 無線LAN | Wi-Fi |
【サーバ】
提供するサービスによって各種のサーバソフトウェアをインストールする。複数のサーバソフトウェアをインストールして、1台のサーバマシンを複数の用途で使うこともできる
- Webサーバ
- Apache、Nginxなど
- APサーバ
- DBサーバ
- Oracle、MySQL、PostgreSQLなど
- メールサーバ
- DNSサーバ
- 監視サーバ
- ストレージサーバ
- ストレージ:コンピュータにおいてデータを保存する装置のこと
- RAID:ストレージのディスクを多重化した冗長構成とすることで信頼性を上げる手法
【プライベート(ローカル)IPアドレス】
LANのような、閉じられた範囲内で運営されるネットワーク。クラスA、クラスB、クラスCがあるが、今はCIDRという仕組みがあるのであまり関係ない...?
【グローバル(パブリック)IPアドレス】
プロバイダなどインターネットへの接続を提供する事業者から割り当てられる。ICANNという非営利組織が管理
【NAT、IPマスカレード、NAPT】
プライベートIPアドレスとグローバルIPアドレスを相互変換する仕組み。ルータなどのネットワーク機器に内蔵されている
【ハブ】
LANにおいて機器同士を接続する際の中継装置
| 種類 | 機能 |
|---|---|
| リピータハブ | 単純な配線の分配。現在ではほとんど使われない |
| スイッチングハブ | 現在の主流。通信している者同士だけを接続する |
| VLAN | グループ化して、グループが異なる者同士は互いに通信できないようにする |
| L3スイッチ | ルータと同様にデータの宛先を確認し、適切な機器にデータを送る |
【ネットワークアドレス】
TCP/IPでは、ハブで直結して通信できるのは、ネットワークアドレスが同じ同士の場合だけ
しかし、なぜ同じネットワーク内だったらルータを経由せずARPでホストのMACアドレスを出して直接通信するのかわからない。全部ルータ経由にすればシンプルなのでは?
【ルータ】
NW同士を接続する。ルータは2つ以上のポートを持ち、両方のNWに接続し、それぞれのNWに属するIPアドレスを設定する。ルータがNWの出入口となる
【GW】
ルータを設置したら、それぞれのNWに属するホストに対し、ルータのIPアドレスを自NWのGWとして設定する
【RT】
あるNW宛のGWはどこなのかという情報の一覧
| パターン | 起こること |
|---|---|
| ホストにRTが設定されている場合 | ホスト自身がRTに従って「このNWに行くならこのGW」と判断する |
| ホストにデフォルトGWのみ設定されている場合 | ホストはすべての外部通信をGWに送信し、受け取ったルータがRTに従って転送し、最終的に目的NWに到達する。このときルータのRTは手動(静的)または自動(動的ルーティングプロトコル)で設定される |
▼この画像の172.16.1.1って、172.16.0.1では?と思ったり...

【ルータ自体を初期設定する方法】
- シリアル接続
| NW種別 | 接続方法 |
|---|---|
| LAN | ケーブル、ハブ |
| WAN | 専用線、広域イーサネット、IP-VPN、インターネットVPN。オンプレの場合、データセンター~クラウド間、データセンター~オフィス間を接続することも |
| 回線名 | 説明 |
|---|---|
| 専用線 | 通信事業者が敷設した回線を独占的に使用 |
| 広域イーサネット | 社内LANなどで使われる有線LANの仕組みを用いる |
| IP-VPN | 通信事業者が運用する閉じた通信網上に、仮想的なNW(VPN)を構築する。インターネットと同じTCP/IP通信を用いる |
| インターネットVPN | インターネット上に暗号化された仮想的な通信網を作る。インターネットVPN対応のルータを用意すれば、インターネットの費用だけで利用できる。インターネットの通信速度に左右される |
【Linux】
OSの中核部分であるカーネル。単体ではOSとして使えない
【Linuxディストリビューション】
OSとして動かすためのコマンドやツールなどを含んだパッケージ
- Windows
- Windowsサーバ
- Linux
- RedHat系
- Debian系
- Slackware系
- 独立系
【SSH】
暗号化した通信でコンピュータを遠隔操作するための仕組み
【SSL/TLS】
- クライアントがSSL通信のリクエストをサーバへ送信する
- サーバはデジタル証明書をクライアントに返す
- クライアントはデジタル証明書のデジタル署名を見て、証明書が正当なものかどうか確認する
- クライアントは共通鍵を生成する
- クライアントは④をデジタル証明書についている公開鍵で暗号化する
- クライアントは⑤をサーバに送る
- サーバは⑤を受け取り、サーバにインストールしてある秘密鍵で復号して④を得る
- クライアントとサーバ双方が共有鍵を保持した状態になり、暗号化通信ができるようになった
【デジタル証明書】
- サーバは秘密鍵と公開鍵を作る
- 公開鍵を、認証局と呼ばれる企業や団体に送付して、デジタル証明書(公開鍵+認証局のデジタル署名)を発行してもらう
- 秘密鍵はサーバにインストールしておく
| 名前 | 説明 |
|---|---|
| DV証明書 | ドメインの存在を証明する |
| OV証明書 | 企業の存在を証明する |
| EV証明書 | OVに加え、怪しい企業ではないことを証明する |
【HTTP/HTTPS追加調査】
HTTPSを使う場合は認証局から証明書が必要(レッツエンクリプトなどでもいいので)。
証明書がない場合はHTTPSは使えず、HTTPで通信することが多い。
【ロードバランサ】
外部からのアクセスが来た際に、配下の複数台のサーバに対して、負荷を平均的にするよう、アクセスを振り分ける
【CDN】
インターネット上の各所にオリジナルのWebページの情報をキャッシュしたキャッシュサーバを設置。オリジナルのWebページの情報が更新されるまでは大元のサーバへの接続が発生しなくなり、負荷が軽減できる。
【セキュリティ】
- 不正なアクセスを防ぐ
- 正当なユーザか
- 許可された場所からのアクセスか
- FW
- ルータに「どのようなアクセスは許可するのか」という設定をする仕組み
- 踏み台サーバ
- ファイアウォールの抜け穴
- 脆弱性に対応する
- アップデートの適用
- ログを残す
Ch. 6 インフラの設計
- 要件で構成が決まる
- NW構成図で大枠を決める
- 機器の選定と設計書の作成
- 過去の実績を参考に設計する、将来を見越して設計する
【非機能要件】
- 可用性
- 稼働率
- 冗長性
- 予備設備
- 負荷分散
- バックアップ手法、バックアップ先
- 性能・拡張性
- 信頼性
- 負荷分散
- 1ユーザあたりに必要な処理(50,000b)×同時接続数1000人=50Mbpsの通信速度が必要
- サーバの台数
- 同時接続数
- 応答速度
- 回線容量
- スループット
- セッション数
- 運用・保守性
- 移行性
- セキュリティ
- システム環境・エコロジー
- (費用感と承認)
【ネットワーク設計】
階層構造。1つのNWにすべての機器を接続するのではなく、いくつかの小さなNWに分け、それらが階層構造で接続された大きなNWとして設計
- 通信速度の向上
- セキュリティの向上
【DMZ】
インターネットのような外部NWと、社内LANなどの内部NWの双方から接続される領域。DMZから内部NWへ接続することはできない。
【ゼロトラストセキュリティ】
内部・外部といった区別なしに、NW上のどこであろうと同等のセキュリティ対策をする設計
【SNMP】
NW機器の管理、監視、制御を行うプロトコル
管理対象の機器に内蔵されたSNMPエージェント機能を有効にすると、機器の情報を送信できる。NW上にSNMPマネージャ(ソフトウェア)をインストールしたサーバなどを用意する。
Ch. 7 インフラを構築する
- 事前の準備と検証
- 作業計画書、テスト手順書
- 当日の作業内容を記録
- 疎通確認、動作確認
- 負荷テスト、セキュリティテスト
- CPU使用率、メモリ使用率
| コマンド | 効果 |
|---|---|
| ping | 指定した通信相手に小さなデータ(パケット)を送信し、応答の有無によりNWの接続状態を確認する |
| traceroute | 通信相手までの経路情報を表示 |
注
NWに接続したサーバには、第三者がアクセスしてくる可能性がある。特定の送信元からしか接続できないようFWを設定するか、少なくとも管理者アカウントにPWを設定しておく
【ansible】
ソフトウェアのインストールを自動化する仕組み
Ch. 8 インフラの運用
【監視】
- 死活監視
- ping監視
- SWの応答まで含めて確認(特定の機能を呼び出す)
- 改ざん監視
- メトリクスの監視
- NW
- 送受信量
- 送受信エラー数
- サーバ
- 送受信量
- 送受信エラー数
- CPU・メモリ使用率
- ディスク書き込み・読み込みバイト数
- ディスク残量
- ファン回転数
- 負荷
- NW
- ログ
【障害対応】
- 異常を定義する
- 警告
- エラー
- 運用計画書に従って作業する
- エスカレーションフロー
- 保守計画
- OSやアプリケーションのアップデート
- サービス稼働を維持しながらの保守
- リプレースではデータの移行を考慮する
- B/Gデプロイ
Ch. 9 安定したインフラを構築するために
【単一障害点】
故障するとシステム全体が影響を受けるような箇所。冗長性を向上させるために、単一障害点は極力少なく
【SLAの主な項目】
- サービス提供時間
- オンライン稼働時間
- 障害回復目標時間
- システム応答時間
【カオスエンジニアリング】
エラー時に正しい対応が行われるかを確認する方法
Ch. 10 インフラ業界でのステップアップ
【大規模システム】
- 開発規模の大きなPJ
- アクセス数、データ量の多いシステム
【アクセス数やデータが増大するタイミングを読む】
- 特定の時刻
- 大量のデータのフェッチ
- 表示速度、接続、応答の公平性(先着、ゲームなど)
【DB】
- DBの垂直分割
- テーブルを列ごとに分割。頻繁に参照されるテーブルの項目を最適化(参照されない列は別テーブルへ)することで、参照時に発生するアクセス数を減らし、処理負荷を軽減
- DBの水平分割(シャーディング)
- テーブルを行ごとに分割。デメリットとして、分割後に項目の追加・削除が生じた際には、分割したすべてのテーブルに対して変更を適用しなくてはならない
【インメモリ】
ユーザの使用中にユーザデータが頻繁に変わるシステムでは、DBの内容をサーバのメモリ上で読み書きし、時間を遅らせてクラウドやデータセンターに送るようにキャッシュ処理することで高速化を図る
| 技術 | 説明 |
|---|---|
| DNSラウンドロビン | 同じドメイン名に対応するサーバマシンを複数用意し、それぞれ異なるIPアドレスを割り当ててアクセスを振り分ける |
| リバースプロキシ | DNSラウンドロビンの手法の一つで、本サーバの代わりに接続を受けて処理する。ミラーサーバともいう(プロキシはアクセス要求を代行するが、リバースプロキシはアクセスされた方の代理になる) |
| memcashed | 複数のキャッシュサーバで分散インメモリ処理を行うソフトウェア。MySQLなどのRDBと組み合わせて読み書きを高速化できる |
| Redis | キャッシュ用途など |
- ローレベルのSW開発
- ファームウェア
- デバイスドライバ
- OS
- ハイレベルのSW開発
- バックエンド
- フロントエンド
【アプリ側からできること】
- 非同期・並列処理
- Webソケット
- Webページの脆弱性
おわりに
基礎知識と、事前の計画が大事ということかなと理解しました。
実務でインフラに携わる機会はそんなに多くないと思うのですが、もしあれば学んだ知識が活かせたらいいなと思います。
