Репозиторий S3
Вы можете использовать AWS S3 в качестве репозитория для снапшотов/восстановления.
Если вы ищете размещённое решение Elasticsearch в AWS, посетите https://www.elastic.co/cloud/.
Посмотрите это видео для пошагового руководства по подключению репозитория AWS S3.
Начало работы
Для регистрации репозитория S3 укажите тип как s3 при создании репозитория. Репозиторий по умолчанию использует учетные данные ECS IAM Role для аутентификации. Также вы можете использовать учетные записи Kubernetes service accounts для аутентификации.
Единственным обязательным параметром является имя ведра:
resp = client.snapshot.create_repository(
name="my_s3_repository",
repository={
"type": "s3",
"settings": {
"bucket": "my-bucket"
}
},
)
print(resp) const response = await client.snapshot.createRepository({
name: "my_s3_repository",
repository: {
type: "s3",
settings: {
bucket: "my-bucket",
},
},
});
console.log(response); PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket"
}
} Настройки клиента
Клиент, используемый для подключения к S3, имеет ряд доступных настроек. Настройки имеют вид s3.client.CLIENT_NAME.SETTING_NAME. По умолчанию, s3 хранилища используют клиента с именем default, но это можно изменить с помощью настройки хранилища client. Например:
resp = client.snapshot.create_repository(
name="my_s3_repository",
repository={
"type": "s3",
"settings": {
"bucket": "my-bucket",
"client": "my-alternate-client"
}
},
)
print(resp) const response = await client.snapshot.createRepository({
name: "my_s3_repository",
repository: {
type: "s3",
settings: {
bucket: "my-bucket",
client: "my-alternate-client",
},
},
});
console.log(response); PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket",
"client": "my-alternate-client"
}
} Большинство настроек клиента можно добавить в файл конфигурации elasticsearch.yml, за исключением защищённых настроек, которые добавляются в хранилище ключей Elasticsearch. Дополнительную информацию о создании и обновлении хранилища ключей Elasticsearch см. в Разделе настроек безопасности.
Например, если вы хотите использовать определённые учетные данные для доступа к S3, выполните следующие команды, чтобы добавить эти учетные данные в хранилище ключей.
bin/elasticsearch-keystore add s3.client.default.access_key bin/elasticsearch-keystore add s3.client.default.secret_key # a session token is optional so the following command may not be needed bin/elasticsearch-keystore add s3.client.default.session_token
Если вместо этого вы хотите использовать роль экземпляра или роль контейнера для доступа к S3, оставьте эти настройки не заданными. Вы можете переключиться с использования определённых учетных данных обратно к использованию роли экземпляра или роли контейнера по умолчанию, удалив эти настройки из хранилища ключей следующим образом:
bin/elasticsearch-keystore remove s3.client.default.access_key bin/elasticsearch-keystore remove s3.client.default.secret_key # a session token is optional so the following command may not be needed bin/elasticsearch-keystore remove s3.client.default.session_token
Все защищённые настройки клиента этого типа хранилища перезагружаемые. Вы можете определить эти настройки до запуска узла или вызвать API перезагрузки защищённых настроек узлов после определения настроек, чтобы применить их к работающему узлу.
После перезагрузки настроек внутренние s3 клиенты, используемые для передачи содержимого моментального снимка, будут использовать последние настройки из хранилища ключей. Любые существующие s3 хранилища, а также любые вновь созданные хранилища, будут использовать новые значения, сохранённые в хранилище ключей.
Задачи снимка/восстановления в процессе не будут прерваны перезагрузкой защищённых настроек клиента. Задача будет завершена с использованием клиента, как он был сконфигурирован при начале операции.
Следующий список содержит доступные настройки клиента. Те, которые должны храниться в хранилище ключей, помечены как «защищённые» и являются перезагружаемыми; другие настройки относятся к файлу elasticsearch.yml.
-
access_key(Защищённые, перезагружаемые) - Ключ доступа к S3. Если задан, также необходимо указать настройку
secret_key. Если не задан, клиент будет использовать роль экземпляра или контейнера. -
secret_key(Защищённые, перезагружаемые) - Секретный ключ доступа к S3. Если задан, также необходимо указать настройку
access_key. -
session_token(Защищённые, перезагружаемые) - Токен сессии S3. Если задан, также необходимо указать настройки
access_keyиsecret_key. -
endpoint - Конечная точка сервиса S3 для подключения. По умолчанию используется
s3.amazonaws.com, но в документации AWS перечислены альтернативные конечные точки S3. Если вы используете совместимый с S3 сервис, то вы должны установить эту настройку на конечную точку сервиса. -
protocol - Протокол для подключения к S3. Допустимые значения —
httpилиhttps. По умолчанию используетсяhttps. При использовании HTTPS, этот тип хранилища проверяет цепочку сертификатов хранилища с помощью общесистемного хранилища доверенных сертификатов JVM. Убедитесь, что корневой сертификат авторитета находится в этом хранилище с помощью инструмента JVMkeytool. Если у вас есть собственный сертификат авторитета для вашего хранилища S3 и вы используете встроенный JDK Elasticsearch, вам потребуется переустановить сертификат CA каждый раз при обновлении Elasticsearch. -
proxy.host - Имя хоста прокси-сервера для подключения к S3.
-
proxy.port - Порт прокси-сервера для подключения к S3.
-
proxy.scheme - Схема для подключения к прокси-серверу S3. Допустимые значения —
httpилиhttps. По умолчанию используетсяhttp. Эта настройка позволяет указать протокол, используемый для связи с прокси-сервером. -
proxy.username(Защищённые, перезагружаемые) - Имя пользователя для подключения к
proxy.host. -
proxy.password(Защищённые, перезагружаемые) - Пароль для подключения к
proxy.host. -
read_timeout - (значение времени) Максимальное время, которое Elasticsearch будет ждать получения следующего байта данных по установленному открытому соединению с хранилищем, прежде чем закрыть соединение. Значение по умолчанию составляет 50 секунд.
-
max_connections - Максимальное количество одновременных подключений к S3. Значение по умолчанию —
50. -
max_retries - Количество попыток повтора при сбоях запроса к S3. Значение по умолчанию —
3. -
use_throttle_retries - Следует ли ограничивать повторные попытки (т.е. должна ли происходить отсрочка). Должно быть
trueилиfalse. Значение по умолчанию —true. -
path_style_access - Принудительно использовать паттерн доступа по стилю пути. Если
true, то будет использоваться паттерн доступа по стилю пути. Еслиfalse, то паттерн доступа будет определяться автоматически AWS Java SDK (см. документацию AWS для получения подробностей). Значение по умолчанию —false.
В версиях 7.0, 7.1, 7.2 и 7.3 все операции с ведром использовали ныне устаревший паттерн доступа по стилю пути. Если ваш развертывание требует паттерн доступа по стилю пути, то вы должны установить эту настройку на true при обновлении.
-
disable_chunked_encoding - Следует ли отключать кодирование кусками или нет. Если
false, кодирование кусками включено и будет использоваться при необходимости. Еслиtrue, кодирование кусками отключено и не будет использоваться, что может означать, что операции со снимками потребляют больше ресурсов и занимают больше времени для завершения. Его следует установить наtrueтолько если вы используете сервис хранения, который не поддерживает кодирование кусками. См. документацию AWS Java SDK для получения подробностей. Значение по умолчанию —false. -
region - Позволяет указать регион подписи для использования. Для большинства случаев ручное указание этой настройки не требуется. Как правило, SDK правильно определяет регион подписи для использования. Его следует рассматривать как настройку экспертного уровня для поддержки совместимых с S3 API, которые требуют подписи v4 и используют регион, отличный от значения по умолчанию
us-east-1. По умолчанию пустая строка, что означает, что SDK попытается автоматически определить правильный регион подписи. -
signer_override - Позволяет указать имя алгоритма подписи для подписи запросов клиентом S3. Для большинства случаев ручное указание этой настройки не требуется. Его следует рассматривать как настройку экспертного уровня для поддержки совместимых с S3 API, которые не поддерживают алгоритм подписи, который SDK определяет автоматически. См. документацию AWS Java SDK для получения подробностей. По умолчанию пустая строка, что означает, что никакой алгоритм подписи не будет переопределён.
Настройки репозитория
Тип репозитория s3 поддерживает ряд настроек для настройки способа хранения данных в S3. Эти настройки можно указать при создании репозитория. Например:
resp = client.snapshot.create_repository(
name="my_s3_repository",
repository={
"type": "s3",
"settings": {
"bucket": "my-bucket",
"another_setting": "setting-value"
}
},
)
print(resp) const response = await client.snapshot.createRepository({
name: "my_s3_repository",
repository: {
type: "s3",
settings: {
bucket: "my-bucket",
another_setting: "setting-value",
},
},
});
console.log(response); PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"bucket": "my-bucket",
"another_setting": "setting-value"
}
} Поддерживаются следующие настройки:
-
bucket -
(Обязательно) Имя S3-бакета для использования с моментальными снимками.
Имя бакета должно соответствовать правилам именования бакетов Amazon S3.
-
client - Имя клиента S3 для подключения к S3. По умолчанию используется
default. -
base_path -
Указывает путь к данным репозитория в его бакете. По умолчанию — пустая строка, что означает, что репозиторий находится в корне бакета. Значение этой настройки не должно начинаться или заканчиваться
/.Не устанавливайте
base_pathпри настройке репозитория моментальных снимков для Elastic Cloud Enterprise. Elastic Cloud Enterprise автоматически генерируетbase_pathдля каждого развертывания, чтобы несколько развертываний могли использовать один и тот же бакет. -
chunk_size - (значение байтов) Максимальный размер объекта, который Elasticsearch будет записывать в репозиторий при создании моментального снимка. Файлы, превышающие
chunk_size, будут разбиты на несколько меньших объектов. Elasticsearch также может разбить файл на несколько объектов, чтобы удовлетворить другим ограничениям, таким как ограничениеmax_multipart_parts. По умолчанию5TB, что является максимальным размером объекта в AWS S3. -
compress - При установке в значение
trueметаданные хранятся в сжатом формате. Эта настройка не влияет на файлы индексов, которые по умолчанию уже сжаты. По умолчаниюtrue. -
max_restore_bytes_per_sec - (Необязательно, значение байтов) Максимальная скорость восстановления моментальных снимков на узел. По умолчанию без ограничений. Обратите внимание, что восстановления также ограничиваются настройками восстановления.
-
max_snapshot_bytes_per_sec - (Необязательно, значение байтов) Максимальная скорость создания моментальных снимков на узел. По умолчанию
40mbв секунду. Обратите внимание, что если установлены настройки восстановления для управляемых служб, то по умолчанию без ограничений, и скорость также ограничивается настройками восстановления.
-
readonly -
(Необязательно, Булево) Если
true, репозиторий является только для чтения. Кластер может извлекать и восстанавливать моментальные снимки из репозитория, но не записывать в репозиторий или создавать в нем моментальные снимки.Только кластер с правом записи может создавать моментальные снимки в репозитории. Все остальные кластеры, подключенные к репозиторию, должны иметь параметр
readonly, установленный в значениеtrue.Если
false, кластер может записывать в репозиторий и создавать моментальные снимки в нем. По умолчаниюfalse.Если вы регистрируете один и тот же репозиторий моментальных снимков с несколькими кластерами, только один кластер должен иметь право записи в репозиторий. Одновременное одновременное записывание в репозиторий несколькими кластерами может привести к повреждению содержимого репозитория.
-
server_side_encryption - При установке в
trueфайлы шифруются на сервере с помощью алгоритма AES256. По умолчаниюfalse. -
buffer_size - (значение байтов) Минимальный порог, ниже которого фрагмент загружается с помощью одного запроса. За этим порогом репозиторий S3 будет использовать API AWS Multipart Upload для разделения фрагмента на несколько частей, каждая длиной
buffer_size, и загрузки каждой части в отдельном запросе. Обратите внимание, что установка размера буфера меньше5mbне допускается, так как это предотвратит использование API Multipart и может привести к ошибкам загрузки. Также нельзя установить размер буфера больше5gb, так как это максимальный размер загрузки, разрешенный в S3. По умолчанию100mbили5%кучи JVM, что меньше. -
max_multipart_parts - (целое число) Максимальное количество частей, которые Elasticsearch запишет во время многочастотной загрузки одного объекта. Файлы, превышающие
buffer_size × max_multipart_parts, будут разбиты на несколько меньших объектов. Elasticsearch также может разбить файл на несколько объектов, чтобы удовлетворить другим ограничениям, таким как ограничениеchunk_size. По умолчанию10000, что является максимальным количеством частей в многочастотной загрузке в AWS S3. -
canned_acl - Репозиторий S3 поддерживает все S3 предопределенные разрешения доступа :
private,public-read,public-read-write,authenticated-read,log-delivery-write,bucket-owner-read,bucket-owner-full-control. По умолчаниюprivate. Вы можете указать предопределенное разрешение доступа, используя настройкуcanned_acl. При создании бакетов и объектов репозиторием S3 добавляется предопределенное разрешение доступа в бакеты и объекты. -
storage_class - Устанавливает класс хранения S3 для объектов, записанных в репозиторий. Значения могут быть
standard,reduced_redundancy,standard_ia,onezone_iaиintelligent_tiering. По умолчаниюstandard. Дополнительная информация о классах хранения S3 содержится в разделе о классах хранения S3. -
delete_objects_max_size - (целое число) Устанавливает максимальный размер пакета, от 1 до 1000, используемый для
DeleteObjectsзапросов. По умолчанию 1000, что является максимальным числом, поддерживаемым API AWS DeleteObjects. -
max_multipart_upload_cleanup_size - (целое число) Устанавливает максимальное количество, возможно, висящих многочастотных загрузок для очистки в каждой порции удаления моментальных снимков. По умолчанию
1000, что является максимальным числом, поддерживаемым API AWS ListMultipartUploads. Если установлено в0, Elasticsearch не будет пытаться очистить висячие многочастотные загрузки.
Вариант определения настроек клиента в настройках репозитория, как описано ниже, считается устаревшим и будет удален в будущей версии.
Помимо вышеуказанных настроек, вы также можете указать все настройки клиента, не связанные с безопасностью, в настройках репозитория. В этом случае настройки клиента, найденные в настройках репозитория, будут объединены с настройками именованного клиента, используемого репозиторием. При конфликтах между настройками клиента и репозитория настройки репозитория имеют приоритет над настройками клиента.
Например:
resp = client.snapshot.create_repository(
name="my_s3_repository",
repository={
"type": "s3",
"settings": {
"client": "my-client",
"bucket": "my-bucket",
"endpoint": "my.s3.endpoint"
}
},
)
print(resp) const response = await client.snapshot.createRepository({
name: "my_s3_repository",
repository: {
type: "s3",
settings: {
client: "my-client",
bucket: "my-bucket",
endpoint: "my.s3.endpoint",
},
},
});
console.log(response); PUT _snapshot/my_s3_repository
{
"type": "s3",
"settings": {
"client": "my-client",
"bucket": "my-bucket",
"endpoint": "my.s3.endpoint"
}
} Это создает репозиторий, который использует все настройки клиента из клиента my_client_name, за исключением endpoint, которая переопределяется на my.s3.endpoint настройками репозитория. `
Классы хранения S3
Amazon S3 поддерживает различные классы хранения, каждый из которых предлагает разные характеристики работы. Например, некоторые классы стоят меньше за байт хранимых данных в месяц, но дороже за запрос, а другие классы могут отличаться по гарантиям доступности.
Вы можете указать класс хранения, который Elasticsearch использует для хранения объектов данных, с помощью настройки репозитория storage_class.
Изменение настройки storage_class в существующем репозитории влияет только на класс хранения для вновь созданных объектов, что приводит к смешанному использованию классов хранения.
Вы можете использовать политику жизненного цикла S3 для изменения класса хранения существующих объектов в вашем репозитории, но вы не должны переводить объекты в недопустимый класс, такой как классы Glacier, и вы не должны истекать объекты. Если вы используете класс Glacier или другой недопустимый класс хранения или истечение срока действия объекта, вы можете навсегда потерять доступ к содержимому своего репозитория.
Вы можете использовать класс хранения intellligent_tiering для автоматического управления классом объектов, но вы не должны включать дополнительные уровни доступа к архивам или глубокому архиву. Если вы используете эти уровни, вы можете навсегда потерять доступ к содержимому своего репозитория.
Дополнительная информация о классах хранения S3 доступна в Руководстве по классам хранения AWS S3.
Рекомендуемые разрешения S3
Для ограничения процесса создания снимков Elasticsearch до минимально необходимых ресурсов рекомендуется использовать Amazon IAM в сочетании с уже существующими хранилищами S3. Вот пример политики, которая разрешит доступ к снимкам для хранилища S3 с именем «snaps.example.com». Это можно настроить через консоль AWS IAM, создав пользовательскую политику и используя документ политики, аналогичный этому (изменив snaps.example.com на имя вашего хранилища).
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com/*"
]
}
],
"Version": "2012-10-17"
} Вы можете дополнительно ограничить разрешения, указав префикс внутри хранилища, например, «foo».
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListBucketMultipartUploads",
"s3:ListBucketVersions"
],
"Condition": {
"StringLike": {
"s3:prefix": [
"foo/*"
]
}
},
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com"
]
},
{
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::snaps.example.com/foo/*"
]
}
],
"Version": "2012-10-17"
} Хранилище должно существовать для регистрации репозитория снимков. Если вы не создали хранилище, регистрация репозитория завершится ошибкой.
Использование ролей IAM для учетных записей Kubernetes для аутентификации
Если вы хотите использовать учетные записи Kubernetes для аутентификации, вам нужно добавить символическую ссылку на переменную среды $AWS_WEB_IDENTITY_TOKEN_FILE (которая должна быть автоматически установлена подсистемой Kubernetes) в директории конфигурации репозитория S3, чтобы репозиторий мог получить доступ для чтения для учетной записи сервиса (репозиторий не может читать файлы вне своей директории конфигурации). Например:
mkdir -p "${ES_PATH_CONF}/repository-s3"
ln -s $AWS_WEB_IDENTITY_TOKEN_FILE "${ES_PATH_CONF}/repository-s3/aws-web-identity-token-file" Символическая ссылка должна быть создана на всех узлах, подходящих для данных и мастер-узлах, и быть доступна для чтения пользователю elasticsearch. По умолчанию Elasticsearch работает как пользователь elasticsearch с UID:GID 1000:0.
Если символическая ссылка существует, она будет использоваться по умолчанию всеми репозиториями S3, у которых нет явных client учетных данных.
Настройки пропускной способности AWS VPC
Инстансы AWS разрешают S3-эндпоинты по общедоступному IP. Если инстансы Elasticsearch находятся в частной подсети в AWS VPC, весь трафик к S3 будет проходить через NAT-инстанс VPC. Если ваш NAT-инстанс VPC имеет меньший размер (например, t2.micro) или обрабатывает большой объем сетевого трафика, ваша пропускная способность к S3 может быть ограничена ограничениями пропускной способности сети NAT-инстанса. Вместо этого рекомендуется создать эндпоинт VPC, который позволяет подключаться к S3 из инстансов, находящихся в частной подсети в AWS VPC. Это устранит любые ограничения, накладываемые пропускной способностью сети NAT-инстанса VPC.
Инстансы, находящиеся в публичной подсети в AWS VPC, будут подключаться к S3 через интернет-шлюз VPC и не будут ограничены пропускной способностью NAT-инстанса VPC.
С3-совместимые службы
Существует ряд систем хранения, которые предоставляют S3-совместимый API, и тип репозитория s3 позволяет использовать эти системы вместо AWS S3. Для этого следует установить настройку s3.client.CLIENT_NAME.endpoint на эндпоинт системы. Эта настройка принимает IP-адреса и имена хостов и может включать порт. Например, эндпоинт может быть 172.17.0.2 или 172.17.0.2:9000.
По умолчанию Elasticsearch общается с вашей системой хранения с использованием HTTPS и проверяет цепочку сертификатов репозитория с использованием системного хранилища доверия JVM. Убедитесь, что системное хранилище доверия JVM содержит запись для вашего репозитория. Если вы хотите использовать небезопасное HTTP-соединение вместо HTTPS, установите s3.client.CLIENT_NAME.protocol в http.
MinIO — это пример системы хранения, которая предоставляет S3-совместимый API. Тип репозитория s3 позволяет Elasticsearch работать как с репозиториями, поддерживаемыми MinIO, так и с репозиториями, хранящимися в AWS S3. Другие S3-совместимые системы хранения также могут работать с Elasticsearch, но они не покрываются набором тестов Elasticsearch.
Существует множество систем, в том числе от очень известных поставщиков хранилищ, которые заявляют о поддержке S3-совместимого API, но на практике не полностью эмулируют поведение S3. Если вы используете такую систему для создания снимков, рассмотрите использование репозитория общего файловой системы, основанного на стандартном протоколе, таком как NFS, для доступа к вашей системе хранения вместо этого. Тип репозитория s3 требует полной совместимости с S3. В частности, он должен поддерживать тот же набор API-эндпоинтов с теми же параметрами, возвращать те же ошибки в случае сбоя и обеспечивать согласованность и производительность по крайней мере не хуже S3, даже при одновременном доступе нескольких узлов. Вам нужно будет связаться с поставщиком вашей системы хранения, чтобы решить любые возникающие несовместимости. Пожалуйста, не сообщайте о проблемах Elasticsearch, связанных с системами хранения, которые заявляют о совместимости с S3, если вы не можете продемонстрировать, что та же проблема существует при использовании настоящего репозитория AWS S3.
Вы можете выполнить некоторые базовые проверки пригодности вашей системы хранения с помощью API анализа репозитория. Если этот API не выполняется успешно или указывает на низкую производительность, ваша система хранения не полностью совместима с AWS S3 и поэтому не подходит для использования в качестве репозитория снимков. Однако эти проверки не гарантируют полной совместимости.
Большинство систем хранения можно настроить на ведение журнала взаимодействия с Elasticsearch. Если вы исследуете предполагаемую несовместимость с AWS S3, проще всего собрать эти журналы и предоставить их поставщику вашей системы хранения для дальнейшего анализа. Если несовместимость не очевидна из журналов, выпущенных системой хранения, настройте Elasticsearch на ведение журнала каждого запроса, который он отправляет в S3 API, установив уровень ведения журнала логгера com.amazonaws.request на DEBUG.
Чтобы предотвратить утечку конфиденциальной информации, такой как учетные данные и ключи, в журналах, Elasticsearch отклоняет настройку этого логгера с высокой детализацией, если не включено ведение журнала трассировки небезопасных сетевых запросов. Для этого нужно явно включить его на каждом узле, установив системную переменную es.insecure_network_trace_enabled в значение true.
После включения можно настроить логгер com.amazonaws.request:
resp = client.cluster.put_settings(
persistent={
"logger.com.amazonaws.request": "DEBUG"
},
)
print(resp) response = client.cluster.put_settings(
body: {
persistent: {
'logger.com.amazonaws.request' => 'DEBUG'
}
}
)
puts response const response = await client.cluster.putSettings({
persistent: {
"logger.com.amazonaws.request": "DEBUG",
},
});
console.log(response); PUT /_cluster/settings
{
"persistent": {
"logger.com.amazonaws.request": "DEBUG"
}
} Собирайте журналы Elasticsearch, охватывающие период неудачного анализа со всех узлов кластера, и предоставьте их поставщику вашей системы хранения вместе с ответом анализа, чтобы они могли использовать их для определения проблемы. См. документацию AWS Java SDK для получения дополнительной информации, включая сведения об использовании других логгеров для получения более подробных логов. После сбора необходимых журналов поставщику, верните настройки логгера обратно к значению null, чтобы вернуться к стандартной конфигурации ведения журнала и отключить небезопасное ведение журнала трассировки сети. См. Логгер и API обновления настроек кластера для получения дополнительной информации.
Реализация линейно-допустимого регистра
Реализация линейно-допустимого регистра для репозиториев S3 основана на строго последовательных семантиках API многочастной загрузки. Elasticsearch сначала создает многочастную загрузку, чтобы указать свое намерение выполнить операцию линейно-допустимого регистра. Затем Elasticsearch перечисляет и отменяет все другие многочастные загрузки для того же регистра. Затем Elasticsearch пытается завершить загрузку. Если загрузка завершится успешно, значит, операция сравнения и обмена была атомарной.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/repository-s3.html