Как добавить ноды в кластер, подскажите пожалуйста? Нужен ли рестарт всего кластера после добавления новых нод? Всем нодам (и дата, и мастерам) нужно прописывать новые ноды в конфигах, или достаточно только одинакового имени кластера у всех?
ca.crt есть - получается нужно добавить только на каждую ноду в конфиг elasticsearch.yml в discovery.seed_hosts новые ноды и все - ноды появятся в кластере без рестарта?
Да. Более того discovery.seed_hosts нужен будет только, если надо узлы перестартовать. Пока узлы подсоединены к кластеру, они о новых узлах от мастер-узла узнают.
Enter password for CA (/etc/elasticsearch/certs/ca/ca.crt) :
Exception in thread "main" java.io.IOException: toDerInputStream rejects tag type 45
at java.base/sun.security.util.DerValue.toDerInputStream(DerValue.java:860)
at java.base/sun.security.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1982)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:220)
at java.base/java.security.KeyStore.load(KeyStore.java:1472)
at org.elasticsearch.xpack.core.ssl.CertParsingUtils.readKeyStore(CertParsingUtils.java:75)
at org.elasticsearch.xpack.core.ssl.CertParsingUtils.readKeyPairsFromKeystore(CertParsingUtils.java:141)
at org.elasticsearch.xpack.core.ssl.CertParsingUtils.readPkcs12KeyPairs(CertParsingUtils.java:134)
at org.elasticsearch.xpack.security.cli.CertificateTool$CertificateCommand.lambda$loadPkcs12CA$1(CertificateTool.java:342)
at org.elasticsearch.xpack.security.cli.CertificateTool.withPassword(CertificateTool.java:933)
at org.elasticsearch.xpack.security.cli.CertificateTool.access$100(CertificateTool.java:85)
at org.elasticsearch.xpack.security.cli.CertificateTool$CertificateCommand.loadPkcs12CA(CertificateTool.java:341)
at org.elasticsearch.xpack.security.cli.CertificateTool$CertificateCommand.getCAInfo(CertificateTool.java:329)
at org.elasticsearch.xpack.security.cli.CertificateTool$GenerateCertificateCommand.execute(CertificateTool.java:685)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:91)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.xpack.security.cli.CertificateTool.main(CertificateTool.java:137)
пароля у меня точно нет.
Подскажите, как это сделать? Мне не нужно генерить новый ca.crt, а воспользоваться старым. Его я генерировал без пароля, пример находится в первом посте.
--pem генерирует ключи в формате PEM. --ca ожидает ключ в формате PKCS#12. Для использования в формате PEM, надо задать --ca-crt вместо --ca, но он потребует от вас тк же задать--ca-key, которого у вас может не быть, если вы не генерировали сертификат с параметром --keep-ca-key.
Да, видимо моя проблема в том, что у меня нет ca.key.
Я генерил ключи так:
elasticsearch-certutil cert ca --pem --in instances.yml --out certs.zip --days 9999
и в архиве был только ca.crt.
Получается что теперь я на старый CA не смогу добавить новые ноды? Но как бы мне сделать добавление нод максимально "бесшовным" в моей ситуации? Выпустить новые серты для всех 5 нод, а потом добавить два ca.crt в elasticsearch.yml в
xpack.security.http.ssl.certificate_authorities и в xpack.security.transport.ssl.certificate_authorities - а потом перезапускать ноды по одной, и удалять старый ca.crt?
Мне бы сделать это без полного перезапуска кластера, по одной ноде.
Зачем для всех 5? Можно только для новых и постараться при этом сохранить private key, чтобы больше такая ситуация не повторилась.
Зачем надо удалять старый сертификат? Можно просто дать всем и старый и новый. И в последующем использовать только новый для новых узлов, пока старые узлы не отомрут.
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.