Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Што да направите ако моќта на еден сервер не е доволна за обработка на сите барања, а производителот на софтверот не обезбедува балансирање на оптоварување? Има многу опции, од купување балансирач до ограничување на бројот на барања. Кој од нив е точен мора да се утврди од ситуацијата, земајќи ги предвид постоечките услови. Во оваа статија ќе ви кажеме што можете да направите ако вашиот буџет е ограничен и имате бесплатен сервер.

Како систем за кој беше неопходно да се намали оптоварувањето на еден од серверите, го избравме DLP (систем за спречување на истекување на информации) од InfoWatch. Карактеристика на имплементацијата беше поставувањето на функцијата за балансирање на еден од „борбените“ сервери.

Еден од проблемите на кои наидовме беше неможноста да се користи Source NAT (SNAT). Зошто беше потребно ова и како проблемот беше решен, ќе опишеме понатаму.

Значи, првично логичкиот дијаграм на постојниот систем изгледаше вака:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

ICAP сообраќај, SMTP, настани од кориснички компјутери беа обработени на серверот Traffic Monitor (TM). Во исто време, серверот на базата на податоци лесно се справи со оптоварувањето по обработката на настаните на ТМ, но оптоварувањето на самиот ТМ беше тежок. Ова беше очигледно од појавата на редица пораки на серверот за монитор на уредот (DM), како и од оптоварувањето на процесорот и меморијата на TM.

На прв поглед, ако додадеме друг TM сервер на оваа шема, тогаш или ICAP или DM може да се префрлат на него, но решивме да не го користиме овој метод, бидејќи толеранцијата на грешки беше намалена.

Опис на решението

Во процесот на барање соодветно решение, се населивме на слободно дистрибуиран софтвер зачувана заедно со ПДК. Бидејќи keepalived го решава проблемот со креирање кластер за отфрлање и може да управува и со балансерот LVS.

Она што сакавме да го постигнеме (намалување на оптоварувањето на ТМ и одржување на сегашното ниво на толеранција на грешки) требаше да функционира според следнава шема:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

При проверка на функционалноста, се покажа дека прилагодениот склоп на RedHat инсталиран на серверите не поддржува SNAT. Во нашиот случај, планиравме да користиме SNAT за да се осигураме дека дојдовните пакети и одговорите на нив се испраќаат од истата IP адреса, во спротивно ќе ја добиеме следната слика:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Ова е неприфатливо. На пример, прокси-сервер, кој испратил пакети на виртуелна IP адреса (ВИП), ќе очекува одговор од ВИП, но во овој случај тој ќе дојде од IP2 за сесиите испратени на резервна копија. Беше најдено решение: беше неопходно да се создаде друга рутирачка табела на резервната копија и да се поврзат два ТМ сервери со посебна мрежа, како што е прикажано подолу:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Подесувања

Ќе имплементираме шема од два сервери со ICAP, SMTP, TCP 9100 услуги и load balancer инсталиран на еден од нив.

Имаме два сервери RHEL6, од кои се отстранети стандардните складишта и некои пакети.

Услуги кои ни требаат да ги балансираме:

• ICAP – tcp 1344;

• SMTP – tcp 25.

Сервис за пренос на сообраќај од DM – tcp 9100.

Прво, треба да ја планираме мрежата.

Виртуелна IP адреса (ВИП):

• IP: 10.20.20.105.

Сервер TM6_1:

• Надворешна IP адреса: 10.20.20.101;

• Внатрешна IP адреса: 192.168.1.101.

Сервер TM6_2:

• Надворешна IP адреса: 10.20.20.102;

• Внатрешна IP адреса: 192.168.1.102.

Потоа овозможуваме проследување на IP на два TM сервери. Како да го направите ова е опишано на RedHat тука.

Ние одлучуваме кој од серверите што ќе ги имаме е главен, а кој ќе биде резервен. Нека господар е TM6_1, резервна копија е TM6_2.

На резервна копија, создаваме нова табела за насочување на балансерот и правила за рутирање:

[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

Горенаведените команди работат додека системот не се рестартира. За да се осигурате дека маршрутите се зачувани по рестартирање, можете да ги внесете /etc/rc.d/rc.local, но подобро преку датотеката за поставки /etc/sysconfig/network-scripts/route-eth1 (забелешка: овде се користи различна синтакса).

Инсталирајте го keepalived на двата TM сервери. Го користевме rpmfind.net како извор на дистрибуција:

[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

Во поставките за keepalived, еден од серверите го доделуваме како главен, а другиот како резервна копија. Потоа поставуваме ВИП и услуги за балансирање на товарот. Датотеката за поставки обично се наоѓа овде: /etc/keepalived/keepalived.conf.

Поставки за серверот 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
        }
    }
}

Поставки за серверот 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 
        } 
}

Ние инсталираме LVS на мастерот, кој ќе го балансира сообраќајот. Нема смисла да се инсталира балансер за вториот сервер, бидејќи имаме само два сервери во конфигурацијата.

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

Балансерот ќе биде управуван од keepalived, кој веќе го конфигуриравме.

За да ја комплетираме сликата, ајде да додадеме keepalived за автоматско стартување на двата сервери:

[root@tm6_1 ~]#chkconfig keepalived on

Заклучок

Проверка на резултатите

Ајде да работиме keepalived на двата сервери:

service keepalived start

Проверка на достапноста на виртуелна адреса VRRP

Ајде да се увериме дека ВИП-то е на мастер:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

И нема ВИП на резервна копија:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Користејќи ја командата пинг, ќе ја провериме достапноста на ВИП:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Сега можете да го исклучите master и повторно да ја извршите командата ping.

Резултатот треба да остане ист, а на резервна копија ќе видиме ВИП:

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Проверка на балансирање на услугата

Да го земеме SMTP на пример. Ајде да стартуваме две врски на 10.20.20.105 истовремено:

telnet 10.20.20.105 25

На мастер треба да видиме дека двете конекции се активни и поврзани со различни сервери:

[root@tm6_1 ~]#watch ipvsadm –Ln

Поставување балансирање на оптоварување на InfoWatch Traffic Monitor

Така, имплементиравме конфигурација на TM услуги толерантна за грешки со инсталирање на балансер на еден од серверите на TM. За нашиот систем, ова го намали оптоварувањето на ТМ за половина, што овозможи да се реши проблемот со недостаток на хоризонтално скалирање со користење на системот.

Во повеќето случаи, ова решение се спроведува брзо и без дополнителни трошоци, но понекогаш има голем број ограничувања и тешкотии во конфигурацијата, на пример, при балансирање на сообраќајот на UDP.

Извор: www.habr.com

Купете доверлив хостинг за сајтови со DDoS заштита, VPS VDS сервери 🔥 Купете сигурен веб-хостинг со DDoS заштита, VPS VDS сервери | ProHoster