Wheezyにlibgraph-easy-perlを導入、ASCIIでネットワーク図を描く。

■はじめに。
 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     |
                      +---------------+