Este artículo le indicará cómo configurar una base de datos MySQL 5 de tres nodos. Clúster de servidores: dos nodos de almacenamiento y un
nodo de administración.
El clúster esun equilibrador de carga de alta disponibilidad
que consta de dos nodos que utilizan el paquete de instalación Ultra Monkey
que proporciona un dispositivo "heartbeat" (utilizado para comprobar si otro nodo está activo) y
"ldirectord" (que distribuye solicitudes a los nodos del clúster MySQL). .En este artículo, cada uno de nuestros nodos utiliza el sistema Debian Sarge Linux. La instalación de otras distribuciones de Linux puede ser ligeramente
diferente. Usamos MySQL versión 5.0.19. Si no desea utilizar MySQL 5, también puede utilizar MySQL 4.1,
aunque
aún no lo he probado.Este artículo es una guía de aplicación práctica; no implica demasiada teoría. Puede encontrar mucha teoría sobre la agrupación en clústeres en línea.
Para un servidor
utilizo el siguiente servidor Debian, todos están en el mismo segmento de red (este ejemplo: 192.168.0.x):
sql1.test.com: 192.168.0.101 Nodo 1 del clúster MySQL
sql2.test.com: 192.168. 0.102 MySQL Cluster nodo 2
loadb1.test.com: 192.168.0.103 Equilibrio de carga 1 / Servidor de administración de clúster MySQL
loadb2.test.com: 192.168.0.104 Equilibrio de carga 2
Además, necesitamos una dirección IP virtual: 192.168.0.105. Arreglará el equilibrio de carga para este clúster MySQL para que
las aplicaciones puedan acceder al clúster a través de una única dirección IP unificada.
Aunque queremos usar dos nodos en MySQL Cluster, todavía necesitamos un tercer nodo, MySQL Cluster Management Server
, por una razón principal: si uno de los nodos de MySQL Cluster deja de funcionar y MySQL Cluster Management Server no se está ejecutando, entonces
Entonces los datos en los dos nodos del clúster serán inconsistentes ("cerebro dividido"). Lo necesitamos para configurar MySQL Cluster.
Por lo tanto, nuestra instalación generalmente requiere cinco máquinas:
2 nodos de MySQL Cluster + 1 Cluster Management Server + 2 Load Balancers = 5
Debido a que Cluster Management Server no utiliza muchos recursos, el sistema estará vacío. entonces podemos poner nuestro
primer
balanceador de carga en la misma máquina, lo que nos ahorra un servidor, por lo que idealmente solo necesitamos cuatromáquinas.
2. Configure el servidor de administración del clúster MySQL.
Primero debemos descargar MySQL 5.0.19 e instalar el servidor de administración del clúster (ndb_mgmd) y el cliente de administración del clúster (ndb_mgm, que
se puede usar para monitorear el funcionamiento del clúster). los pasos están en loadb1.test .com (192.168.0.103):
loadb1.test.com:
mkdir /usr/src/mysql-mgm
cd /usr/src/mysql-mgm
wget http://dev.mysql.com/get /Descargas/ MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql- max-5.0 .19-linux-i686-glibc23.tar.gz
cd mysql-max-5.0.19-linux-i686-glibc23
mv bin/ndb_mgm /usr/bin
mv bin/ndb_mgmd /usr/bin
chmod 755 /usr/ bin/ndb_mg *
cd /usr/src
rm -rf /usr/src/mysql-mgm
A continuación, debemos crear el archivo de configuración del clúster, /var/lib/mysql-cluster/config.ini:
loadb1.test.com:
mkdir /var /lib/mysql-cluster
cd /var/lib/mysql-cluster
vi config.ini
————-
[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Sección para el cluster nodo de administración
[NDB_MGMD]
# Dirección IP del nodo de administración (este sistema)
HostName=192.168.0.103
# Sección para los nodos de almacenamiento
[NDBD]
# Dirección IP del primer nodo de almacenamiento
HostName=192.168.0.101
DataDir= /var/lib/ mysql-cluster
[NDBD]
# dirección IP del segundo nodo de almacenamiento
HostName=192.168.0.102
DataDir=/var/lib/mysql-cluster
# uno [MYSQLD] por nodo de almacenamiento
[MYSQLD]
[MYSQLD]
———-
En la aplicación real , cambie el archivo Reemplace la dirección IP con su IP correspondiente.
Luego iniciamos el servidor de administración del clúster:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
También deberíamos poder iniciar automáticamente el servidor de administración cuando se inicia el servidor, por lo que creamos un
script de inicialización muy simple y la conexión de inicio correspondiente:
loadb1.test.com:
echo 'ndb_mgmd -f /var/lib/mysql-cluster/config.ini' > /etc/init.d/ndb_mgmd
chmod 755 /etc/init. d/ ndb_mgmd
update-rc.d ndb_mgmd defaults
Tres nodos de clúster MySQL de configuración (nodos de almacenamiento)
Ahora instalaremos mysql-max-5.0.19 en sql1.test.com y sql2.test.com respectivamente:
sql1.example.com/ sql2 .example.com:
groupadd mysql
useradd -g mysql mysql
cd /usr/local/
wget http://dev.mysql.com/get/Downloads/MySQL-5.0/mysql-max-5.0.19-linux-i686-
glibc23.tar.gz/from/http://www.mirrorservice.org/sites/ftp.mysql.com/
tar xvfz mysql-max-5.0.19-linux-i686-glibc23.tar.gz
ln -s mysql - max-5.0.19-linux-i686-glibc23 mysql
cd mysql
scripts/mysql_install_db –user=mysql
chown -R root:
mysqlchown -R mysql data
cp support-files/mysql.server /etc/init.d/
chmod
.755 /etc/init.d/mysql.server
update-rc.d mysql.server defaults
cd /usr/local/mysql/bin
mv * /usr/bin
cd ../
rm -fr /usr/local/mysql/bin
ln -s /usr/bin /usr/local/mysql/bin
Luego creamos el archivo de configuración de MySQL /etc/my.cnf en cada nodo:
vi /etc/my.cnf
–
[mysqld]
ndbcluster
# dirección IP del cluster nodo de administración
ndb-connectstring=192.168.0.103
[mysql_cluster]
# Dirección IP del nodo de administración del clúster
ndb-connectstring=192.168.0.103
:
asegúrese de ingresar la dirección IP correcta en el servidor de administración del clúster.
A continuación creamos el directorio de datos e iniciamos el servidor MySQL en cada nodo del cluster:
sql1.test.com / sql2.test.com:
mkdir /var/lib/mysql-cluster
cd /var/lib/mysql-cluster
ndbd – inicial
/ etc/init.d/mysql.server start
(Recuerde: solo iniciamos MySQL por primera vez o cuando
cambia /var/lib/mysql-cluster/config.ini en loadb1.test.com. Utilice solo ndbd –initial)
Ahora es el momento de establecer la contraseña para la cuenta raíz de MySQL:
sql1.test.com / sql2.test.com:
mysqladmin -u contraseña de raíz yourrootsqlcontraseña
Necesitamos iniciar el nodo del clúster cuando se inicia el servidor, por lo que creamos una inicialización de ndbd. script y la
conexión de inicio del sistema correspondiente:
sql1.test.com / sql2.test.com:
echo 'ndbd' > /etc/init.d/ndbd
chmod 755 /etc/init.d/ndbd
update-rc d ndbd defaults.
4 Prueba de MySQL Cluster
Nuestra configuración de MySQL Cluster está completa, ahora es el momento de probarla. En el servidor de administración del clúster
(loadb1.test.com), ejecute el cliente de administración del clúster ndb_mgm para verificar si los nodos del clúster están conectados:
loadb1.test.com:
ndb_mgm
Verá esto:
– Clúster NDB — Cliente de administración –
ndb_mgm >
En Enter show;
show en la línea de comando;
la información de salida debe ser así:
ndb_mgm> show;
Conectado al servidor de administración en: localhost:1186
Configuración del clúster
———————
[ndbd(NDB)] 2 nodos( s)
id= 2 @192.168.0.101 (Versión: 5.0.19, Grupo de nodos: 0, Maestro)
id=3 @192.168.0.102 (Versión: 5.0.19, Grupo de nodos: 0)
[ndb_mgmd(MGM)] 1 nodo(s) )
id=1 @192.168.0.103 (Versión: 5.0.19)
[mysqld(API)] 2 nodos
id=4 @192.168.0.101 (Versión: 5.0.19)
id=5 @192.168.0.102 (Versión: 5.0.19)
ndb_mgm>
Si ve que todos sus nodos están conectados. ¡Entonces todo va bien!
Ingrese
quit;
para salir de la consola del cliente ndb_mgm.
Ahora creamos una base de datos de prueba en el nodo sql1.test.com, creamos una tabla de prueba y
completamos algunos datos de prueba:
mysql -u root -p
CREATE DATABASE mysqlclustertest;
USE mysqlclustertest;
CREATE TABLE testtable (i INT) ENGINE=NDBCLUSTER; ;
INSERT INTO testtable () VALUES (1);
SELECT * FROM testtable;
(
Mire la declaración CREATE anterior: ¡las tablas de todas las bases de datos que queremos agrupar deben usar ENGINE=NDBCLUSTER!
Si usa otro MOTOR, entonces la agrupación no funciona!)
El
resultado de SELECT debería ser:
mysql> SELECT * FROM testtable;
+——+
| i
+
——
+
1 |
misma base de datos en el nodo sql2.test.com (sí, todavía tenemos que crearla, perolos datos se copiarán a sql2.test.com
después de crear la tabla de prueba
, porque la tabla de prueba usa ENGINE=NDBCLUSTER):sql2. test.com:
mysql -u root -p
CREAR
BASE DE DATOS mysqlclustertest;
UTILIZAR
mysqlclustertest;
SELECT *FROM
testtable;
—+
| i |
+——+
| 1 |
+——+
1 fila en el conjunto (0,04 segundos)
Vemos que los datos se han copiado del nodo sql1.test.com al nodo sql2.example.com. Ahora
insertamos otra fila en la tabla de prueba:
sql2.test.com:
INSERT INTO testtable () VALUES (2)
;
ahora regresemos al nodo sql1.example.com y verifiquemos si podemos ver la fila recién insertada:
sql1.example.com:
mysql
-u root -p
USE mysqlclustertest;
SELECT * FROM testtable;
debería
ver un resultado como este:
mysql
>
SELECT * FROM testtable
;
| 2 |
+——+
2 filas en conjunto (0,05 segundos)
para que cada nodo del clúster tenga los mismos datos.
Ahora veamos si detenemos el nodo 1 (sql1.example.com): ejecute
sql1.example.com:
killall ndbd
y verifique
ps aux | grep ndbd | grep -iv grep
para ver que todos los procesos ndbd hayan finalizado. Si aún ve procesos ndbd, ejecute
killall ndbd
nuevamentehasta que finalicen todos los procesos ndbd.
Ahora en nuestro servidor de administración, verifique el estado del clúster (loadb1.example.com):
loadb1.example.com:
ndb_mgm
Escribashow;
en
la consola ndb_mgm.
Debería ver esto:
ndb_mgm> show;
:1186
Configuración del clúster
————————
[ndbd(NDB)] 2 nodos
id=2 (no conectado, acepta conexión desde 192.168.0.101)
id=3 @192.168.0.102 (Versión: 5.0 .19 , Grupo de nodos: 0, Maestro)
[ndb_mgmd(MGM)] 1 nodo(s)
id=1 @192.168.0.103 (Versión: 5.0.19)
[mysqld(API)] 2 nodo(s)
id=4 @192.168 .0.101 (Versión: 5.0.19)
id=5 @192.168.0.102 (Versión: 5.0.19)
ndb_mgm>
Verá, el nodo sql1.example.com no está conectado.
Ingrese:
salir;
salir de la consola ndb_mgm.
Comprobemos el nodo sql2.example.com:
sql2.example.com:
mysql -uroot
-p
USE mysqlclustertest;
SELECT * FROM
testtablequit
;
+— —+
| i |
+——+
| 1
| 2 |
+——+
2 filas en conjunto (0,17 segundos)
Ok, todas las pruebas son normales, ahora iniciemos el nodo
sql1.test.com .ejemplo .com:
ndbd
5 Cómo reiniciar el clúster
Ahora imaginemos quenecesita reiniciar el clúster MySQL
debido a una modificación de /var/lib/mysql-cluster/config.ini en el nodo loadb1.test.com
u otro razones.Para hacer esto, use
el cliente de administración de clústeres ndb_mgm en el nodo loadb1.example.com:
loadb1.test.com
:
ndb_mgm
En la consola ndb_mgm, escriba
apagado
y verá un mensaje como este:
ndb_mgm> apagado;
: Apagado del clúster iniciado
Nodo 2: Apagado del nodo completado.
2 nodos del clúster NDB se han apagado.
El servidor de administración del clúster NDB
ndb_mgm>
Esto significa que los nodos del clúster sql1.test.com y sql2.test.com han sido. Todos los servidores de administración de clústeres se han cerrado.
Ejecute
salir;
salga de la consola ndb_mgm.
Para iniciar el servidor de administración de clústeres, haga esto en loadb1.test.com:
loadb1.test.com:
ndb_mgmd -f /var/lib/mysql-cluster/config.ini
y en sql1.test.com y sql2.test.com Ejecute en:
sql1.example.com / sql2.example.com:
ndbd
O acaba de modificar el archivo /var/lib/mysql-cluster/config.ini en loadb1.test.com:
ndbd –initial
Después de esto, Puede verificar en loadb1.test.com para ver si el clúster se ha reiniciado:
loadb1.test.com:
ndb_mgm
En la consola ndb_mgm, ingrese
show
para ver el estado actual del clúster. Es posible que todos los nodos tarden un momento en informar que están conectados después del reinicio.
Ingrese:
salir;
salir de la consola ndb_mgm.
6. Configuración del equilibrio de carga
Nuestro clúster MySQL ya está completo y ya puede empezar a usarlo.
Sin embargo, no tenemos unadirección
IP separadapara acceder al clúster
, lo que significa que debe configurar parte de la aplicación para usar el nodo 1 del clúster MySQL (sql1.test.com) y otra parte para usar el nodo 2 (sql2. test.com).Por supuesto, todas las aplicaciones solo necesitan usar un nodo, pero si
no desea dividir la carga entre los nodos del clúster, ¿cuál es el propósito de tener un clúster
? ¿El nodo se cae? Entonces las aplicaciones que utilicen este nodo del clúster no podrán funcionar en absoluto.
La solución aquí es configurar un equilibrador de carga frente a MySQL Cluster para equilibrar la carga entre cada nodo de MySQL Cluster.
El equilibrador de carga configura una dirección IP virtual compartida entre los nodos del clúster y todas sus aplicaciones utilizan esta dirección IP virtual para
acceder al clúster. Si uno de los nodos deja de funcionar, su aplicación seguirá funcionando porque el equilibrador de carga transferirá las solicitudes
al otro nodo que esté funcionando correctamente.
Ahora, en este ejemplo, el equilibrador de carga se convierte en el cuello de botella. ¿Qué pasa si este equilibrador de carga se rompe? Entonces configuraremos
dos balanceadores de carga en modo de instalación activo/pasivo (activo/pasivo). Esto significa que tenemos un equilibrador de carga que está activo y otro que está
en espera activa, y cuando el activo deja de funcionar, se activará. Cada balanceador de carga usa latidos para verificar
la actividad del otro balanceador de carga, y el balanceador de carga también usa ldirectord, que es responsable de distribuir el tráfico a los nodos del clúster.
Tanto heartbeat como ldirectord están incluidos en el paquete de instalación de Ultra Monkey que instalaremos.
Es muy importante que el kernel del sistema de los nodos loadb1.test.com y loadb2.test.com admita IPVS (IP Virtual Server).
IPVS realiza el equilibrio de carga en la capa de transporte del kernel de Linux.
6.1 Instalar Ultra Monkey
OK, ahora comencemos: Primero habilitamos IPVS en los nodos loadb1.test.com y loadb2.test.com:
loadb1.example.com / loadb2.example.com:
modprobe ip_vs_dh
modprobe ip_vs_ftp
modprobe ip_vs
modprobe ip_vs_lblc
modprobe ip_vs_lblcr
modprobe ip_vs_lc
modprobe
ip_vs_nq
modprobe ip_vs_rr modprobe ip_vs_sed
modprobe ip_vs_sh
modprobe ip_vs_wlc
modprobe ip_vs_wrr
Para habilitar los módulos IPVS al inicio, enumeramos los módulos en /etc/modules:
loadb1.test.com / loadb2.test.com:
vi /etc/
modulesip_vs_dh
ip_vs_ftp
ip_vs
ip_vs_lblc
ip_vs_lblcr
ip_vs_lc
ip_vs_nq
ip_vs_rr
ip_vs_sed
ip_vs_sh
ip_vs_wlc
ip_vs_wrr
Ahora editamos /etc/apt/sources.list, agregamos el punto de descarga de Ultra Monkey y luego instalamos Ultra Monkey:
loadb1.test .com/loadb2.test. Com:
vi / etc/apt/sources.list
deb http://www.ultramonkey.org/download/3/ sarge main
deb-src http://www.ultramonkey.org/download/3 sarge main
apt-get actualizar
apt-get instale ultramonkey libdbi-perl libdbd-mysql-perl libmysqlclient14-dev
Ahora
se ha instalado Ultra Monkey, si ve la siguiente advertencia:
| libsensors3 no funciona
|
Parece que su kernel no está compilado con soporte para sensores.
libsensors3 no funcionará en su sistema
|
Si desea habilitarlo, consulte “Soporte de chip de sensores de hardware I2C
”
en la configuración de su kernel.
Responda la siguiente pregunta:
¿Quiere cargar automáticamente las reglas IPVS al arrancar?
<-- No
Seleccione un método de demonio
<-- ninguno
El paquete de instalación libdbd-mysql-perl que acabo de instalar no funciona en MySQL 5 (estamos en)
.MySQL Cluster Usando MySQL 5),
por lo que instalamos el último paquete de instalación DBD::mysql Perl:
loadb1.test.com / loadb2.test.com:
cd /tmp
wget
tar xvfz DBD-mysql-3.0002.tar.gz
cd DBD- mysql -3.0002
perl Makefile.PL
make
make install
Primero debemos habilitar el reenvío de paquetes:
loadb1.example.com / loadb2.example.com:
vi /etc/sysctl.conf
# Habilita el reenvío de paquetes net.ipv4.ip_forward = 1
6.2 Configurar latido ( heartbeat )
Configuramos heartbeat creando tres archivos (los archivos de loadb1.test.com y loadb2.test.com deben ser exactamente iguales):
loadb1.test.com / loadb2.test.com:
vi /etc/ha.d /ha .cf
logfacility local0
bcast eth0
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node loadb1
node loadb2
reaparece hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
Recuerde: debe incluir el nombre del nodo (este En el ejemplo, loadb1 y loadb2)
uname -n
Aparte de estas, no necesitamos realizar ninguna modificación en este archivo.
vi /etc/ha.d/haresources
loadb1
ldirectord::ldirectord.cf
LVSSyncDaemonSwap::master
IPaddr2::192.168.0.105/24/eth0/192.168.0.255
Debe enumerar uno de los nombres de los nodos de equilibrio de carga (aquí: loadb1) y enumera
la dirección IP virtual (192.168.0.105) y la dirección de transmisión (192.168.0.255
vi /etc/ha.d/authkeys
auth 3
3 md5 somerandomstring
somerandomstring son los dos latidos utilizados por loadb1 y loadb2 para autenticar cada uno)
.other La contraseña del demonio.
Establece tu propia contraseña aquí. Puede elegir entre 3 métodos de cifrado. Generalmente uso md5 para el cifrado.
/etc/ha.d/authkeys debe ser de solo lectura para la cuenta raíz. Aquí hacemos esto:
loadb1.test.com / loadb2.test.com:
chmod 600 /etc/ha.d/authkeys
6.3 Configurando ldirectord
Ahora. crear para ldirectord Archivo de configuración, balanceador de carga:
loadb1.example.com / loadb2.example.com:
vi /etc/ha.d/ldirectord.cf
# Directivas globales
checktimeout=10
checkinterval=2
autoreload=no
logfile="local0"
quiescent =sí
virtual = 192.168.0.105:3306
servicio = mysql
real = 192.168.0.101:3306 puerta
real = 192.168.0.102:3306
tipo de verificación de puerta = negociar
inicio de sesión = "ldirector"
contraseña = "ldirectorcontraseña"
base de datos = "ldirectordb"
solicitud = "SELECT * FROM Connectioncheck"
Scheduler = wrr
Complete la dirección IP virtual correcta (192.168.0.105) y la dirección IP correcta del nodo del clúster MySQL (192.168.0.101 y 192.168.0.102).
3306 es el puerto predeterminado cuando se ejecuta MySQL. También especificamos un usuario MySQL (ldirector) y una contraseña (ldirectorpassword), una base de datos (ldirectordb) y
una consulta SQL. ldirectord utiliza esta información para probar los nodos del clúster MySQL y comprobar que siempre estén disponibles. A continuación usaremos el usuario ldirector para
crear la base de datos ldirectordb.
Ahora creamos las conexiones de inicio necesarias para heartbeat y eliminamos ldirectord (porque ldirectord se iniciará con heartbeat):
loadb1.test.com / loadb2.test.com:
update-rc.d -f heartbeat remove
update-rc.d heartbeat start 75 2 3 4 5 . stop 05 0 1 6 .
update-rc.d -f ldirectord remove
6.4 Crear base de datos ldirector
A continuación creamos la base de datos ldirector en los nodos del clúster MySQL sql1.test.com y sql2.test.com. Nuestro balanceador de carga utilizará esta base de datos para verificar
la disponibilidad de los nodos del clúster MySQL.
sql1.test.com:
mysql -u root -p
CONCEDER TODO EN ldirectordb.* A 'ldirector'@'%' IDENTIFICADO POR 'ldirectorpassword';
FLUSH PRIVILEGIOS;
CREAR
BASE DE DATOS
ldirectordb;
=NDBCLUSTER;
INSERTAR EN Connectioncheck () VALORES (1);
salir;
sql2.test.com:
mysql -u root -p
OTORGAR TODO EN ldirectordb.* A 'ldirector'@'%' IDENTIFICADO POR 'ldirectorpassword'
;
CREAR BASE DE DATOS ldirectordb;
quit;
6.4 Preparando los Nodos del Clúster MySQL para el Equilibrio de Carga
Finalmente debemos configurar los nodos del Clúster MySQL sql1.test.com y sql2.test.com para aceptar la dirección IP virtual 192.168.0.105.
sql1.test.com / sql2.test.com:
apt-get install iproute
Agregue el siguiente contenido en /etc/sysctl.conf:
vi /etc/sysctl.conf
# Habilite la configuración de la opción arp_ignore
net.ipv4.conf.all. arp_ignore = 1
# Cuando se recibe una solicitud arp en eth0, solo responda si esa dirección está
# configurada en eth0. En particular, no responda si la dirección
# está configurada en lo
net.ipv4.conf.eth0.arp_ignore = 1
#. Lo mismo ocurre con eth1, agregue para todas las interfaces ARPing
#net.ipv4.conf.eth1.arp_ignore = 1
# Habilitar la configuración de la opción arp_announce
net.ipv4.conf.all.arp_announce = 2
# Al realizar una solicitud ARP enviada a través de eth0 Utilice siempre un dirección que
# está configurada en eth0 como la dirección de origen de la solicitud ARP. Si este
# no está configurado y los paquetes se envían a eth0 para una dirección que está en
# lo y se requiere una solicitud arp, entonces la dirección en # lo.
#se utilizará lo.
Como la dirección IP de origen de las solicitudes arp se ingresa en la caché ARP en
# el destino, tiene el efecto de anunciar esta dirección. Esto
no es # deseable en este caso como direcciones en lo en el - real. los servidores # deben
ser anunciados solo por el director de Linux
net.ipv4.conf.eth0.arp_announce = 2
# Lo mismo ocurre con eth1, agregar para todas las interfaces ARPing
#net.ipv4.conf.eth1.arp_announce = 2
sysctl -p
agregará. el siguiente párrafo a /etc/network/interfaces:
sql1.test.com / sql2.test.com:
vi /etc/network/interfaces
auto lo:0
iface lo:0 inetdirección
estática
192.168.0.105máscara de red 255.255.255.255
pre - up sysctl -p > /dev/null
ifup lo:0
7. Inicie el balanceador de carga y pruebe
Ahora iniciamos dos administradores de balanceo de carga:
loadb1.test.com / loadb2.test.com:
/etc/init.d /ldirectord stop
/etc/init.d/heartbeat start
Si no ve errores, debe reiniciar cada balanceador de carga ahora:
loadb1.test.com / loadb2.test.com:
apagado -r ahora
Después de reiniciar, podemos verificar si ambos se cargan Los balanceadores funcionan como se esperaba:
loadb1.test.com / loadb2.test.com:
ip addr sh eth0
El balanceador de carga activo debe enumerar la dirección IP virtual (192.168.0.105):
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:45:fc:f8 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 alcance global eth0
inet 192.168.0.105/24 brd
El equilibrador de carga para
192.168.0.255 alcance global secundario eth0 pasivo (espera activa) debería aparecer de la siguiente manera:2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:16:3e:16:c1:4e brd ff:ff:ff :ff:ff:ff
inet 192.168.0.104/24 brd 192.168.0.255 alcance global eth0
loadb1.test.com / loadb2.test.com:
estado de ldirectord ldirectord.cf
Salida en el balanceador de carga activo:
ldirectord para /etc/ha .d/ldirectord.cf se está ejecutando con pid: 1603
Salida en el balanceador de carga pasivo:
ldirectord está detenido para /etc/ha.d/ldirectord.cf
loadb1.example.com / loadb2.example.com:
ipvsadm -L - nSalida
en el balanceador de carga activo:
versión del servidor virtual IP 1.2.1 (tamaño = 4096)
Prot Dirección local: Banderas del programador de puertos
-> Dirección remota: Peso de reenvío del puerto ActiveConn InActConn
TCP 192.168.0.105:3306 wrr
-> 192.168.0.101:3306 Ruta 1 0 0
-> 192.168.0.102:3306
Salida en Ruta 1 0 0 balanceador de carga pasivo:
IP Virtual Server versión 1.2.1 (tamaño=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
loadb1.test.com / loadb2.test.com:
/etc/ ha.d/resource.d/LVSSyncDaemonSwap estado del maestro
Salida en el balanceador de carga activo:
maestro en ejecución
(ipvs_syncmaster pid: 1766)
Salida en el balanceador de carga pasivo:
maestro detenido
(ipvs_syncbackup pid: 1440)
Si todas sus pruebas son normales, ahora puede acceder la base de datos MySQL desde otros servidores en la misma red (192.168.0.x) usando la dirección IP virtual 192.168.0.105:
mysql -h 192.168 .0.105 -u ldirector -p
(Recuerde: su cliente MySQL debe tener al menos la versión 4.1 ; las versiones anteriores no ejecutarán MySQL5. )
Ahora puede cerrar uno de los nodos del clúster MySQL para realizar pruebas; aún debería poder conectarse a la base de datos MySQL.
8 Notas
Al ejecutar un clúster MySQL, aquí hay algunas cosas importantes que debe recordar:
– ¡Todos los datos están en la memoria! Por lo tanto, necesita una gran cantidad de memoria en los nodos de su clúster. Aquí está
la fórmula de cálculo para la capacidad de memoria requerida para cada nodo:
(Tamaño de la base de datos Tamaño de la base de datos * Número de réplicas Número de réplicas * 1.1) / Número de nodos de datos Número de nodos de datos
Entonces, si tiene un tamaño de base de datos de 1 GB, debe equipar cada nodo con 1,1 GB de memoria!
–El nodo de administración del clúster escucha cualquier conexión en el puerto 1186. Esto significa que no es muy seguro, por lo que debes ejecutar MySQL Cluster en una red separada.