Skip to content

Commit

Permalink
desginate: simplify sample pool and modify it for HA (SOC-9142)
Browse files Browse the repository at this point in the history
In crowbar's world the dns-master is the master of all and slaves
forward all queries to dns-master. When designate is enabled,
designate-mdns service component(s) become the hidden master(s).

We leave 'also_notifies' empty. It can be configured by the users
via designate-manage utility as and when needed.

designate-mdns service components, in HA, will be
running on multiple hosts and any host can be asked to update a zone
(when a recordset, corresponding 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.
  • Loading branch information
Sumit Jamgade authored and Ritesh Anand committed Aug 16, 2019
1 parent 797307d commit 081e89f
Showing 1 changed file with 15 additions and 7 deletions.
22 changes: 15 additions & 7 deletions chef/cookbooks/designate/recipes/mdns.rb
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,23 @@

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

network_settings = DesignateHelper.network_settings(node)
# hidden masters 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, corresponding to a vm is
# created) on the real-master so all have to be listed as master in the pool.
hiddenmasters = node_search_with_cache("roles:designate-server").map do |n|
{ "host" => Barclamp::Inventory.get_network_by_type(n, "admin").address, "port" => 5354 }
end

# the host with VIP will use that ip as the outgoing ip when connecting to the real-master
if node[:designate][:ha][:enabled]
hiddenmasters += [{ "host" => CrowbarPacemakerHelper.cluster_vip(node, "admin"), "port" => 5354 }]
end

# One could have multiple pools in desginate. And
# Desginate needs to have a default pool, this pools
# id is hardcoded in the designate conf. By reusing that
# id we let designate know how crowbar's deployement of
# id we let designate know how crowbar's deployment of
# dns servers looks like.
# This pool id can be generated by in proposal, but this will change
# with every delete/create cycle of proposal. This might mess
Expand All @@ -41,11 +49,11 @@
"attributes" => {},
"ns_records" => [{ "hostname" => "#{dns[:fqdn]}.", "priority" => 1 }],
"nameservers" => dnsservers.map { |ip| { "host" => ip, "port" => 53 } },
"also_notifies" => dnsslaves.map { |ip| { "host" => ip, "port" => 53 } },
"also_notifies" => [],
"targets" => [{
"type" => "bind9",
"description" => "BIND9 Server 1",
"masters" => [{ "host" => network_settings[:mdns_bind_host], "port" => 5354 }],
"description" => "BIND9 Server on node with role dns-server",
"masters" => hiddenmasters,
"options" => {
"host" => dnsmaster,
"port" => 53,
Expand Down

0 comments on commit 081e89f

Please sign in to comment.