HAProxy y Apache Cluster con 4 nodos

Dejo aquí un manual para montar un cluster de Apache con dos nodos y dos balanceadores con HAProxy.

Montaremos dos Balanceadores (HAProxy) en modo activo-pasivo. Así mismo tendremos un keepalive que en caso de caída del nodo principal del balanceador, el secundario pasa adquirir la IP virtual, que es desde donde se conectan los cliente.

En los balanceadores configuraremos para que detecten si algún nodo de Apache esta caído, en caso de haber uno caído, las peticiones se dejaran de enviar a dicho nodo.

Los balanceadores están configurados en modo Round-robin (distribución equitativa de la carga entre nodos)

Esta es la estructura lógica de la plataforma:

Empezamos con la configuración de los nodos de apache:

AP1 y AP2

vim /etc/apache2/apache2.conf

Modificamos la configuración de los logs par ano tener problemas con las ip’s de los balanceadores.

[...]
#LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
[...]

Configuramos un fichero para la comprovación del keepalive. Lo que vamos hacer es crear un fichero, que desde los balanceadores se va a comprobar constantemente para ver si el servicio esta funcionando correctamente.

vim /etc/apache2/sites-available/default

añadimos lo siguiente:

[...]
SetEnvIf Request_URI "^/keepalive.balancer$" dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog
[...]

Podriamos poner por ejemplo el fichero principal de la web (index.htm, index.php etc..) pero los accesos a dicho fichero (desde balanceador o desde clientes) no quedarian reportados.

Creamos el fichero en cuestión:

touch /var/www/keepalive.balancer

Nota! Esto se tiene que hacer en los dos nodos de apache

Ahora vamos a configurar los balanceadores:

BAP1 y BAP2

apt-get install haproxy

Hacemos un backup de la configuración original:

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_old

cat “” > /etc/haproxy/haproxy.cfg

vim /etc/haproxy/haproxy.cfg

Dentro copiamos la siguiente configuración:

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        maxconn 4096
        user haproxy
        group haproxy
defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
listen webfarm 192.168.0.204:80                     # IP VIRTUAL
       mode http
       stats enable
       stats auth user:pass                         #USUARIO DE STATS
       balance roundrobin
       cookie JSESSIONID prefix
       option httpclose
       option forwardfor
       option httpchk HEAD /check.txt HTTP/1.0
       server Nodo1 192.168.0.230:80 cookie A check #IP NODO 1 APACHE
       server Nodo2 192.168.0.231:80 cookie B check #IP NODO 2 APACHE

Modificamos el fichero:

vim /etc/default/haproxy

y ponemos el ENABLE=0 a:

ENABLED=1

Nota: Esto se tiene que hacer en los dos nodos del Balanceador

Procedemos a la instalación de keepalive:

apt-get install keepalived

Modificamos el HAProxy para poder usar la IP virtual:

vim /etc/sysctl.conf

Agregamos al final del fichero:

net.ipv4.ip_nonlocal_bind=1

Ejecutamos:

sysctl –p

Ahora procedemos a configurar el NODO1 del Balanceador como Master:

vim /etc/keepalived/keepalived.conf

Agregamos:

vrrp_script chk_haproxy {           # Requires keepalived-1.1.13
        script "killall -0 haproxy"     # cheaper than pidof
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}
vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 101                    # 101 on master, 100 on backup
        virtual_ipaddress {
            192.168.0.204               # IP virtual
        }
        track_script {
            chk_haproxy
        }
}

Iniciamos el master:

/etc/init.d/keepalived start

Ahora podemos ver si el balanceador principal esta usando las 2 Ip’s (la fisica y la virtual)

ip addr sh eth0

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:50:56:85:66:3b brd ff:ff:ff:ff:ff:ff

inet 192.168.0.202/24 brd 192.168.0.255 scope global eth0

inet 192.168.0.204/32 scope global eth0

inet6 fe80::250:56ff:fe85:663b/64 scope link

valid_lft forever preferred_lft forever

Ahora modificamos el Balanceador secundario:

vim /etc/keepalived/keepalived.conf

Agregamos al fichero:

vrrp_script chk_haproxy {           # Requires keepalived-1.1.13
        script "killall -0 haproxy"     # cheaper than pidof
        interval 2                      # check every 2 seconds
        weight 2                        # add 2 points of prio if OK
}
vrrp_instance VI_1 {
        interface eth0
        state MASTER
        virtual_router_id 51
        priority 100                    # 101 on master, 100 on backup
        virtual_ipaddress {
            192.168.0.104               # IP Virtual
        }
        track_script {
            chk_haproxy
        }
}

Iniciamos el servicio:

/etc/init.d/keepalived start

Si realizamos el siguiente comando:

ip addr sh eth0

Vemos que el nodo secundario no esta usando la IP Virtual

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

link/ether 00:50:56:85:58:16 brd ff:ff:ff:ff:ff:ff

inet 192.168.0.203/24 brd 192.168.0.255 scope global eth0

inet6 fe80::250:56ff:fe85:5816/64 scope link

valid_lft forever preferred_lft forever

Ahora ya podemos iniciar el HAProxy en los dos nodos del Balanceador:

/etc/init.d/haproxy start

Ya tenemos nuestro cluster con dos apaches y dos balanceadores y su keepalive activado.

Para las prubas de los frontales podemos parar el BA1 (Balanceador Principal) y ver como sigue funcionando y el secundario ya tiene configurada la IP Virtual.

Para las prubeas de los backends (apache) podemos para uno u otro y desde la web de stats del balanceador ver como estan trabajando

Asignar disco virtual a un FS existente en Linux

Este procedimiento indica los pasos a realizar una vez tenemos disco asignado por parte de VMWare.

Comprobamos que el sistema haya detectado el nuevo disco que previamente nos ha asignado VMWare, en este caso sdc, lo hacemos con el comando fdisk –l

[root@linux ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1305 10377990 8e Linux LVM

Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13054 104856223+ 8e Linux LVM

Disk /dev/sdc: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdc doesn’t contain a valid partition table

Revisamos los FS actuales para comprobar el montaje del FS que queremos ampliar don df -h

[root@linux ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
100G 81G 14G 86% /
/dev/sda1 99M 26M 69M 27% /boot
tmpfs 2.8G 4.0K 2.8G 1% /dev/shm

Con lvmdiskscan comprobamos el formato que tiene el nuevo disco sdc:

[root@linux ~]# lvmdiskscan
/dev/ramdisk [ 16.00 MB]
/dev/root [ 102.31 GB]
/dev/ram [ 16.00 MB]
/dev/sda1 [ 101.94 MB]
/dev/VolGroup00/LogVol01 [ 7.53 GB]
/dev/ram2 [ 16.00 MB]
/dev/sda2 [ 9.90 GB] LVM physical volume
/dev/ram3 [ 16.00 MB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb1 [ 100.00 GB] LVM physical volume
/dev/sdc [ 50.00 GB]
4 disks
16 partitions
0 LVM physical volume whole disks
2 LVM physical volumes

Formateamos el disco a LVM (Logical Volume Manager) con fdisk

[root@linux ~]# fdisk /dev/sdc
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won’t be recoverable.

The number of cylinders for this disk is set to 6527.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6527, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-6527, default 6527):
Using default value 6527

Command (m for help): t
Selected partition 1
Hex code (type L to list codes): L

0 Empty 1e Hidden W95 FAT1 80 Old Minix bf Solaris
1 FAT12 24 NEC DOS 81 Minix / old Lin c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 82 Linux swap / So c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 83 Linux c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 84 OS/2 hidden C: c7 Syrinx
5 Extended 41 PPC PReP Boot 85 Linux extended da Non-FS data
6 FAT16 42 SFS 86 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS 4d QNX4.x 87 NTFS volume set de Dell Utility
8 AIX 4e QNX4.x 2nd part 88 Linux plaintext df BootIt
9 AIX bootable 4f QNX4.x 3rd part 8e Linux LVM e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 93 Amoeba e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 94 Amoeba BBT e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M 9f BSD/OS eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a0 IBM Thinkpad hi ee EFI GPT
f W95 Ext’d (LBA) 54 OnTrackDM6 a5 FreeBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a6 OpenBSD f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a7 NeXTSTEP f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a8 Darwin UFS f4 SpeedStor
14 Hidden FAT16 ❤ 61 SpeedStor a9 NetBSD f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys ab Darwin boot fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
Hex code (type L to list codes): 8e
Changed system type of partition 1 to 8e (Linux LVM)

Command (m for help): ?
?: unknown command
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
s create a new empty Sun disklabel
t change a partition’s system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

Command (m for help): p

Disk /dev/sdc: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 6527 52428096 8e Linux LVM

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Comprobamos con fdisk –l que el nuevo disco este en el formato deseado (LVM)

[root@linux ~]# fdisk -l

Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 1305 10377990 8e Linux LVM

Disk /dev/sdb: 107.3 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdb1 * 1 13054 104856223+ 8e Linux LVM

Disk /dev/sdc: 53.6 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sdc1 1 6527 52428096 8e Linux LVM

Si lanzamos un pvdisplay veremos que aún no visualizamos el nuevo VolGroup sdc1


[root@linux ~]# pvdisplay
— Physical volume —
PV Name /dev/sda2
VG Name VolGroup00
PV Size 9.90 GB / not usable 22.76 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 316
Free PE 0
Allocated PE 316
PV UUID DF6SME-nD8I-LGId-4cvh-4wpe-249G-456BPJ

— Physical volume —
PV Name /dev/sdb1
VG Name VolGroup00
PV Size 100.00 GB / not usable 30.66 MB
Allocatable yes (but full)
PE Size (KByte) 32768
Total PE 3199
Free PE 0
Allocated PE 3199
PV UUID t4uw6n-2i5R-Pup9-cccK-scHi-uVFc-cslWMd

Lanzamos un pvcreate para que inicialice el disco para usarlo por LVM

[root@linux ~]# pvcreate /dev/sdc1
Physical volume “/dev/sdc1” successfully created
[root@linux ~]# pvdisplay /sdc1
Failed to read physical volume “/sdc1”

Nota! Si aparece el error de Failed to read es que el pvcreate no ha funcionado. Este error aparece si no cremos, o no cremos bien el PV

Debemos lanzar un vgextend y asignarlo al VolGroup deseado

[root@linux ~]# vgextend VolGroup00 /dev/sdc1
Volume group “VolGroup00” successfully extended

Ahora lo asignamos al lv mediante lvextend (IMPORTANTE: poner símbolo + antes del porcentage o tamaño que queremos asignar)

[root@linux ~]# lvextend -l +100%free /dev/VolGroup00/LogVol00
Extending logical volume LogVol00 to 152.28 GB
Logical volume LogVol00 successfully resized

Asignamos el LV al FS realizando un resize2fs (tarda unos segundos)

[root@linux ~]# resize2fs /dev/VolGroup00/LogVol00
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/VolGroup00/LogVol00 is mounted on /; on-line resizing required
Performing an on-line resize of /dev/VolGroup00/LogVol00 to 39919616 (4k) blocks.
The filesystem on /dev/VolGroup00/LogVol00 is now 39919616 blocks long.

Ahora validamos que todo ha ido bien y tenemos el nuevo disco asignado 🙂

[root@linux ~]# df -lh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
148G 81G 60G 58% /
/dev/sda1 99M 26M 69M 27% /boot
tmpfs 2.8G 4.0K 2.8G 1% /dev/shm

Gracias a Albert Carreras por su manual!!!

Apache, PHP y MySQL en Fedora

Vamos a instalar y configurar Apache, Mysql y PHP para poder ejecutar una web en wordpress (por ejemplo)

Instalamos Apache, Mysql y PHP;

yum -y install httpd php mysql mysql-server php-mysql

Configuramos para que se inicien automáticamente al inicio del sistema

/sbin/chkconfig httpd on

/sbin/chkconfig –add mysqld

/sbin/chkconfig mysqld on

Iniciamos los servicios:

/sbin/service httpd start

/sbin/service mysqld start

Tendremos que establecer la contraseña de root y quitar el acceso anónimo a la MYSQL

mysqladmin -u root password ‘new-password’

Ahora quitamos el acceso anonimo a la MYSQL:

mysql -u root -p

mysql> DROP DATABASE test;

mysql> DELETE FROM mysql.user WHERE user = ”;

mysql> FLUSH PRIVILEGES;

Vamos a  crear un phpinfo para ver que todo funciona. A diferencia de una Debian, los archivos web, por defecto en Fedora están en  /var/www/html/

Dentro de ese directorio (/var/www/html) creamos el fichero phpinfo.php

vim /var/www/html/phpinfo.php

<?php

phpinfo();

?>

Vamos a crear una base de datos para un wordpress (por ejemplo)

mysql -u root -p

mysql> CREATE DATABASE wordpress;

Establecemos los permisos creando un usuario nuevo;

mysql> GRANT ALL PRIVILEGES ON wordpress.* TO ‘wordpress ‘@’localhost’ IDENTIFIED BY ‘password_nuevo_user’;

MySQL Dumper !

MySQLDumper es una herramienta de PHP y Perl  para hacer copias de bases de datos MySQL. Permite el Backup y Restore de la base de datos sin problemas. Esta especialmente diseñado para entornos de hosting compartido, por eso en su dia a mi me salvo con una base de datos de unas 500Mb en un hosting donde, al hacer el backup en un PHPMyAdmin daba TimeOut, y lógicamente no tenia acceso a la maquina….

MySQLDumper es un proyecto de código abierto y liberado bajo la Licencia GNU.

Su uso al igual que su instalación es como la de un PHPMyAdmin.

si no tienes el zip….

apt-get install unzip

cd /tmp

wget http://sourceforge.net/projects/mysqldumper/files/MySQLDumper/MySQLDumper1.24stable.zip/download

unzip MySQLDumper1.24stable.zip

mv msd1.24stable /var/www/mysqldumper
mkdir /var/www/mysqldumper/work
mkdir /var/www/mysqldumper/work/config
mkdir /var/www/mysqldumper/work/log
mkdir /var/www/mysqldumper/work/backup

chown -R www-data mysqldumper

chmod -R 777 /var/www/mysqldumper/work/

Ahora ya podemos entrar en el servidor por http://servidor/mysqldumper y tenemos lo siguiente;

Instalación MySQLDumper

Es necesario tener ciertos permisos en los ficheros de configuración, si no los tenemos bien tendremos un mensaje como este;

Error en configuración de config.php

Ejecutaremos

chmod 0777 /var/www/mysqldumper/config.php

En mi caso he puesto los datos de administrador (root) de MySQL

Conexión BBDD

Le damos a conectarse a MySQL

Configuración BBDD

Guardar y seguir con la instalación

Si no hemos creado unos directorios nos aparecerá un error parecido a este;

Error en directorios

Y ya lo tenemos!!!!!!!!!

MySQL Dumper


Vamos a crear lo que llaman la “protección de directorio” que no es nada mas que un .htaccess

Le damos al botón de protección de directorio y rellenamos los datos;

Protección de directorio

Y el resultado es;

Password

Con esto ya tenemos nuestro MySQLDumper. Solo nos queda hacer nuestros backups….

Backup DDBB

PowerDNS + MySQl + PowerAdmin !

Este es un pequeño manual de instalación PowerDNS y PowerAdmin en Debian Lenny

Este articulo muestro como instalar el servidor PowerDNS (con MySQL en backend) y el panel de administración PowerAdmin en una Debian Lenny

1- Instalamos MySQL

Para hacerlo ejecutamos:

apt-get install mysql-server mysql-client

Para tener la MySQL escuchando en todas las interfaces (por temas de replicación) tenemos que editar el fichero “/etc/mysql/my.cnf” y comentar la linea “bind-address = 127.0.0.1:”

vim /etc/mysql/my.cnf

[…]
#bind-address = 127.0.0.1
[…]

Reiniciamos la MySQL ejecutando:

/etc/init.d/mysql restart

Para ver que funciona correctamente ejecutamos:

netstat -tap | grep mysql

Nos va aparecer algo parecido a lo siguiente:

node1:~# netstat -tap | grep mysql
tcp 0 0 :mysql : LISTEN 3031/mysqld
node1:~#

Ejecutamos

mysqladmin -u root password contraseña_root
mysqladmin -h node1 -u root password contraseña_root

para modificar la contraseña del usuario root (sino cualquiera puede entrar)

2 Instalamos PowerDNS

Para instalar PowerDNS ejecutamos:

apt-get install pdns-server pdns-backend-mysql

La configuración de PowerDNS esta en la carpeta “/etc/powerdns”

Ahora nos conectamos a la MySQL

mysql -u root -p

(nos va a pedir la Contraseña de root):

Creamos una Base de Datos para el PowerDNS ejecutando:

CREATE DATABASE powerdns;

Y ahora un usuario para la Base de Datos:

GRANT ALL ON powerdns. TO ‘power_admin’@’localhost’ IDENTIFIED BY ‘admin_password’;
GRANT ALL ON powerdns. TO ‘power_admin’@’localhost.localdomain’ IDENTIFIED BY ‘admin_password’;
FLUSH PRIVILEGES;

Y ahora creamos las tablas necesarias:

USE 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)
);

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(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

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

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

… and finally leave the MySQL shell:

quit;

Ahora solo nos queda configurar PowerDNS para usar MySQL. Editamos el fichero:

vim /etc/powerdns/pdns.conf

Agregamos la linea siguiente en pdns.conf

launch=gmysql

Ejemplo:

[…]
#################################
# launch Which backends to launch and order to query them in
#
# launch=
launch=gmysql
[…]

Abrimos el fichero “/etc/powerdns/pdns.d/pdns.local” y lo modificamos con los datos de conexión a la base de datos, un ejemplo seria el siguiente:

vim /etc/powerdns/pdns.d/pdns.local

gmysql-host=127.0.0.1
gmysql-user=power_admin
gmysql-password=power_admin_password
gmysql-dbname=powerdns

Reiniciamos pdns (PowerDNS)

/etc/init.d/pdns restart

Ahora ya tenemos PowerDNS listo para usar. Aquí hay algo de documentación

http://downloads.powerdns.com/documentation/html/index.html

4- Instalamos Poweradmin

Para instalar PowerAdmin necesitamos un servidor web con php. En este caso, si no tenemos uno podemos seguir las siguientes instrucciones, pero si ya tenemos uno, solo tenemos que crear un virtualhost apuntando a la carpeta /var/www/pdns (que es donde vamos a dejar los ficheros del PowerAdmin.

Lo instalamos todo con la siguiente orden:

apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext

Continue installing libc-client without Maildir support? <– Yes

También tenemos que configurar dos paquetes PEAR con los siguientes comando:

pear install DB
pear install pear/MDB2#mysql

Ahora ya tenemos instalado lo necesario, ahora toca configurar. Lo vamos a configurar para dejarlo en /var/www/pdns (el directorio raiz del apache por defecto, en Debian es /var/www, por lo que si necesitamos crear un VirtualHost, es mucho mas facil.

Nos descargamos la versión 2.1.3 (la ultima a fecha 6 de Julio del 200)

cd /tmp
wget https://www.poweradmin.org/download/poweradmin-2.1.3.tgz

Y instalamos poweradmin en /var/www/pdns

tar xvfz poweradmin-2.1.3.tgz
mv poweradmin-2.1.3 /var/www/pdns
touch /var/www/pdns/inc/config.inc.php
chown -R www-data:www-data /var/www/pdns/

Ahora abrimos el navegador y nos conectamos a la web. En este caso seria algo parecidor a esto:

http://servidor/pdns/install

o quizás

http://192.168.0.100/pdns

Y seguimos los siguientes pasos:

Elejimos el lenguaj (Ingles o aleman)

Continuamos…

Ahora nos pide los datos de conexión MySQL. Ademas nos pide la contraseña para el usuario “admin” que es el que usaremos para entrar en el interfaz del PowerAdmin.

Y por ultimo nos pide datos de configuración de servidor de nombres principal y poco mas.

Por ultimo, ahora si, eliminanos la carpeta /install de /var/www/pdns con el siguiente comando:

rm -R /var/www/pdns/install

Ahora ya podemos entrar en la web, ponemos el usuario y contraseña y a crear zonas DNS….

(Recordad que quizas teneis el puerto 53 cerramos en el firewall, sin este puerto abiuerto, no se pueden hacer consultas al servidor.

Resetear root password en MySQL !

Hay veces que perdemos las contraseñas, en mi caso, hoy, la de MySQL del usuario root…. (hay cosas que no tienen precio…). La solución es fácil (siempre que se tenga acceso a la maquina).

Entramos en la maquina, creamos un fichero con el vi.

cd /root
vi new_pass

Paramos la MySQL.

/etc/init.d/mysql stop

Dentro del fichero ponemos lo siguiente:

SET PASSWORD FOR root@’localhost’ = PASSWORD(‘contraseña_nueva’);

Salimos del fichero guardando (esta claro no…)

luego editamos el fichero /etc/mysql/my.cnf

vi /etc/mysql/my.cnf

y justo encima de la linea user = mysql ponemos:

init-file=/root/new_pass

Salimos guardando e iniciamos la MySQL

/etc/init.d/mysql start

Lo que hacemos con esto es que al iniciar la MySQL, justo antes de que cargue la tabla de privilegios, inicie lo que le decimos en el fichero.

Una vez iniciada, modificamos el fichero /etc/mysql/my.cnf y lo dejamos sin la linea init-file /root/new_pass