Documente Academic
Documente Profesional
Documente Cultură
ve
Desventajas:
− Si el disco falla o se corrompe todos los servidores
primarios quedan inhabilitados.
− Si el servidor primario está activo, el servidor en espera
NO puede acceder al mismo tiempo al disco
compartido.
File System Replication
Estado:
}
drbdadm cstate replica0
drbdadm dstate replica0
drbdadm role replica0
DRBD – Conf. + Adm. II
Verificación de datos (crontab):
/etc/drbd.conf
drbdadm verify replica0
global { usage-count yes; }
common { protocol C;} Resincronización:
resource replica0 {
on nodo1 { drbdadm disconnect replica0
device /dev/drbd0; drbdadm connect replica0
disk /dev/sda7;
Cambio de tasa de replicación:
address 192.168.1.5:7789;
meta-disk internal; drbdsetup /dev/drbdnum syncer -r 110M
on-io-error detach; drbdadm adjust resource
rate 37.5M;
}
...
}
DRBD - Estrategias Errores I/O
Llamado = false;
while (!HayWAL() && !Llamado)
{
sleep(100000L); /* ~0.1 seg */
if (ChequearLlamado())
Llamado = true;
}
if (!Llamado)
CopiarYRecuperarWAL();
PITR + pgSQL - Configuración
pg_current_xlog_insert_location() text Obtiene el lugar de inserción actual del archivo de log actual.
pg_xlogfile_name(location text) text Convierte a una cadena de caracteres la ubicación del acrhivo de
log actual.
Respaldo Inc. – PITR + pgSQL
Origin:
−Esquema de BD: cbcluster
Suscribers:
− Esquema de BD: _cbcluster
− Número de Nodo: Único e Inmutable.
Pasos para definir un Replication Set:
− Definir claves candidatas para las tables a replicar que
no tienen clave primaria.
− Definir las tablas que serán replicadas.
− Definir las secuencias que serán replicadas.
Slony + pgSQL - Conceptos
Origin:
− Esquema de BD: cbcluster
Suscribers:
− Esquema de BD: _cbcluster
− Número de Nodo: Único e Inmutable.ç
Configuración: Terrible.
Administración: Terrible.
Desempeño: SQL para replicar SQL?.
Statement Based Replication
Middleware
También llamado Statement Based Replication
Middleware (SBRM).
Intercepta todas las instrucciones SQL (Lectura/Escritura)
y las envia a todos los servidores.
Cada servidor trabaja independientemente, pero juntos
hacen un manojo (pool).
Se puede segmentar las instrucciones de sólo lectura a
sólo algunos de los servidor del manojo, permitiendo el
balanceo de la carga de lectura.
Si las consultas se envian si modificación a los servidores
CURRENT_TIMESTAMP serán diferentes en todos los
servidores.
Statement Based Replication
Middleware
Todas las consultas deben hacer commit o
rollback en todos los servidores, esto implica
que se debe utilizar un commit de dos (2)
fases.
Permite paralelización de consultas (partes
ejecutadas en varios servidores), lo cual,
implica particionar las tablas.
SBRM se implementa con pg-pool II y sequoia.
Pg-pool II – Matriz de Conf.
Función/Modo Modo Modo Modo Modo Modo
Básico Pool de Replicación Maestro Consultas
Conexiones Esclavo Paralelas
Pool de Conexiones Si Opcional Opcional Opcional Opcional
No se necesita resolver • • • • •
conflictos
Método de shared disk disk blocks WAL table rows SQL table rows table rows
comunicación. and row locks
Alta Disponibilidad, Balanceo de Carga y
Replicación de Sitios Web en Linux
Caracas, Venezuela
Enero de 2008 - Julio 2009
HA + LB Web Cluster
Apache 1:
192.168.0.101
Apache 2:
192.168.0.102
Balanceador 1:
192.168.0.103
Balanceador 2:
192.168.0.104
IP Virtua:
192.168.0.105
HA + LB Web Cluster
Balanceadores:
− Ejecutar apt-get install heartbeat
− Nombres lb1 y lb2 son iguales a uname -n
− Editar el archiv /etc/ha.d/ha.cf:
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node lb1
node lb2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
HA + LB Web Cluster
Balanceadores:
− Editar el archivo /etc/ha.d/authkeys
auth 3
3 md5 “somerandomstring”
ldirectord::ldirectord.cf \
LVSSyncDaemonSwap::master \
Ipaddr2::192.168.0.105/24/eth0/192.168.0.255
HA + LB Web Cluster
Balanceadores:
− Ejecutar apt-get install ldirectord
Checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent=yes
Virtual=192.168.0.105:80
real=192.168.0.101:80 gate
real=192.168.0.102:80 gate
fallback=127.0.0.1:80 gate
service=http
request="ldirector.html"
receive="Test Page"
scheduler=rr
protocol=tcp
checktype=negotiate
HA + LB Web Cluster
Editar /etc/sysctl.conf
auto lo:0
iface lo:0 inet static
address 192.168.0.105
netmask 255.255.255.255
pre-up sysctl -p > /dev/null
Ejecutar if up lo:0
Editar /var/www/ldirectord.html
HA + LB Web Cluster
Balanceadores (Activo/Pasivo):
− Ejecutar /etc/init.d/heartbeat ñstop | start
HA + LB Web Cluster
Tomcat:
− http://tomcat.apache.org/tomcat-5.5-doc/config/manager.html
− http://www.fwd.at/tomcat/sharing-session-data-howto.html
Solución Final
Alta Disponibilidad
Balanceo de Carga* PG-POOL II PG-POOL II
Replicación (SQL)
(Srv => 1)
Cluster #1 Cluster #2
Replicación (HW)
SAN
Gracias
Referencias
http://www.postgresql.org/docs/8.3/static/high-availability.html
http://es.wikipedia.org/wiki/LVM
http://www.postgresql.org/docs/current/interactive/warm-standby.html
http://es.wikipedia.org/wiki/ACID
http://pgpool.projects.postgresql.org/pgpool-II/doc/pgpool-en.html
http://archives.postgresql.org/pgsql-es-ayuda/2005-11/msg00856.php
http://www.postgresql.org/docs/current/interactive/sql-commit-prepared.html
http://www.postgresql.org/docs/current/interactive/sql-prepare-transaction.html
http://pgpool.projects.postgresql.org/pgpool-II/doc/tutorial-en.html
http://www.drbd.org/users-guide/ch-heartbeat.html
http://www.drbd.org/docs/install/
http://www.slony.info
http://projects.postgresql.org
http://pgfoundry.org/