Конфигурирането на потребителски акаунти на база данни за MariaDB MaxScale и бекенд клъстер обикновено изисква дублиране на усилия. Това е така, защото запис на акаунт трябва да съществува както за реалния клиентски хост, така и за хоста MaxScale. MaxScale удостоверява входящите потребители спрямо потребителския запис с реалния клиентски хост. Когато MaxScale създава сесията за маршрутизиране, той използва кодирането на потребителското име и паролата на клиента, за да удостовери клиента пред бекенда. Бекендът вижда връзката, идваща от машината, работеща с MaxScale. Освен ако името на хоста не използва заместващи знаци (ниска сигурност), са необходими записи и за двата хоста. Ако потребителските акаунти се променят често, това дублиране може да стане тромаво и да доведе до грешки.
MariaDB Server 10.3 добавя поддръжка за прокси протокола, който позволява на връзката да определя самостоятелно своя хост. Протоколът гласи, че когато е установена връзка, клиентът трябва първо (преди да отговори на ръкостискането на MySQL) да изпрати заглавка на прокси протокол. Тази заглавка съдържа името на хоста, от което сървърът трябва да си представи връзката, вместо да използва истинското име на хост. От съображения за сигурност прокси заглавките са разрешени само от адреси, изброени в променливата на сървъра „proxy_protocol_networks“. По този начин функцията позволява избрани ip адреси да действат като прокси сървъри, без да имате действителни потребителски акаунти в бекенда на базата данни. Като пример, заглавката „PROXY TCP4 192.168.0.1 192.168.0.2 56324 443“ инструктира сървъра да удостовери клиента, сякаш клиентът се свързва от 192.168.0.1.
Тази функция може да се използва за опростяване на управлението на потребителски акаунт при използване на MaxScale 2.2 и MariaDB Server 10.3. За да активирате функцията в MaxScale, добавете реда „proxy_protocol=on“ към дефиниция на сървъра във вашия конфигурационен файл на MaxScale (обикновено това трябва да се добави към всички секции на сървъра).
Пример за дефиниция на сървър MaxScale:
[MyServer1]
type=server
address=123.456.789.0
port=3306
protocol=MariaDBBackend
proxy_protocol=yes
Когато MaxScale се опита да създаде клиентска сесия на сървъра, MaxScale първо изпраща прокси заглавка с оригиналното име на хост на клиента. Ако IP MaxScale е намерен в рамките на „proxy_protocol_networks“ на сървъра, заглавката се чете и връзката се удостоверява с помощта на реалния клиентски адрес. За настройките на сървъра вижте документацията на сървъра за повече информация.
Ако приемем, че IP адресът на MaxScale е „111.222.333.4“, добавете следното към секцията [mysqld] на конфигурацията на сървъра:
proxy_protocol_networks = 111.222.333.4
С тези настройки входящият клиент “normal_user” не трябва да има запис за хост “111.222.333.4” в таблицата mysql.user. Изисква се само запис за истинския клиентски хост.
Вземете MariaDB MaxScale 2.2 и MariaDB Server 10.3 като част от MariaDB TX 3.0, налични за изтегляне сега.