Skip to content
Graphviz (DOT) templates

3-Tier Network

Internet → firewall → LB → app tier → DB tier.

Template previewGraphviz (DOT)
Rendering…

Make it your own.

digraph G {
  rankdir=TB;
  graph [bgcolor="transparent", fontname="Inter", splines=ortho, nodesep=0.6, ranksep=0.8];
  node [shape=none, fontname="Inter", fontsize=11];

  Internet [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="#f1f5f9"><tr><td><b>Internet</b></td></tr></table>>];
  FW       [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="#fee2e2"><tr><td><b>Firewall</b></td></tr></table>>];
  LB       [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="#dbeafe"><tr><td><b>Load Balancer</b></td></tr></table>>];

  subgraph cluster_app {
    label="App Tier"; style="rounded,filled"; fillcolor="#ecfdf5"; color="#16a34a";
    App1 [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="white"><tr><td><b>app-01</b></td></tr></table>>];
    App2 [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="white"><tr><td><b>app-02</b></td></tr></table>>];
    App3 [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="white"><tr><td><b>app-03</b></td></tr></table>>];
  }
  subgraph cluster_data {
    label="Data Tier"; style="rounded,filled"; fillcolor="#f5f3ff"; color="#7c3aed";
    Primary [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="white"><tr><td><b>Primary DB</b></td></tr></table>>];
    Replica [label=<<table border="0" cellborder="1" cellpadding="6" style="rounded" bgcolor="white"><tr><td><b>Read Replica</b></td></tr></table>>];
  }
  Internet -> FW -> LB;
  LB -> App1; LB -> App2; LB -> App3;
  App1 -> Primary; App2 -> Primary; App3 -> Primary;
  Primary -> Replica [label="repl", style=dashed];
}