MacでVPN接続でメトリクスチェックするときにハマったこと
環境
事象
MTUのサイズ
sudo ifconfig ppp0 mtu 1000
VPNのプライオリティを上げる
「AVB/EAV」をoffにする
- Marvericsでは「AVB/EAVモード」がデフォルトでONになっている
- 「システム環境設定」を開く
- 「ネットワーク」を開く
- 「Ethernet」の「詳細...」をクリック
- 「ハードウェア」タブをクリックし、「AVB/EAVモード」の✓を外す
- 「OK」をクリック
やっと見れるようになった
- 上記設定をして、メトリクスのグラフをBrowser経由で見れるようになりました
- 忘れないうちにメモメモ
- 下記のページを参考にさせて頂きました。ありがとうございます
- 未熟者ゆえ、間違ったことを記載しているかもしれないです。
■
外付けHDDを扱うときの忘備録
2TB以上のパーティションを扱う場合
- 外付けHDDの認識された場所を確認する
- (気になるgdisk)
sudo parted -l
- パーティションをきる
sudo parted /dev/sdb
- フォーマットする
sudo mkfs.ext3 /dev/sdb1
2TB未満のパーティションを扱う場合
- 外付けHDDの認識された場所を確認する
sudo fdisk -l
- パーティションをきる
sudo fdisk /dev/sdb
- フォーマットする
sudo mkfs.ext3 /dev/sdb1
コマンドを履歴(history)に保存しない
万が一の時に備える
rmコマンドなどの破壊的コマンドを履歴に保存していて、誤ってファイルを削除してしまったりしないように対策。
zshの場合
.zshrcに下記を記述すればok
- rmを使う場合、先頭に空白を挿入
alias rm=' rm -i'
- 先頭に空白があるコマンドを履歴に保存しない
setopt hist_ignore_space
bashの場合
.bashの場合、「alias rm=' rm -i'」としても、先頭の空白がエスケープされてしまい、うまくいかない。 なので、2パターン対応方法が考えられる。
パターン1:破壊的コマンドを使用する際に、必ず先頭行に空白を入れるようにする
この場合、.bashrcには下記を記述すればok
- 先頭に空白があるコマンドを履歴に保存しない
export HISTCONTROL=ignorespace
パターン2:破壊的コマンドを正規表現で履歴から除く
この場合、下記のように.bashrcに記述すればok
- 正規表現に一致するコマンドを履歴に保存しない
export HISTIGNORE=rm*
※ この場合、「sudo rm」は履歴に保存されてしまうので、下記のように記述してあげれば良い
export HISTIGNORE=rm*:'sudo rm*'
以上です。
最後までお読み下さり、ありがとうございました。
誤っている部分がありましたら、ご指摘頂けますと幸いです。
ルータ、lvの冗長化:VRRP
VRRPの重要単語
- VRRPパケット
- 仮想IP、仮想ルータID、プライオリティなどの情報が入っている
- マスターノードからマルチキャストアドレス(244.0.0.18)へと投げられる
- 仮想ルータID
- 同一ネットワーク上で複数のlvがActiveでいても、VRRPパケットによる混乱が起きないようにするための値
- プライオリティ
- 一番値が高いBackupノードがマスターノードとなる
- Backupノードのうちどのノードがマスタノードとなるかを決めるための値
- プリエンティブモード
- ONのとき
- マスターノードよりもプライオリティが高いノードがあったら、マスターノードが稼働していてもフェイルオーバーする
- OFFのとき
- マスターノードが正常稼働していれば、プライオリティが高いBackupノードがあったとしてもフェイルオーバーしない
- ONのとき
- 仮想MACアドレス
- IPアドレスとMACアドレスの両方を引き継ぐ
- gratuitous ARPが届かない機器があるとその機器との通信が出来なくなるので、それを避けるためにいっその事MACアドレスごと引き継ごうという発想
- 主にL2スイッチのMACアドレスの学習状態の更新のためにgratitous ARPは使われる
keepalivedでのVRRPの実装
IPVSでのWebサーバの冗長化
Webサーバの冗長化の方法2種類
- DNSラウンドロビン(DNS)
- デメリット
- サーバの数だけグローバルアドレスが必要
- 均等に分散されるとは限らない(DNSへの問い合わせをキャッシュするため)
- サーバがダウンしても気づかない(ヘルスチェック、フェイルオーバーの仕組みと併用する必要がある)
- デメリット
- ロードバランサ
- 特徴
- グローバルIPをもつ仮想サーバ
- requestの中継をする
- メリット
- 一つのIPへのリクエストを複数のサーバへ振り分ける事が出来る
- ヘルスチェック機能
- デメリット
- 高価
- 運用への不安
- 特徴
IPVS(IP Vertual Server)用のミドルウェア
- ipvsadm
- keepalived
- C言語のデーモン
- ヘルスチェック機能
- ipvsadmコマンド
- 設定ファイル(/etc/keepalived/keepalived.conf)
スイッチの種類
- L4スイッチ
- L7スイッチ
- 柔軟な設定を重視したいとき
- アプリケーション層までの情報を扱える(アプリケーション層の中身まで分析して分散先を決定)
- URL
- リクエストを画像専用のWebサーバへ転送したりできる
- session情報を元に、同一のsessionIDのリクエストを同じサーバに振り分ける事が出来る
- クライアントとロードバランサの間・ロードバランサとリアルサーバの間の二つのTCPセッションが張られる
Webデータの流れ
クライアントPCからWebサーバまで
- Webブラウザからrequest
- 名前解決@DNS
- Webサーバがrequestを受け付ける
- Webサーバが静的コンテンツか、動的コンテンツかを判断
- データの取得(「システムコール」として実行)
- サーバ内のHDDから取得
- アプリケーションサーバへ問い合わせ
- NICに対してネットワーク通信がrequest
- スイッチ経由でアプリケーションサーバへの問い合わせ
Webサーバからアプリケーションサーバまで
- requestがNIC経由で、カーネルが割り込み処理として受け付ける
- スレッドがWebサーバからのrequestを受け付ける
- スレッドが「システムコール」としてDBへ問い合わせる
- DBサーバへはNIC経由で問い合わせる
アプリケーションサーバからDBサーバまで
- DBのプロセスがrequestを受け付ける
- キャッシュにあるかを確認(あればデータを返す)
- 「システムコール」としてHDDヘrequestを送る
- HDDからrequest元のプロセスへデータを送る
- プロセスはメモリにデータをキャッシュとして保存
- データ(requestの結果)をアプリケーションサーバへ送る
DBサーバからアプリケーションサーバまで
- NIC経由でデータはスレッドへ渡される
- スレッドでファイルを作成(ERBファイルからHTMLファイル作成とか)
- Webサーバへデータを送信
アプリケーションサーバからWebサーバまで
- NIC経由でスレッドへデータが渡される
- スレッドからブラウザへデータを渡す
- ブラウザへデータが反映される