Требования к SSL-сертификатам
Для реализации шифрования между узлами выполните шаги, описанные ниже.
-
Создайте сертификат для каждого узла, используя алгоритм RSA. Длина ключа должна быть 2048 бит, значение CN должно содержать FQDN соответствующего узла. Не рекомендуется использовать алгоритм DSA, а также алгоритм ECDSA из-за того, что этот алгоритм не очень широко поддерживается сертификационными центрами.
Длина ключа, равная 2048 битам, является необходимой и достаточной для реализации надежного шифрования.
-
Создайте хранилище ключей trustore.jks, которое будет содержать необходимые сертификаты. Путь к этому хранилищу должен быть указан для запуска SSL.
ПРИМЕЧАНИЕ-
Сертификаты должны быть подписаны ключом, принадлежащим одному из доверенных корневых сертификатов, включенных в хранилище сертификатов Java.
-
Самоподписанные сертификаты разрешены. В этом случае корневой сертификат должен быть добавлен в хранилище trustore.jks.
-
Nginx требует OpenSSL-сертификаты. Если ваш кластер использует Nginx (с Hive TezUI или Airflow), сгенерируйте ключи и сертификаты OpenSSL. OpenSSL-сертфикат для вашего хоста необходимо добавить в хранилище ca-bundle.crt.
-
Учетная запись, используемая для установки сертификатов, должна иметь права на запись в следующие директории:
-
/etc/pki/tls/certs/
-
/etc/pki/java/
-
-
В качестве alias ключа в keystore.jks используйте FQDN, а не короткое имя.
-
-
Включите трафик между узлами в соответствии с приведенной ниже таблицей.
Приведенный ниже скрипт создает все необходимые сущности и может быть использован для справки:
#!/bin/bash # Script for generate and import self-signet certificates to java keystore # Edit NUMHOSTS and HOSTS as it will be suitable for your case. declare -a NUMHOSTS declare -a HOSTS SSH_OPTS='-o GlobalKnownHostsFile=/dev/null -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' NUMHOSTS=(1 2 3) HOSTS=$(for i in "${NUMHOSTS[@]}"; do echo "adh-$i.ru-central1.internal"; done) echo Generate keystore.jks on each host for HOST in $HOSTS; do ssh $SSH_OPTS $HOST "keytool -genkey -noprompt -keyalg RSA -alias $HOST -dname \"CN=$HOST, OU=AD, O=AD, L=MSK, S=MO, C=RU\" -keystore /tmp/keystore.jks -storepass bigdata -keypass bigdata -validity 360 -keysize 2048"; done echo echo Export certificates for HOST in $HOSTS;do ssh $SSH_OPTS $HOST "keytool -export -file /tmp/$HOST.crt -keystore /tmp/keystore.jks -storepass bigdata -alias $HOST -rfc"; done echo echo Collect all certificates for HOST in $HOSTS; do scp $SSH_OPTS $HOST:/tmp/$HOST.crt /tmp/ done echo echo Transfer certificates on hosts for HOST in $HOSTS; do scp $SSH_OPTS /tmp/*.crt $HOST:/tmp/ done echo echo Import certificates on each host for HOST in $HOSTS; do ssh $SSH_OPTS $HOST "for CERT in $(echo ${HOSTS[*]}); do keytool -import -noprompt -alias \$CERT -file /tmp/\$CERT.crt -keystore /tmp/truststore.jks -storepass bigdata; sudo bash -c \"cat /tmp/\$CERT.crt >> /etc/pki/tls/certs/ca-bundle.crt\"; done"; done echo echo Import truststore to Java CA store for HOST in $HOSTS; do ssh $SSH_OPTS $HOST "sudo keytool -importkeystore -noprompt -srckeystore /tmp/truststore.jks -destkeystore /etc/pki/java/cacerts -deststorepass changeit -srcstorepass bigdata" done
Сопоставление портов и служб HTTP/HTTPS Сервис Компонент/Сервер Порт Протокол Описание Airflow
Server
8080/8080
HTTP/HTTPS
Порт веб-интерфейса Airflow Server
Server/Worker
8793/8793
HTTP/HTTPS
Порт для доступа к Celery Worker API
Server/Flower
5555/5555
HTTP/HTTPS
Порт веб-интерфейса Flower
Flink
Job Manager
8081/8081
HTTP/HTTPS
Порт веб-интерфейса Flink Job Manager
HBase
HBase Region
16030/16030
HTTP/HTTPS
Порт веб-интерфейса HBase Region Server
Phoenix Query Server
8765/8765
HTTP/HTTPS
Порт для доступа к API
HBase REST Server
60080/60080
HTTP/HTTPS
Порт для доступа к API
HBase REST Server
8085/8085
HTTP/HTTPS
Web UI Port
HBase Master
16010/16010
HTTP/HTTPS
Порт веб-интерфейса HBase Master
HBaseThrift2Server
Trift2 Server
9095/9095
HTTP/HTTPS
Порт веб-интерфейса Thrift2 Server
HDFS
NameNode
9870/9871
HTTP/HTTPS
Порт веб-интерфейса NameNode
DataNode
9864/9865
HTTP/HTTPS
Порт веб-интерфейса DataNode
JournalNode
8480/8481
HTTP/HTTPS
Порт веб-интерфейса JournalNode
HTTPfs server
14000/14000
HTTP/HTTPS
Порт для доступа к HTTPfs API
Hive
Hive Server
10002/10002
HTTP/HTTPS
Порт веб-интерфейса Hive Server
Tez
9999/9999
HTTP/HTTPS
Порт веб-интерфейса Tez
Knox
Knox Gateway
8443
HTTPS
Порт шлюза
Ranger
Ranger Admin
6080/6182
HTTP/HTTPS
Порт для доступа к API и веб-интерфейсу Ranger Admin
Ranger KMS
9292/9393
HTTP/HTTPS
Порт для Ranger KMS
Solr
Solr Server
8983/8985
HTTP/HTTPS
Порт для доступа к веб-интерфейсу и API Solr Server
Spark
History Server
18082/18082
HTTP/HTTPS
Порт веб-интерфейса History Server
Thrift Server
4040/4040
HTTP/HTTPS
Порт веб-интерфейса Thrift Server
Livy Server
8998/8998
HTTP/HTTPS
Порт веб-интерфейса Livy Server
YARN
Resource Manager
8088/8090
HTTP/HTTPS
Порт веб-интерфейса Resource Manager
Node Manager
8042/8044
HTTP/HTTPS
Порт веб-интерфейса Node Manager
MapReduce History Server
19888/19890
HTTP/HTTPS
Порт веб-интерфейса History Server
Timeline Server
8188/8190
HTTP/HTTPS
Порт веб-интерфейса Timeline Server
Zeppelin
Server
8180/8180
HTTP/HTTPS
Порт веб-интерфейса Zeppelin