■はじめに。
nwdiagやblockdiagでPNGやSVG出力出来るのは良いけど、
そこまで必要ないときやむしろテキストオンリーで管理したいとき。。。
chrootのwheezy/sidにnwdiagを導入する
http://d.hatena.ne.jp/labunix/20130321
nwdiagでネットワーク図を描いてみた。
http://labunix.hateblo.jp/entry/20121104/1352031606
blockdiagで遊ぶ
http://labunix.hateblo.jp/entry/20130407/1365341897
Wheezy/SqueezeでOpenVPNを使って暗号化なしのお手軽VPNで接続する
http://labunix.hateblo.jp/entry/20130610/1370869975
■Wheezyにlibgraph-easy-perlを導入、ASCIIでネットワーク図を描く。
$ sudo apt-get install -y libgraph-easy-perl
■「ASCII」の出力サンプル。
$ man graph-easy | grep -A 13 ^EXAMPLES
EXAMPLES
ASCII output
echo "[ Bonn ] -- car --> [ Berlin ], [ Ulm ]" | graph-easy
+--------+ car +-----+
| Bonn | -----> | Ulm |
+--------+ +-----+
|
| car
v
+--------+
| Berlin |
+--------+
■参考
Graph::Easy - Manual - Introduction
http://bloodgate.com/perl/graph/manual/index.html
■例えば前回のVRRPによる仮想IPのイメージ。
Master/Backupのどちらかがレスポンスを返す。
Wheezy/Squeezeにkeepalivedを導入、VRRPで仮想IPにアクセス。
http://d.hatena.ne.jp/labunix/20130618
$ echo -e "\n\n"; echo "graph { flow: north; } [ Client] \
<-- GET/Reponse --> [ Keepalived-vrrp VIP\n(ipvsadm) ] \
<-- Master/Backup --> [ vrrp100\n(Web2) ] , [ vrrp200\n(Web1) ]" | graph-easy
+---------------------+
| vrrp100 |
| (Web2) |
+---------------------+
^
|
| Master/Backup
v
+---------------------+ +---------+
| Keepalived-vrrp VIP | Master/Backup | vrrp200 |
| (ipvsadm) | <---------------> | (Web1) |
+---------------------+ +---------+
^
|
| GET/Reponse
v
+---------------------+
| Client |
+---------------------+
■LVSでは以下のようなイメージ。
「LVS VIP」はサービスを提供する「仮想IP」なので、keepalivedを使わないIPでも良い。
Web1とWeb2が順番にレスポンスを返す。
$ echo -e "\n\n"; echo "graph { flow: north; } [ Client] \
<-- GET/Reponse --> [ LVS VIP\n(ipvsadm) ] \
<-- rr --> [ Web2 ] , [ web1 ]" | graph-easy
+--------------+
| Web2 |
+--------------+
^
|
| rr
v
+--------------+ +------+
| LVS VIP | rr | web1 |
| (ipvsadm) | <----> | |
+--------------+ +------+
^
|
| GET/Reponse
v
+--------------+
| Client |
+--------------+
■VRRP+LVSのイメージ。
Master/BackupのどちらかのVIPで受けて、順番にレスポンスを返す。
$ echo -e "\n\n"; echo "graph { flow: south; } [ Client ] <-- GET/Response --> \
{ flow: north; } [ VRRP+LVS ] <-- or/rr --> [ vrrp100 ] , [ vrrp200 ]" | graph-easy
+---------+ or/rr +---------------+ or/rr +---------+
| vrrp200 | <-------> | VRRP+LVS | <-------> | vrrp100 |
+---------+ +---------------+ +---------+
^
|
| GET/Response
v
+---------------+
| Client |
+---------------+