В этой статье мы узнаем, как удалить ccess Control Lists (или сокращенно ACL) с помощью карт для выбора серверной части на основе параметра запроса. Преимущество использования карт вместо списков контроля доступа состоит в том, что иногда бывает проще обновить отображение, чем список контроля доступа.

Перед тем как начать, мы должны сначала понять, что такое ACL.

О списках контроля доступа

HAProxy® поддерживает списки ACL. Их можно использовать для проверки условий и выполнения заданного действия. Мы можем определить условие теста с помощью ключевого слова acl.

Синтаксис:

acl <aclname> <criterion> [flags] [operator] [<value>] …
acl blog_page path_beg /blog

В этом случае ACL соответствует, если путь запроса пользователя начинается с «/ blog».

Точно так же у нас есть разные способы записи ACL. Например:

acl blog_detail_page path_reg ^\/blog\/:id$

›› Использование списков контроля доступа HAProxy:

Это простой пример конфигурации. Мы покажем вам, как выбрать серверную часть с помощью списков контроля доступа.

# It looks at the path, and if it matches
# `/api/v1/service1` | `/api/v1/service2` | `/api/v1/service3`
# checking whether acl is true or not.
acl acl_service1 path -i eq /api/v1/service1
acl acl_service2 path -i eq /api/v1/service2
acl acl_service3 path -i eq /api/v1/service3
# Make use of the backend `backend_service1` if the acl `acl_service1`
# evaluates to `true`.
use_backend backend_service1 if acl_service1
use_backend backend_service2 if acl_service2
use_backend backend_service3 if acl_service3
# A static backend that will simply serve some files from a 127.0.0.1 server
backend backend_service1
server worker_service1 127.0.0.1:3300
backend backend_service2
server worker_service2 127.0.0.1:3100
backend backend_service3
server worker_service3 127.0.0.1:3200
With this configuration, we can take HAProxy and start it up.

Глядя на то, что происходит, мы видим, что эта работа очень хорошо подходит для поиска по карте.

Что такое карты?

Карта - это простой построчный файл пары ключ-значение. Каждый ключ отделяется от своего значения пробелом, а расширение файла должно быть «.map».

›› Пример HAProxy Maps:

Прежде чем показывать пример карты, нам нужен хотя бы один файл карты, поэтому ниже представлен файл карты, который мы используем в нашем примере карты.

maps / services.map

Каждый раз, когда вы перезапускаете HAProxy, он просматривает этот файл, а затем помещает это отображение в память, чтобы он мог очень быстро выполнять поиск.

Это файл карты, который мы используем в use_backend.

^\/api\/v1\/service1$ backend_service1
^\/api\/v1\/service2$ backend_service2
^\/api\/v1\/service3$ backend_service3

В этом примере мы удалим списки ACL HAProxy с картами HAProxy.

use_backend %[path,map_reg(/etc/haproxy/maps/services.map)]
backend backend_service1
server worker_service1 127.0.0.1:3300
backend backend_service2
server worker_service2 127.0.0.1:3100
backend backend_service3
server worker_service3 127.0.0.1:3200

Как видим, использование карты позволяет упростить нашу настройку.

Заключение

Здесь я показал вам один из вариантов использования карт HAProxy. Очень часто требуется имя серверной части. Используя карты HAProxy, мы можем упростить использование ACL в нашей конфигурации.



Спасибо за внимание!

HAProxy® - зарегистрированная торговая марка в США и Франции, принадлежащая HAProxy Technologies LLC и ее аффилированным лицам. DLT Labs является товарным знаком DLT Global, Inc.

Автор - Сатиш Кумар Ядав, DLT Labs

Об авторе: Сатиш - молодой профессионал, который в настоящее время работает разработчиком NodeJs в группе разработки продуктов DL Data Consent. В свободное время любит играть в крикет.

Отказ от ответственности: эта статья изначально была опубликована на странице блога DLT Labs: https://www.dltlabs.com/blog/how-to-remove-haproxy-acls-using-maps-875350

Ссылки:

Http://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7.1

HAProxy версии 1.7.12 - Руководство по настройке (cbonte.github.io)