どうもこんにちは。
今日はblockdiagでちょっと複雑な、でも業務で使う図を作ってみて、細かい要望をwishlistにしてみます。
なんてわがままな私でしょう!
ちなみに作成した図はアプリケーション構成を表す図です。
厳密に記法など決めているわけではないですが、
トラブルシュートなどのときに大まかな構成を把握するのに使います。
できた図 & wishlist
- ネストしたグループのラベルが重ならないようになってほしい
- ネストしたグループのサイズがきっちりになるので、大きい方は少し余裕をもったサイズになってほしい
- ノード間接続のラベルが重ならないようになってほしい
- ノード間接続のラベルのサイズを自動拡張してほしい(…にならないように)
- apache -> mysqlのところとか、disk -> diskのところとか、ノード間接続で直角線コネクタと曲線が選べるといいなぁ
- ノードの縦サイズをテキスト内容にあわせて自動拡張してほしい(特に改行が入っている場合)
apache -> diskのところは縦一列にならんでくれるとキレイだなぁ- apache -> diskのところを子groupにすることで解決できた!(2012.1.5追記。ソース未反映)
誰かなんとかしてくれないかなぁ。
自分で書けって話かなぁ。時間かかりそうだ。。。
ソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | 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;}; }; } |
