2016-06-06 1 views
0

J'ai une question à propos du serveur PowerDNS Authoritative. J'ai quatre serveurs DNS avec le serveur PowerDNS Authoritative installé à partir de zéro sur quatre emplacement. Ils travaillent avec MySQL dans le backend. problème est:La réplication de PowerDNS ne fonctionne parfois pas?

  1. Quand j'ajouter une nouvelle zone ou mettre à jour la zone existante tout se propagent OK, sans erreur, mais si je teste l'incident et le service stoping sur un DNS, plus tard, quand je démarrage le service, la zone que j'ajouter en attendant ne pas se propager. Où est le problème?

  2. Si je décide d'ajouter un nouveau serveur DNS, aucune zone ne sera propagée. Comment puis-je résoudre ce problème? question

général, quel est l'avantage de PowerDNS s'il ne peut pas mettre à jour automatiquement la zone après un problème de catastrophe ou la connectivité?

+0

PowerDNS peut très certainement mettre à jour les zones après les pannes. Il doit y avoir quelque chose qui ne va pas avec votre configuration. Cependant, vous avez donné presque zéro détails - s'il vous plaît montrer la configuration, le contenu de la base de données, les fichiers journaux autour du problème, etc – Habbie

Répondre

0

J'ai créé une base de données par docs pdns.

nom de la base de données powerdns.

CREATE TABLE domains (
    id     INT AUTO_INCREMENT, 
    name     VARCHAR(255) NOT NULL, 
    master    VARCHAR(128) DEFAULT NULL, 
    last_check   INT DEFAULT NULL, 
    type     VARCHAR(6) NOT NULL, 
    notified_serial  INT DEFAULT NULL, 
    account    VARCHAR(40) DEFAULT NULL, 
    PRIMARY KEY (id) 
) Engine=InnoDB; 

CREATE UNIQUE INDEX name_index ON domains(name); 


CREATE TABLE records (
    id     INT AUTO_INCREMENT, 
    domain_id    INT DEFAULT NULL, 
    name     VARCHAR(255) DEFAULT NULL, 
    type     VARCHAR(10) DEFAULT NULL, 
    content    VARCHAR(64000) DEFAULT NULL, 
    ttl     INT DEFAULT NULL, 
    prio     INT DEFAULT NULL, 
    change_date   INT DEFAULT NULL, 
    disabled    TINYINT(1) DEFAULT 0, 
    ordername    VARCHAR(255) BINARY DEFAULT NULL, 
    auth     TINYINT(1) DEFAULT 1, 
    PRIMARY KEY (id) 
) Engine=InnoDB; 

CREATE INDEX nametype_index ON records(name,type); 
CREATE INDEX domain_id ON records(domain_id); 
CREATE INDEX recordorder ON records (domain_id, ordername); 


CREATE TABLE supermasters (
    ip     VARCHAR(64) NOT NULL, 
    nameserver   VARCHAR(255) NOT NULL, 
    account    VARCHAR(40) NOT NULL, 
    PRIMARY KEY (ip, nameserver) 
) Engine=InnoDB; 

CREATE TABLE comments (
    id     INT AUTO_INCREMENT, 
    domain_id    INT NOT NULL, 
    name     VARCHAR(255) NOT NULL, 
    type     VARCHAR(10) NOT NULL, 
    modified_at   INT NOT NULL, 
    account    VARCHAR(40) NOT NULL, 
    comment    VARCHAR(64000) NOT NULL, 
    PRIMARY KEY (id) 
) Engine=InnoDB; 

CREATE INDEX comments_domain_id_idx ON comments (domain_id); 
CREATE INDEX comments_name_type_idx ON comments (name, type); 
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); 


CREATE TABLE domainmetadata (
    id     INT AUTO_INCREMENT, 
    domain_id    INT NOT NULL, 
    kind     VARCHAR(32), 
    content    TEXT, 
    PRIMARY KEY (id) 
) Engine=InnoDB; 

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); 


CREATE TABLE cryptokeys (
    id     INT AUTO_INCREMENT, 
    domain_id    INT NOT NULL, 
    flags     INT NOT NULL, 
    active    BOOL, 
    content    TEXT, 
    PRIMARY KEY(id) 
) Engine=InnoDB; 

CREATE INDEX domainidindex ON cryptokeys(domain_id); 

CREATE TABLE tsigkeys (
    id     INT AUTO_INCREMENT, 
    name     VARCHAR(255), 
    algorithm    VARCHAR(50), 
    secret    VARCHAR(255), 
    PRIMARY KEY (id) 
) Engine=InnoDB; 

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); 

J'ai créé l'utilisateur et j'autorise toutes les permissions à la base de données.

Je mis valeur dans SUPERMASTER ('IP master", 'ns.slave', 'admin');

fichier de configuration du serveur maître:

launch=gmysql 
gmysql-host=localhost 
gmysql-user=powerdns_user 
gmysql-dbname=powerdns 
gmysql-password=password 

allow-recursion=0.0.0.0/0 
allow-axfr-ips=IP_address_slave1/32 
allow-axfr-ips=IP_address_slave2/32 
allow-axfr-ips=IP_address_slave3/32 
config-dir=/etc/powerdns 
daemon=yes 
disable-axfr=no 
guardian=yes 
local-address=0.0.0.0 
local-port=53 
log-dns-details=on 
loglevel=7 
module-dir=/usr/lib/powerdns 
master=yes 
slave=no 
setgid=pdns 
setuid=pdns 
socket-dir=/var/run 
version-string=powerdns 
include-dir=/etc/powerdns/pdns.d 

fichier de configuration de l'esclave:

launch=gmysql 
gmysql-host=localhost 
gmysql-dbname=powerdns 
gmysql-user=powerdns_user 
gmysql-password=password 

allow-recursion=0.0.0.0/0 
config-dir=/etc/powerdns 
daemon=yes 
disable-axfr=yes 
guardian=yes 
local-address=0.0.0.0 
local-port=53 
log-dns-details=on 
loglevel=7 
module-dir=/usr/lib/powerdns 
master=no 
slave=yes 
slave-cycle-interval=60 
setgid=pdns 
setuid=pdns 
socket-dir=/var/run 
version-string=powerdns 
include-dir=/etc/powerdns/pdns.d 

Lorsque j'ajoute zone maître que je vois dans le journal, toute propagation est correcte et c'est correct. Mais si j'arrête le service sur l'un des serveurs esclaves et ajoute une zone, je vois dans la propagation du journal sur tous les esclaves actifs. Quand je démarre pdns après quelques minutes de test (arrêt de pdns), les esclaves n'ont rien fait. Ne pas avoir notifié dans le journal pour cette zone.

+0

Peut-être, question légère. :) Comment puis-je démarrer la réplication manuelle? Est-ce que enyone le sait? – Petar