23
Матвей Елютин Внедрение балансировки нагрузки на основе Linux IPVS

Elutin lvs prez-2

Embed Size (px)

Citation preview

Page 1: Elutin lvs prez-2

Матвей Елютин

Внедрение балансировки нагрузки на основе Linux IPVS

Page 2: Elutin lvs prez-2

Тяжело? Что можно сделать?

Page 3: Elutin lvs prez-2

Что такое хорошо и что такое плохо

DNS Round-Robin Проксирование

Пропускная способность

Аппаратные решения

Page 4: Elutin lvs prez-2

Linux Virtual Server

quagga

Page 5: Elutin lvs prez-2

БалансерVIP

RealRealRealReal

IPVSИнтернет

Page 6: Elutin lvs prez-2

БалансерVIP — 100.100.100.100

Real172.16.2.5

Real172.16.2.7

IP — 100.2.3.4

src: 100.100.100.100:80 dst: 100.2.3.4:45678

src: 100.2.3.4:45678dst: 100.100.100.100:80

src: 100.2.3.4:45678dst: 172.16.2.7:80

src: 172.16.2.7:8080dst: 100.2.3.4:45678

NATИнтернет

Page 7: Elutin lvs prez-2

БалансерVIP 100.100.100.100

RealVIP alias 100.100.100.100

Общая сеть

DirectRoutingdata frame

dst mac: bal data frame

dst mac: real data frame

RealVIP alias 100.100.100.100

Интернет

Page 8: Elutin lvs prez-2

БалансерVIP

RealVIP alias

RealVIP alias

tunnel

Tunnelingipip encapsulation

Интернет

Сеть

Page 9: Elutin lvs prez-2

src: vip dst: client datasrc: client dst: vip data

Original

Src: bal dst real

БалансерVIP

realRealIP VIP

src: client dst: vip data

Original Packet

Added IP Headersrc: client dst: vip datasrc: client dst: vip data

Answer to client

Инкапсуляция внутри

Page 10: Elutin lvs prez-2

● последовательно● по числу соединений● lblc,lblcr,sh,dh...

Выбор real-сервера

Page 11: Elutin lvs prez-2

● Железо (cpu, msi-x net)● Настройки igb● irqbalance ● Настройки bond● MTU● Настройки arp

Внутри балансера

Page 12: Elutin lvs prez-2

БалансерVIP

Real Real Real

Database Cache Storage

СинхронизацияТопология

Page 13: Elutin lvs prez-2

● Настройки arp● ip_forward = 1● MTU● Туннели● Сервисы

Внутри real-сервера

Page 14: Elutin lvs prez-2

Создать: root@balancer:ipvsadm -A -t 90.91.92.93 -s wrrroot@balancer:ipvsadm -a -t 90.91.92.93 -r 30.30.30.30 -w 5 -iroot@balancer:ipvsadm -a -t 90.91.92.93 -r 30.30.30.31 -w 1 -i Изменить:root@balancer: ipvsadm -e -t 90.91.92.93 -r 30.30.30.31 -w 5 -i

Запускаем балансировку

Page 15: Elutin lvs prez-2

Посмотреть:root@balancer:ipvsadm -Ln -> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 100.100.100.100:110 wlc -> 25.35.45.50:110 Tunnel 2 1171 23120 -> 35.45.55.65:110 Tunnel 6 3096 67802 -> 45.55.65.75:110 Tunnel 0 183 12144

Что происходит на балансере

Page 16: Elutin lvs prez-2

Балансер

VIP

Real

keepalived

database cache

Код ответаСодержимое Время ответа

Живой?

Page 17: Elutin lvs prez-2

● HTTP + SSL● TCP + STMP● MISC● ICMP (MTU)● POP

Проверки keepalived

Page 18: Elutin lvs prez-2

БалансерVIP

БалансерVIP

Real

virtual_server 100.100.100.100 110 { delay_loop 2 lb_algo wrr lb_kind TUN protocol TCP

real_server 30.40.50.60 110 { weight 10 TCP CHECK { connect_port 11111 nb_get_retry 1 delay_before_retry 2 connect_timeout 2 } ICMP_CHECK { size 1520 }}

Делаем keepalived.conf

vrrp

Page 19: Elutin lvs prez-2

Интернет

Router

БалансерVIP

quagga

Real

rip update

проверка

Подключаем quagga

Page 20: Elutin lvs prez-2

БалансерVIP

Router

quaggaБалансер

VIP

quagga

ЦОД1

Real Real Real Real. . .

Интернет

БалансерVIP

Router

quaggaБалансер

VIP

quagga

ЦОД2

Page 21: Elutin lvs prez-2

Мониторим все

● Сервис● Балансеры● Real-сервера

Page 22: Elutin lvs prez-2

Получилось!

● Гибкость● Деньги● Быстродействие● Отказоустойчивость

Page 23: Elutin lvs prez-2

Матвей ЕлютинРуководитель группы системных

администраторов[email protected]

СПАСИБО!