Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Què fer si la potència d'un servidor no és suficient per processar totes les sol·licituds i el fabricant del programari no proporciona equilibri de càrrega? Hi ha moltes opcions, des de comprar un equilibrador de càrrega fins a limitar el nombre de sol·licituds. Quina és la correcta s'ha de determinar segons la situació, tenint en compte les condicions existents. En aquest article us explicarem què podeu fer si el vostre pressupost és limitat i teniu un servidor gratuït.

Com a sistema per al qual calia reduir la càrrega en un dels servidors, vam triar DLP (sistema de prevenció de fuites d'informació) d'InfoWatch. Una característica de la implementació va ser la col·locació de la funció d'equilibri en un dels servidors de "combat".

Un dels problemes que vam trobar va ser la incapacitat d'utilitzar Source NAT (SNAT). Per què era necessari i com es va resoldre el problema, descriurem més endavant.

Per tant, inicialment el diagrama lògic del sistema existent tenia aquest aspecte:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

El trànsit ICAP, SMTP i esdeveniments dels ordinadors dels usuaris es van processar al servidor Traffic Monitor (TM). Al mateix temps, el servidor de bases de dades va fer front fàcilment a la càrrega després de processar esdeveniments a la TM, però la càrrega a la TM en si era pesada. Això era evident a partir de l'aparició d'una cua de missatges al servidor Device Monitor (DM), així com de la CPU i la càrrega de memòria del TM.

A primera vista, si afegim un altre servidor de TM a aquest esquema, llavors ICAP o DM es podrien canviar, però vam decidir no utilitzar aquest mètode, ja que la tolerància a errors es va reduir.

Descripció de la solució

En el procés de recerca d'una solució adequada, ens vam optar per un programari de distribució lliure mantenir-se viu juntament amb LVS. Perquè keepalived resol el problema de crear un clúster de migració per error i també pot gestionar l'equilibrador LVS.

El que volíem aconseguir (reduir la càrrega de la TM i mantenir el nivell actual de tolerància a fallades) hauria d'haver funcionat segons l'esquema següent:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

En comprovar la funcionalitat, va resultar que el conjunt de RedHat personalitzat instal·lat als servidors no és compatible amb SNAT. En el nostre cas, teníem previst utilitzar SNAT per assegurar-nos que els paquets entrants i les respostes a ells s'enviïn des de la mateixa adreça IP, en cas contrari obtindríem la següent imatge:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Això és inacceptable. Per exemple, un servidor intermediari, després d'haver enviat paquets a una adreça IP virtual (VIP), esperarà una resposta de VIP, però en aquest cas vindrà d'IP2 per a les sessions enviades a còpia de seguretat. Es va trobar una solució: calia crear una altra taula d'encaminament a la còpia de seguretat i connectar dos servidors de TM amb una xarxa separada, tal com es mostra a continuació:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

ajustos

Implementarem un esquema de dos servidors amb serveis ICAP, SMTP, TCP 9100 i un equilibrador de càrrega instal·lat en un d'ells.

Tenim dos servidors RHEL6, dels quals s'han eliminat els repositoris estàndard i alguns paquets.

Serveis que necessitem equilibrar:

• ICAP – tcp 1344;

• SMTP – tcp 25.

Servei de transmissió de trànsit des de DM – tcp 9100.

En primer lloc, hem de planificar la xarxa.

Adreça IP virtual (VIP):

• IP: 10.20.20.105.

Servidor TM6_1:

• IP externa: 10.20.20.101;

• IP interna: 192.168.1.101.

Servidor TM6_2:

• IP externa: 10.20.20.102;

• IP interna: 192.168.1.102.

A continuació, habilitem el reenviament IP en dos servidors de TM. Com fer-ho es descriu a RedHat aquí.

Decidim quin dels servidors que tindrem és el principal i quin serà el de còpia de seguretat. Deixeu que el mestre sigui TM6_1, la còpia de seguretat sigui TM6_2.

A la còpia de seguretat, creem una nova taula d'encaminament de l'equilibrador i regles d'encaminament:

[root@tm6_2 ~]echo 101 balancer >> /etc/iproute2/rt_tables
[root@tm6_2 ~]ip rule add from 192.168.1.102 table balancer
[root@tm6_2 ~]ip route add default via 192.168.1.101 table balancer

Les ordres anteriors funcionen fins que es reinicia el sistema. Per assegurar-vos que les rutes es conserven després d'un reinici, podeu introduir-les /etc/rc.d/rc.local, però millor mitjançant el fitxer de configuració /etc/sysconfig/network-scripts/route-eth1 (nota: aquí s'utilitza una sintaxi diferent).

Instal·leu keepalived als dos servidors de TM. Hem utilitzat rpmfind.net com a font de distribució:

[root@tm6_1 ~]#yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/keepalived-1.2.13-5.el6_6.x86_64.rpm

A la configuració de keepalived, assignem un dels servidors com a mestre i l'altre com a còpia de seguretat. A continuació, configurem VIP i serveis per a l'equilibri de càrrega. El fitxer de configuració normalment es troba aquí: /etc/keepalived/keepalived.conf.

Configuració del servidor TM1

vrrp_sync_group VG1 { 
   group { 
      VI_1 
   } 
} 
vrrp_instance VI_1 { 
        state MASTER 
        interface eth0 

        lvs_sync_daemon_inteface eth0 
        virtual_router_id 51 
        priority 151 
        advert_int 1 
        authentication { 
                auth_type PASS 
                auth_pass example 
        } 

        virtual_ipaddress { 
                10.20.20.105 
        } 
}

virtual_server 10.20.20.105 1344 {
    delay_loop 6
    lb_algo wrr 
    lb_kind NAT
    protocol TCP

    real_server 192.168.1.101 1344 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 1344
        nb_get_retry 3
        delay_before_retry 3
        }
    }

    real_server 192.168.1.102 1344 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 1344
        nb_get_retry 3
        delay_before_retry 3
        }
    }
}

virtual_server 10.20.20.105 25 {
    delay_loop 6
    lb_algo wrr 
    lb_kind NAT
    protocol TCP

    real_server 192.168.1.101 25 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 25
        nb_get_retry 3
        delay_before_retry 3
        }
    }

    real_server 192.168.1.102 25 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 25
        nb_get_retry 3
        delay_before_retry 3
        }
    }
}

virtual_server 10.20.20.105 9100 {
    delay_loop 6
    lb_algo wrr 
    lb_kind NAT
    protocol TCP

    real_server 192.168.1.101 9100 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 9100
        nb_get_retry 3
        delay_before_retry 3
        }
    }

    real_server 192.168.1.102 9100 {
        weight 1
        TCP_CHECK { 
                connect_timeout 3 
            connect_port 9100
        nb_get_retry 3
        delay_before_retry 3
        }
    }
}

Configuració del servidor TM2

vrrp_sync_group VG1 { 
   group { 
      VI_1 
   } 
} 
vrrp_instance VI_1 { 
        state BACKUP 
        interface eth0 

        lvs_sync_daemon_inteface eth0 
        virtual_router_id 51 
        priority 100 
        advert_int 1 
        authentication { 
                auth_type PASS 
                auth_pass example 
        } 

        virtual_ipaddress { 
                10.20.20.105 
        } 
}

Instal·lem LVS al mestre, que equilibrarà el trànsit. No té sentit instal·lar un equilibrador per al segon servidor, ja que en la configuració només tenim dos servidors.

[root@tm6_1 ~]##yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/ipvsadm-1.26-4.el6.x86_64.rpm

L'equilibrador serà gestionat per keepalived, que ja hem configurat.

Per completar la imatge, afegim keepalived a l'inici automàtic als dos servidors:

[root@tm6_1 ~]#chkconfig keepalived on

Conclusió

Comprovació dels resultats

Executem keepalived als dos servidors:

service keepalived start

Comprovació de la disponibilitat d'una adreça virtual VRRP

Assegurem-nos que el VIP estigui al màster:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

I no hi ha cap VIP a la còpia de seguretat:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Mitjançant l'ordre ping, comprovarem la disponibilitat del VIP:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Ara podeu tancar el master i tornar a executar l'ordre ping.

El resultat hauria de seguir sent el mateix, i a la còpia de seguretat veurem VIP:

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Comprovació de l'equilibri del servei

Prenem per exemple SMTP. Llançarem dues connexions a 10.20.20.105 simultàniament:

telnet 10.20.20.105 25

A master hauríem de veure que ambdues connexions estan actives i connectades a diferents servidors:

[root@tm6_1 ~]#watch ipvsadm –Ln

Configuració de l'equilibri de càrrega a InfoWatch Traffic Monitor

Així, hem implementat una configuració tolerant a errors dels serveis de TM instal·lant un equilibrador en un dels servidors de TM. Per al nostre sistema, això va reduir la càrrega de la TM a la meitat, cosa que va permetre resoldre el problema de la manca d'escala horitzontal mitjançant el sistema.

En la majoria dels casos, aquesta solució s'implementa ràpidament i sense costos addicionals, però de vegades hi ha una sèrie de limitacions i dificultats en la configuració, per exemple, quan s'equilibra el trànsit UDP.

Font: www.habr.com

Compreu allotjament fiable per a llocs amb protecció DDoS, servidors VPS VDS 🔥 Compra allotjament web fiable amb protecció DDoS, servidors VPS VDS | ProHoster