Skip to content

PowerDNS Upgrade Problem

Jan Poctavek edited this page Oct 12, 2020 · 15 revisions

Note: fixed in DC release v4.3.

PowerDNS is the integrated DNS service running on the dns01.local (esdc-dns) zone in the admin virtual datacenter of your Danube Cloud deployment.

  • PowerDNS in version >=4.1 is not currently compatible with Danube Cloud.
  • PowerDNS in version 4.0.x does not work correctly with the database running on mgmt01.local VM with Danube Cloud <=3.0.0-rc2.

Affected users

  • Anyone who has installed a first Danube Cloud compute node using the USB image esdc-hn- version 3.0.0-rc1 or 3.0.0-rc2.
  • Anyone who has manually updated PowerDNS on the dns01.local VM to version >=4.0.

You can run svcs -x and examine the /var/adm/messages log file in the dns01.local VM to find out whether PowerDNS is working correctly.

Cause

PowerDNS 4.1 has changed the deployment model for the recursor and authoritative server. More information can be found here: https://doc.powerdns.com/authoritative/changelog/4.1.html#change-4.1.0 and here: https://doc.powerdns.com/authoritative/guides/recursion.html

Furthermore, PowerDNS 4.0 has switched its SQL backends to use prepared statements. Prepared statements are not compatible with the transaction pooling model in PgBouncer running on the management server.

Due to our wrong assumptions about the pkgsrc release process, we have fully updated all packages in the esdc-dns image to the latest available version. PowerDNS 4.1 packages got into the current pkgsrc release in January 2018.

Fix

  1. First, make sure that you are running the latest version Danube Cloud (>=3.0.0-rc3) on the management server.
    • In 3.0.0-rc3, the PgBouncer pooling mode was changed to session.
  2. SSH into the first compute node and from there SSH or zlogin to the dns01.local zone.
  3. Inside dns01.local:
    [root@dns01 ~] cat /etc/pkgsrc_version
    [root@dns01 ~] PKGSRC_VER=2016Q4    # set to your version
    [root@dns01 ~] wget https://pkgsrc.erigones.org/packages/SmartOS/$PKGSRC_VER/x86_64/All/powerdns40-4.0.5nb1.tgz \
                         https://pkgsrc.erigones.org/packages/SmartOS/$PKGSRC_VER/x86_64/All/powerdns40-pgsql-4.0.5.tgz \
                         https://pkgsrc.erigones.org/packages/SmartOS/$PKGSRC_VER/x86_64/All/powerdns40-recursor-4.0.8.tgz
    [root@dns01 ~] pkgin remove powerdns powerdns-pgsql pdns-recursor
    [root@dns01 ~] pkg_add powerdns40-4.0.5nb1.tgz powerdns40-pgsql-4.0.5.tgz powerdns40-recursor-4.0.8.tgz
    [root@dns01 ~] svcadm restart pdns pdns-recursor
    [root@dns01 ~] svcadm clear pdns pdns-recursor
    • If DNS does not work, add some working DNS server temporarily into /etc/resolv.conf (e.g. 8.8.8.8).
    • You can check /etc/pkgsrc_version to find out the used pkgsrc release (only 2017Q4 and 2016Q4 are supported).

Details:

We have created custom powerdns40 packages for 2017Q4 and 2016Q4 pkgsrc releases and updated PgBouncer configuration on the management server. More information can be found here: https://github.com/erigones/esdc-factory/issues/113

Clone this wiki locally