どうもこんにちは。
今日はblockdiagでちょっと複雑な、でも業務で使う図を作ってみて、細かい要望をwishlistにしてみます。
なんてわがままな私でしょう!
ちなみに作成した図はアプリケーション構成を表す図です。
厳密に記法など決めているわけではないですが、
トラブルシュートなどのときに大まかな構成を把握するのに使います。
できた図 & wishlist
- ネストしたグループのラベルが重ならないようになってほしい
- ネストしたグループのサイズがきっちりになるので、大きい方は少し余裕をもったサイズになってほしい
- ノード間接続のラベルが重ならないようになってほしい
- ノード間接続のラベルのサイズを自動拡張してほしい(...にならないように)
- apache -> mysqlのところとか、disk -> diskのところとか、ノード間接続で直角線コネクタと曲線が選べるといいなぁ
- ノードの縦サイズをテキスト内容にあわせて自動拡張してほしい(特に改行が入っている場合)
apache -> diskのところは縦一列にならんでくれるとキレイだなぁ- apache -> diskのところを子groupにすることで解決できた!(2012.1.5追記。ソース未反映)
誰かなんとかしてくれないかなぁ。
自分で書けって話かなぁ。時間かかりそうだ。。。
ソース
diagram {
internet [shape="cloud"];
firewall[label="firewall\n(shared)"];
vip_lb[label="VIP",shape="beginpoint"];
keepalived_lb01[label="keepalived"];
keepalived_lb02[label="keepalived"];
keepalived_lb01 -- vip_lb[folded];
keepalived_lb02 -- vip_lb[folded];
proxy_web01[label="proxy"];
apache_web01[label="apache+php"];
disk_web01[label="disk",shape=flowchart.database];
proxy_web01 -> apache_web01;
apache_web01 -> disk_web01[folded];
proxy_web02[label="proxy"];
apache_web02[label="apache+php"];
disk_web02[label="disk",shape=flowchart.database];
proxy_web02 -> apache_web02;
apache_web02 -> disk_web02[folded];
mysql_db01[label="mysql\n(master)",shape=flowchart.database];
mysql_db02[label="mysql\n(slave)",shape=flowchart.database];
mysql_db01 -> mysql_db02[folded,label="replication"];
internet -> firewall -> vip_lb;
vip_lb -> proxy_web01,proxy_web02;
apache_web01,apache_web02 -> mysql_db01[label="insert/update"];
apache_web01,apache_web02 -> mysql_db02[label="select"];
disk_web01 -> disk_web02 [folded,label="rsync"];
group lb_group {
color="#882222";
textcolor="#660000";
shape=line;
style=dashed;
label="Clusterd Load Balncer";
group lb01_group{label="lb01";keepalived_lb01;};
vip_lb;
group lb02_group{label="lb02";keepalived_lb02;};
};
group production_group {
color="#882222";
textcolor="#660000";
shape=line;
style=dashed;
label="production";
group web01_group{label="web01";proxy_web01;apache_web01;disk_web01};
group web02_group{label="web02";proxy_web02;apache_web02;disk_web02};
group db01_group{label="db01";mysql_db01;};
group db02_group{label="db02";mysql_db02;};
};
stg-proxy_web01[label="proxy"];
stg-apache_web01[label="apache"];
stg-disk_web01[label="disk",shape=flowchart.database];
stg-apache_web01 -> stg-disk_web01[folded];
stg-mysql_db01[label="mysql",shape=flowchart.database];
vip_lb -> stg-proxy_web01;
stg-proxy_web01 -> stg-apache_web01;
stg-apache_web01 -> stg-mysql_db01;
group staging_group {
color="#882222";
textcolor="#660000";
shape=line;
style=dashed;
label="staging";
group stg-web01_group{label="stg-web01";stg-proxy_web01;stg-apache_web01;stg-disk_web01};
group stg-db01_group{label="stg-db01";stg-mysql_db01;};
};
}