GDNSD-PLUGIN-WEIGHTED(8) gdnsd GDNSD-PLUGIN-WEIGHTED(8) (NAME) gdnsd-plugin-weighted - gdnsd <<>> (weighted) (SYNOPSIS) : plugins => { weighted => { multi = false # default service_types = up up_thresh => 0.5 # default corpwww => { lb01 = [ lb01.example.org., 99 ] lb02 = [ lb02.example.org., 15 ] lb03 = [ lb03.example.org., 1 ] } frontwww6 => { service_types = up multi = true wwwhost01 = [ 2001:db8::123, 4 ] wwwhost02 = [ 2001:db8::456, 1 ] wwwhost03 = [ 2001:db8::789, 2 ] } pubwww => { service_types = [ web_check, foo ] up_thresh => 0.01, pubhost01 = [ 192.0.2.1, 44 ] pubhost02 = [ 192.0.2.2, 11 ] pubhost03 = [ 192.0.2.3, 11 ] pubhost04 = [ 192.0.2.4, 11 ] } cdnwww => { service_types = web_check datacenter1 => { d1-lb1 = [ 127.0.0.1, 2 ] d1-lb2 = [ 127.0.0.2, 2 ] } datacenter2 => { d2-lb1 = [ 127.0.0.3, 2 ] d2-lb2 = [ 127.0.0.4, 2 ] d2-lb3 = [ 127.0.0.5, 1 ] } } mixed => { multi => false, addrs_v4 => { lb1 = [ 127.0.0.3, 2 ] lb2 = [ 127.0.0.4, 2 ] } addrs_v6 => { multi => true www6set1 = { lb01 => [ 2001:db8::123, 4 ] lb02 => [ 2001:db8::456, 1 ] } www6set2 = { lb01 => [ 2001:db8::789, 4 ] lb02 => [ 2001:db8::ABC, 1 ] } } } cn => { service_types = my_cn_check foo = [ lb01.example.org., 99 ] bar = [ lb02.example.org., 15 ] } } } (Zonefile RRs) example.com: www.corp 300 DYNC weighted!corpwww www6.front 300 DYNA weighted!frontwww6 www 300 DYNC weighted!pubwww cdn 300 DYNA weighted!cdnwww mixed-a 300 DYNA weighted!mixed cnames 300 DYNC weighted!cn (DESCRIPTION) gdnsd-plugin-weighted ( ) CNAME (dynamic-weighted) . - (CONFIGURATION - TOP LEVEL) : "service_types" "up_thresh" "multi". "multi" CNAME . (override) . "service_types" CNAME . "service_types" "up" gdnsd . gdnsd.config(5) . "multi" "true" "false" "false" . "multi" . "up_thresh" "(0.0 - 1.0]" 0.5 / (failover) . . - (CONFIGURATION - PER-RESOURCE) "services_types" "multi" "up_thresh" . : ) . "addrs_v4" "addrs_v6" . . (RRs) "service_types" "multi" "up_thresh" . ) CNAME. ( IPv4 IPv6 CNAME) . CNAME "DYNC" "DYNC" "DYNA" . - CNAME (CONFIGURATION - CNAMES) cname "[ CNAME, WEIGHT ]" "DYNC" CNAME . (THE UNGROUPED SINGLE CASE) CNAME "multi" . CNAME ( "." ) "DYNC" CNAME "DYNC" . - (CONFIGURATION - ADDRESSES) "addrs_v4" "addrs_v6" ( ) . "DYNA" ( gdnsd Additional A/AAAA ). (multi -> true/false ) : (ungrouped-single) (ungrouped-multi) (grouped-single) (grouped-multi). : (THE UNGROUPED SINGLE CASE) . "multi" false () . "[ IPADDR, WEIGHT ]" . . "UP" "DOWN" . "addr_dynamic_weight / total_dynamic_weight" . "total_dynamic_weight" "ceil(up_thresh * total_configured_weight)" "UP" (meta-plugin) ( metafo geoip) . (X addrs_v4 ): X => { multi => false # default # odds below assume no addresses are down: lb01 => [ 192.0.2.1, 45 ] # 25% chance (45/180) lb02 => [ 192.0.2.1, 60 ] # 33% chance (60/180) lb03 => [ 192.0.2.1, 75 ] # 42% chance (75/180) } (THE UNGROUPED MULTI CASE) ( ) "[ IPADDR, WEIGHT]" "multi" true . . ("maximum") ( ) : "addr_dyanmic_weight / max_dynamic_weight". "DOWN" . ( ) "DOWN" . "up_thresh" : "ceil(up_thresh * total_configured_weight)" "UP" (geoip metafo) . : X => { multi => true # odds below assume no addresses are down: lb01 => [ 192.0.2.1, 45 ] # 75% chance (45/60) lb02 => [ 192.0.2.1, 60 ] # 100% chance (60/60) lb03 => [ 192.0.2.1, 60 ] # 100% chance (60/60) # overall possible result-sets: # lb01,lb02,lb03 -> 75% # lb02,lb03 -> 25% } (THE GROUPED SINGLE CASE) "[ IPADDR, WEIGHT]". "addrlabel => [ IPADDR, WEIGHT ]" . : X => { group1 => { lb01 => [ 192.0.2.1, 10 ] lb02 => [ 192.0.2.1, 20 ] lb03 => [ 192.0.2.1, 30 ] } group2 => { lb01 => [ 192.0.2.7, 10 ] lb02 => [ 192.0.2.8, 20 ] lb03 => [ 192.0.2.9, 30 ] } } "multi" "false" () . grouped-single . (multi-style) . "group_dyn_weight / total_dyn_weight" ( "DOWN" ) . "addr_dyn_weight / group_max_dyn_weight" . "up_thresh" "DOWN" "ceil(up_thresh * total_sum_configured_weight)" "UP" . (THE GROUPED MULTI CASE) . grouped-single . . . (GENERAL NOTES ON ADDRESS MODE CASES ABOVE) ( multi true multi false ) . "30, 30, 30, 20, 20" ( ) . (grouped-single): grouped-single . DNS << >> ( ). (grouped-multi): ( ). grouped-multi N ( ) (round-robin) / . (failover) . (LIMITS) 2^20 () . cname ( addrs_v4/addrs_v6) . (SEE ALSO) gdnsd.config(5), gdnsd.zonefile(5), gdnsd(8) gdnsd. (COPYRIGHT AND LICENSE) (c) Anton Tolchanov Brandon L Black Jay Reitz gdnsd . gdnsd-plugin-weighted : ( ) . gdnsd-plugin-weighted . . gdnsd-plugin-weighted . : . gdnsd 3.8.3 2026-04-04 GDNSD-PLUGIN-WEIGHTED(8)