Балансьорът на натоварване на базата данни или прокси е услуга за междинен софтуер между приложния слой и слоя на базата данни. Приложението се свързва с прокси сървъра на базата данни и проксито препраща връзката към базата данни. Използването на прокси сървър на база данни има някои предимства, например:разделяне на заявки за четене и запис, заявки за кеширане, разпространение на заявки въз основа на някакъв алгоритъм за маршрутизиране, пренаписване на заявки и мащабиране на вашето работно натоварване само за четене. Прокси сървърът на базата данни също абстрахира топологията на базата данни (и всички промени) за слоя на приложението, така че приложенията трябва да се свързват само с една единствена крайна точка.
Има различни прокси сървъри на база данни, от комерсиални до опции с отворен код, напр. HAProxy, Nginx, ProxySQL, Maxscale и т.н. В този блог ще обсъдим как да мигрирате прокси сървъри на база данни от Maxscale към ProxySQL с помощта на ClusterControl.
Текуща архитектура с Maxscale
Помислете за високодостъпна архитектура на база данни, която се състои от 3 възела в клъстер Galera и на върха на него 2 услуги Maxscale и Keepalived за висока наличност на прокси сървъра на базата данни. Galera Cluster е „виртуално“ синхронни репликации, той използва сертифициране, базирано на репликация, което гарантира, че вашите данни ще бъдат достъпни на всички възли. Текущата архитектура е показана по-долу:
Maxscale е прокси за база данни от MariaDB Corporation, който действа като междинен софтуер между приложения и бази данни.
Ето архитектурата на топологията за Galera Cluster и балансьорите на натоварване Maxscale в ClusterControl. Можете да разположите всичко това директно от ClusterControl или да импортирате съществуващи бази данни и прокси възли в ClusterControl. Можете да видите топологията на вашата база данни в раздела Топология.
Внедряване на ProxySQL и Keepalived
ProxySQL е друг прокси сървър на база данни от ProxySQL, който предоставя някои функции като кеширане на заявки, пренаписване на заявки, разделяне на заявки за запис и четене въз основа на модел на заявки. За да разположите ProxySQL в ClusterControl, трябва да отидете на Управление -> Балансиране на натоварване във вашия клъстер. ClusterControl поддържа няколко различни прокси сървъра на база данни; HAProxy, ProxySQL, MaxScale.
Изберете ProxySQL и той ще покаже страницата по-долу:
Трябва да изберем адреса на сървъра, където ще бъде инсталиран ProxySQL. Можем или да инсталираме на съществуващите възли, или ако искате да имате специален възел за ProxySQL, просто въведете IP адреса в списъка. Попълнете паролата за потребители за администриране и наблюдение, добавете потребителя на приложението в ProxySQL или можете да конфигурирате по-късно. Разрешете сървърите на бази данни да бъдат включени в набора за балансиране на натоварването в ProxySQL. Щракнете върху бутона Разгръщане на ProxySQL. Трябва да имаме поне 2 ProxySQL за висока наличност.
Ако забравим да добавим потребител на база данни в ProxySQL по време на настройката, можем да го конфигурираме в раздела потребител на ProxySQL, както е показано по-долу:
ProxySQL изисква потребителите на база данни да бъдат конфигурирани и в ProxySQL.
След внедряването на ProxySQL продължаваме да конфигурираме Keepalived на всеки хост на ProxySQL. Услугите Keepalived ще действат като главни/резервни роли в екземплярите на ProxySQL. Услугата Keepalived използва VIP (виртуален IP адрес), така че приложението ще се свърже с виртуален IP адрес на главна роля и ще препрати връзката към локалния ProxySQL. Ако услугите се провалят, VIP автоматично се прехвърля към друг възел.
Разгръщането на keepalived в ClusterControl се извършва на същата страница като прокси сървъра на базата данни, просто трябва да изберете раздела Keepalived. Изберете типа на балансиращия товар, който е ProxySQL, и след това добавете текущия ProxySQL за Keepalived1 и Keepalived2. Попълнете виртуалния IP адрес и мрежовия интерфейс. И накрая, щракнете върху бутона Deploy Keepalived.
Изпълнението на два ProxySQL с Keepalived услуги ни дава прокси слой с висока достъпност. В ClusterControl той е показан в изгледа на топологията по-долу:
Превключване
Превключването на трафика е наистина лесно, просто трябва да промените връзката на ip адреса в слоя на приложението, за да използвате виртуален IP адрес за ProxySQL, и след това да наблюдавате трафика през ProxySQL.