Skip to content

Commit 3fe0370

Browse files
author
Sumit Jamgade
committed
desginate: simplify sample pool and modify it for HA (SCRD-9142)
in crowbar's world the dns-master is the master of all and slaves forward all queries to dns-master. Under such a configuration there is no need to query other nameservers as they still forward the query to dns-master. So designate can just verify on one nameserver(dns-master) and dns-master will take care of passing that info to all slaves. Same goes for also_notifies: dns-master will notify all slaves in case of either zone or recordset is updated/deleted. this also further simplifies the designate pool config reducing the time required to create zone and recordsets. Also having multiple nameservers confuses designate in some cases as according to these nameserver designate is not authoritative of some zones and recordsets. hiddenmasters are designate-mdns services, in HA this service will be running on multiple hosts and any host can be asked to update the zone (when a recordset, corsspoding to a vm is created) on th real-master so all have to be listed as master in the pool. The host with VIP will use that ip as the outgoing ip when connecting to the real-master, so it should also be named as master for the zone
1 parent 797307d commit 3fe0370

File tree

1 file changed

+16
-8
lines changed
  • chef/cookbooks/designate/recipes

1 file changed

+16
-8
lines changed

chef/cookbooks/designate/recipes/mdns.rb

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,18 @@
2020

2121
dns = node_search_with_cache("roles:dns-server").first
2222
dnsmaster = dns[:dns][:master_ip]
23-
dnsslaves = dns[:dns][:slave_ips].to_a
24-
dnsservers = [dnsmaster] + dnsslaves
2523

26-
network_settings = DesignateHelper.network_settings(node)
24+
# hidden masters are designate-mdns services, in ha this service will be running on multiple
25+
# hosts and any host can be asked to update the zone (when a recordset, corsspoding to a vm is
26+
# created) on th real-master so all have to be listed as master in the pool.
27+
hiddenmasters = node_search_with_cache("roles:designate-server").map do |n|
28+
{ "host" => Barclamp::Inventory.get_network_by_type(n, "admin").address, "port" => 5454 }
29+
end
30+
31+
# the host with VIP will use that ip as the outgoing ip when connecting to the real-master
32+
if node[:designate][:ha][:enabled]
33+
hiddenmasters += [{ "host" => CrowbarPacemakerHelper.cluster_vip(node, "admin"), "port" => 5354 }]
34+
end
2735

2836
# One could have multiple pools in desginate. And
2937
# Desginate needs to have a default pool, this pools
@@ -36,16 +44,16 @@
3644
# non-hardcoded is high enough
3745
pools = [{
3846
"name" => "default-bind",
39-
"description" => "Default BIND9 Pool",
47+
"description" => "Sample Pool for designate",
4048
"id" => "794ccc2c-d751-44fe-b57f-8894c9f5c842",
4149
"attributes" => {},
4250
"ns_records" => [{ "hostname" => "#{dns[:fqdn]}.", "priority" => 1 }],
43-
"nameservers" => dnsservers.map { |ip| { "host" => ip, "port" => 53 } },
44-
"also_notifies" => dnsslaves.map { |ip| { "host" => ip, "port" => 53 } },
51+
"nameservers" => [{ "host" => dnsmaster, "port" => 53 }],
52+
"also_notifies" => [],
4553
"targets" => [{
4654
"type" => "bind9",
47-
"description" => "BIND9 Server 1",
48-
"masters" => [{ "host" => network_settings[:mdns_bind_host], "port" => 5354 }],
55+
"description" => "BIND9 Server on node with role dns-server",
56+
"masters" => hiddenmasters,
4957
"options" => {
5058
"host" => dnsmaster,
5159
"port" => 53,

0 commit comments

Comments
 (0)