t0mmy

2020年12月30日に参加

学習履歴詳細

サーバ/インフラを支える技術

やったこと

サーバ/インフラを支える技術 ~85p

学んだこと

##冗長化のステップ

  • 障害を想定する
  • 障害に備えて予備の機材を準備する
  • 障害発生時、予備の機材に切り替える運用体制を整備する

予備系への切り替え

■前提

主系と予備系は、常に同じ設定であること。

■ホットスタンバイ
データを蓄積する、設定変更(特にソフトウェアアップデート)を頻繁に行う機器は、ホットスタンバイが良い。

■コールドスタンバイ
データを蓄積せず、設定変更がほぼない機器は、コールドスタンバイも選択肢に入る。
ルーターやスイッチなど

VIP

仮想的なIPアドレス。
引継ぎ可能であり、実IPアドレスに左右されないため、I/Fのように機能する。

ヘルスチェックの考え方

「何を確認したいか」を明確化することが重要。

Webサーバのヘルスチェック

確認したいこと : サーバの応答が正常であること
確認方法 : サービス監視(L7)

ルーターのヘルスチェック

確認したいこと : ルーターがパケットを正常に転送すること
確認方法 : 公開Webサーバあての ping(ルーター宛てだと、パケットを転送しない)

DNS ラウンドロビンについて

負荷分散の仕組みであって、冗長化の仕組みではない。
負荷分散の仕組みと冗長化の仕組みは、分けて考えること。

いまやLBは、専用アプライアンスではなく、Linux上で動作するOSSとして利用できる。

リバースプロキシ

CDN的な役割

リバースプロキシに、静的コンテンツを配布するCDNのような役割を持たせる。

静的コンテンツの配布はリバースプロキシ、動的コンテンツの配布はAPサーバ、と役割を分けることで、APサーバのリソース効率を向上させることができる。

Apacheの場合、 RewriteRule にて設定する(正規表現使用可能)。

Keep Alive 対応リソースの節約

前提として、プロセス/スレッドのメモリ消費量は次の通りと仮定する。

  • リバースプロキシ < APサーバ

クライアントとリバースプロキシ間は Keep AliveをONにする。
リバースプロキシとAPサーバ間は Keep Alive を OFFにする。

これにより、Keep Alive によるリソース消費を顕現できる。

総じて、リバースプロキシの導入により、システムの柔軟性が向上する。

Apacheの設定

  • ServerLimit : 生成できるプロセスの最大値
  • ThreadLimit : 生成できるスレッドの最大値
  • MaxClient : ServerLimit * ThreadLimit
  • ThreadPerChild : 1子プロセスあたりのスレッド数。だいたいThreadLimit。
  • ServerLimitとThreadLimitは、Apacheが確保するメモリ量に影響を与える。
  • MaxClientとThreadPerChildは、Apacheが確保したメモリ量内で、生成可能な最大値

プロセス/スレッド数設定のヒント

プロセス/スレッド数が上限に達した時、スワップが発生しない程度の値が良い。

リバースプロキシ設定例

  • 特定ホストからのリクエストをブロック
  • ロボットからのリクエストは、キャッシュサーバへ
  • 静的コンテンツは /hoge/foo/bar/へ
  • 動的コンテンツは http:APサーバ へ

など

キャッシュサーバ

Squid

プロキシとしても、キャッシュサーバとしても利用可能なOSS。
静的なコンテンツのキャッシュを得意とする一方、「動的コンテンツをT秒キャッシュする」といった柔軟な設定も可能。

ユーザごとに内容が変化するページでは、キャッシュは困難(機微な情報の流出につながる)

memcached

キャッシュソリューション。
プログラムからアクセスする。
memcachedを別サーバに立てて、ネットワーク越しにアクセスする、といった使い方が可能。

MySQL

バイナリログとリレーログ

マスタにはバイナリログ、スレーブにはリレーログ(任意でバイナリログも出力可能)が記録される。
バイナリログは、更新系のクエリを、バイナリ形式で記録する。

リレーログは、マスタから送られてきた更新系クエリを一時的に記録する。
(更新系クエリをスレーブへ反映し終えた後で、該当クエリを削除すると思われる)

ポジション情報

スレーブが保持する、以下の情報の総称

  • マスタのホスト名
  • ログファイル名
  • ログファイル中の処理したポイント

show slave status 文で確認できる。

以下がそろっていれば、最新のマスタに追従するスレーブを作成できる。

  • ある時点におけるマスタのフルダンプ
  • ポジション情報
  • マスタのバイナリログ
Infrastructure

2022年05月04日(水)

3.0時間