11/28-1
・道理を考えてチューニングできるようになる。
・設計時にパフォーマンスを意識できるようになる。
<WEB3層システムの全体像>
スケールアウト→スケールアップが一般的な流れ
・LB 有名なのはBIGIP(最低でも1000万)
・CDN(Contents Delivery Network)・・・ファイルサイズの大きいデジタルコンテンツをネットワーク経由で配信するために最適化されたネットワークのこと。
・BI(Business Intelligence)・・・業務システムなどから蓄積される企業内の膨大なデータを、蓄積・分析・加工して、企業の意思決定に活用しようとする手法
・JOINの注意:MYSQLにはJOINのアルゴリズムは1つしかなく、かなり重い処理
性能を確かめる上で測定というのは、重要!!肌間ではだめ
便利なツール:JMeter
2.グループを作って(テスト計画、追加、setUp Thread Group)
3.サンプラーを作る(サンプラー、HTTPリクエスト)
4.表で表示を作る(追加、リスナー、結果を表で表示)
11/22-1
<データ共有の必要性>データ管理をどのように行うのかが非常に重要になります。
・ユーザ管理データ
システムを利用するユーザーグループと各ユーザの属性情報データ
・参照型データ
あまり変更されることのない静的データです。ファイル自体には変更はない(更新型データの内容が動的に付加されるだけ)
・更新型データ
RDBのデータのように頻繁に変更されるデータです。
NAS(Network Attached Storage)共有ストレージ
実際には、ネットワーク経由で利用する記憶装置の総称でいわゆるファイルサーバのこと
・NFS(network file system)
Sunが開発したプロトコルです。現在はversion3やversion4が使われていて、Internet Engineering Task Forceが開発、管理しています。
他にもCIFSやAFSやWEBDAVなどがあるが更新型のデータの管理にはむいておらずNFSがもっとも使われます。
365/24:109P-119P
SASL
//Apache(WEBサーバー)
LDAPサーバーの設定
11/21-1
ロードシェアリング
DNS型、アドレス型(NAT)型{ロードバランサを送受信で使う}、ダイレクトルーティング型{ロードバランサを受信の時だけ使う}
現場でのDNSのキャッシュ時間:DNSレコードのTTLを短く設定すすことでキャッシュによる負荷分散の不均等性をある程度、修正できる。(365日/24時間のP13)
・サーバーの数だけグローバルIPが必要
・均等に分散されるとは限らない(キャッシュ)
・サーバがダウンしてもきづかない(DNSにそのようなコントロール機能がない)
DNSバランス
DNSサーバーとして最もよく使われているBINDではダイナミックDNSをサポート
この仕組みを使って、必要に応じてDNSレコードを動的に変更する。(監視サーバーをおいて、稼動状態を監視する)
障害を感知したらDNSレコードを削除、この仕組みをDNSバランスという
またBINDは障害検知やレコードの自動書き換えの仕組みをもっていないので、ソフトウェアを自分で用意する必要がある。
ロードシェアリング
ロードバランサを使って、実サーバを組み合わせて作成されるサーバシステム全体を仮想サーバーという
LBの役割(リクエストの振り分け、サーバーの稼動チェック、実サーバーの動的追加・削除、ロードバランサ自体の二重化)
LINUXでは、このLBの機能が、LVSという名でカーネルに組み込まれている。
heartbeatはサーバーの稼働状況を確認して、LVSへ動的に設定を行うためのldirectordが同胞されている。ldirectordはheartbeatのリソース。
//365/24 18P
ロードバランサとDNSラウンドとの違い
・1つのIPアドレスでいい。
・WEBサーバでの工夫がいらない
・中継するから、仮想サーバー的な役割
・ヘルスチェックをして、だめサーバーにはリクエストを送らない
・高価
LINUXでのロードバランサ //LBにはL4スイッチとL7スイッチがある
・IPVS(L4スイッチ相当の機能) //ipvsadm(コマンドラインツール:仮想サーバの定義,リアルサーバの割り当て)とkeepalived(C言語デーモン:
設定ファイルに従って、仮想サーバの構築)のソフトを使う
スケジューリングアルゴリズム
・rr(round-robin)・wrr(wighted round-robin)・lc(least-connection)・wlc(weighted least-connection)・sed(shortest expected deleay)・nq(never queue)
//365/24 86P 参考
<ソフトウェアRAIDの実装>
・構築イメージ図作成
・構築手順書作成
・RAID1の実装
//インストールの流れをとかを書いておくと、版の管理もできる
11/18-2
アクティブ・スタンバイ(共有ディスク)
長所:データ複製をしない→更新・参照性能が劣化しない
サーバーの切り替えが自動
短所:参照性能は一台以上の処理性能にはならない
共有ディスクも冗長化する必要あり
アクティブ・スタンバイ(ネットワークミラー) //DRBD:Distributed Replicated Block Device
長所:システムデータの複製を行うため複製処理による性能劣化が少ない
参照性能は劣化しない、更新性能の劣化が最小限
短所:参照性能は一台、処理能力以上にはならない
11/18-1
//tpsは1秒間の回数
sar -q の見方:ブックマーク
冗長化とは
■障害が発生しても予備の機材でシステムの機能を継続できるようにすること
■冗長化の本質(障害を想定する、呼び機材、運用体制整備)
ルータの予備はコールドスタンバイが多い(設定変更がそんなにないから) //予備機との設定は同じにしなければならない
WEBサーバーはホットスタンバイが多い、更新された場合は、予備機には反映されるしくみをつくっておく
フェイルオーバー:現機器に障害が発生したときに自動的に処理を呼び機にひきつぐ
●ヘルスチェック:PING監視(レイヤ3)、ポート監視(レイヤ4)、サービス監視(レイヤ7)
RAID:HDの冗長化と高速化の仕組み
レベルがある
RAID0(ストライピング):複数のディスクにデータを均等にふり、同時に平行して読み書きを行う方式。ディスク高速化でストライピングと呼ばれる
最低二台必要で、データ容量は合計となり、複数のディスクをまとめて1つのディスクにみせるため、データの冗長性はない。
RAID1(ミラーリング):2つのディスクに同じデータを書き込む方法(ミラーリング).片方が壊れても、もう片方でできる。データ容量は全ディスク容量の半分
処理を高速化をすることはない、最低二台での信頼性はあがる。
RAID5:アクセス高速化+冗長化+誤り符号
//VMのハードディスク追加
仮想マシンの設定→追加→ハードディスク→仮想ディスクの新規作成→SCSI→デフォルト→完了
<ネットワークインターフェース>
故障原因:通信ドライバの不良、ネットワークカードの故障、ネットワークインターフェースのコネクタ部の故障、LANケーブルの不良、接続先のスイッチの故障
スイッチとの通信方式のネゴシエーションの失敗
<冗長化>
ボンディング:(結合インターフェース)複数のインターフェースを束ねた仮想的なインターフェースを作ることができます。(ボンディングインターフェース)
・アクティブバックアップ型(一つをアクティブ、もう一つをスタンバイにしておく)
・ラウンドロビン型(すべてを順番に利用します)//スイッチのトランキング機能が必要
<データベースの冗長化>
セマフォ:旗をたててテーブルにロックさせるみたいな!!(ロックの高機能みたいな感じ)
●アクティブステンバイモデル
・共有ディスクによるアクティブスタンバイ
・ミラーリングによる ""
●レプリケーションモデル
・動的レプリケーションモデル
・シングルマスタレプリケーションモデル
・マルチマスタレプリケーションモデル
11/17-1
補足:redmineのチケットの階層化は、依存関係を重要視して、親チケットは子チケットが完了していないと終了できない案件に使う。
例)プロジェクト→機能チケット1 → 設計書(子チケット)
→ バグ(子チケット)
→機能チケット2 ..........
MTTRを短くする
●監視の種類
・自システム監視(ソフトが正しく動作しているかをシステム内で監視)// winではMyコンピュータを右クリックで管理、パフォーマンスとログで見れる
1.プロセス監視(ソフトの動作に必要なプロセスが動いているのか)
2.ログ監視(エラーメッセージを監視)
・ネットワーク上のほかのシステム(サーバー)から監視する
1.システム監視(PING監視ICMPのechoを利用)
2.SNMP監視(ノードのリソース状態、ファイルシステム、メモリ、CPUの利用率)
3.ポート監視、アプリケーションレベルの監視
●監視の通知
メール、電話、ランプ、音
●状態管理
1.システム監視で障害発生を早期に検知できるが、障害そのものを防ぐことはできない。
→システム状態を定期的に調査し、定常状態にあるかを把握することも大切
2.OSSをつかってシステム構築した場合、オリジナルシステムといえるので、定常状態の把握は必須
●システム監視の目的
障害の早期発見、対策からシステム全体の稼働率の向上
監視の最大の目的は:障害の予防
1.定常状態を観察する
2.障害の兆候を発見
3.拡張時期を知る
4.システムの障害をいち早く発見する
●システム状態を記録する
システムの動作に関する各種の指標を定期的に観察し、その変化を知る
システムの状態把握に必要なもの
・システムの利用に関するもの(CPU利用率、システムのプロセス数)
・リソース利用状況に関するもの(ファイルデータ量、メモリ使用量)
・ソフトウェアの利用状況に関するもの(利用回数、ソフトウェアのプロセス数、ログ)
●状態の管理の観点
・ログの管理・限界値・異常な増加・異常な減少・傾向の変化
<監視>
/proc/meminfo
sarコマンド システム情報取得コマンド(CPU、メモリ、ディスク、ネットワークなどの情報を定期的に記録、出力)
オプション -u : cpu , -b : discIO , -r : メモリ, -q : プロセススケジューリング
sysstat(sar)でインストールできる。//sarコマンドはファイルに記録して10分置きに呼び出す。
// /etc/cron.d/sysstat
ネットワーク内のさまざまなサーバを集中管理 // etc/snmp/snmpd.confでversionや設定情報を見れる。
MIB-II 扱うことができる情報の規格 //情報にはOIDをふる
設定
<エージェント>
1.net-snmpパッケージのインストール
2./etc/hosts.denyファイルの編集
3./etc/hosts.allowファイルの編集(snmpd:127.0.0.1 と snmpマネージャのIP登録)
4./etc/snmp/snmpd.confファイルの編集
SNMPユーティリティ
net-snmp-utilsパッケージのインストール
<マネージャ>
MRTGを使う(htmlデータを使う)
cfgmakerコマンド cfgmaker public@[エージェントIP]