Безопасность коммуникации в кластере#
CedrusData позволяет настроить безопасную коммуникацию между узлами кластера, чтобы удостовериться, что только аутентифицированные узлы могут присоединиться к кластеру. Кроме этого, вы можете настроить шифрование трафика между узлами с помощью TLS.
Шифрование трафика между узлами с помощью TLS#
CedrusData позволяет включить шифрование трафика между узлами кластера с помощью TLS. Каждый узел кластера должен иметь идентичную конфигурацию TLS. В противном случае коммуникация между узлами с различной конфигурацией будет невозможна.
Обратите внимание, что настройки ниже обеспечивают зашифрованную коммуникацию только между узлами кластера CedrusData. Для шифрования трафика между клиентами CedrusData и coordinator-узлом необходима отдельная настройка TLS на coordinator-узле.
Для включения TLS между узлами CedrusData измените конфигурацию в файле config.properties следующим образом:
Убедитесь, что включена Аутентификация узлов в кластере (shared secret).
Включите автоматическое создание и проверку сертификатов:
internal-communication.https.required=true
Включите HTTPS на всех узлах:
http-server.https.enabled=true http-server.https.port=<https port>
Измените
discovery.uri
так, чтобы был использован протокол HTTPS. Обратите внимание, что при включенном TLS-шифровании между узлами в качестве адреса координатора можно использовать только IP-адрес. Hostname и FQDN (fully qualified domain name) не поддерживаются.discovery.uri=https://<coordinator ip address>:<https port>
Перезапустите все узлы CedrusData. Узлы CedrusData автоматически создадут необходимые сертификаты и начнут шифровать внутренний трафик.
Предупреждение
В более старых версиях Trino требовалось ручное создание сертификатов узлов. Если вы мигрируете с более старых версий, удалите следующие параметры конфигурации из файла config.properties:
internal-communication.https.keystore.path
internal-communication.https.truststore.path
node.internal-address-source
Влияние на производительность#
Включение шифрования может негативно сказаться на производительности запросов, так как шифрование оказывается дополнительную нагрузку на CPU. Конкретный эффект может отличаться в зависимости от окружения, запросов и нагрузки.
Для запросов, которые не требуют передачи большого количества данных между узлами, падение производительности может быть минимальным или отсутствовать.
Для запросов, которые передают существенное количество данных между узлами или значительно нагружают CPU, падение производительности может быть более существенным, от 10% и более.
Дополнительная настройка производительности#
В некоторых случаях изменение источника случайных значений может существенно улучшить производительность.
По умолчанию TLS шифрование использует системное устройство
/dev/urandom
в качестве источника энтропии. Данное устройство имеет
ограниченную пропускную способность, и потому может стать узким местом в
случае использования высокоскоростных сетей (например, InfiniBand). В
таких случаях мы рекомендуем попробовать изменить источник энтропии на
SHA1PRNG
в файле config.properties на всех узлах кластера:
http-server.https.secure-random-algorithm=SHA1PRNG
Обратите внимание, что данный источник энтропии получает изначальное
seed значение из блокирующего устройства /dev/random
, что может
оказать негативное влияние на производительность. Для устройств, которые
не могут обеспечить достаточно быструю генерацию seed значений из
/dev/random
, вы можете изменить источник энтропии на /dev/urandom
путем добавления следующей строки в файл jvm.config
:
-Djava.security.egd=file:/dev/urandom