Учебник: Настройка репликации между кластерами
Используйте это руководство для настройки кросс-кластерной репликации (CCR) между кластерами в двух центрах обработки данных. Репликация данных между центрами обработки данных предоставляет несколько преимуществ:
- Приближает данные к пользователям или серверам приложений, чтобы уменьшить задержку и время отклика
- Предоставляет критически важным приложениям устойчивость к сбоям в центре обработки данных или регионе
В этом руководстве вы узнаете, как:
- Настроить удаленный кластер с индексом-лидером
- Создать индекс-фолловер в локальном кластере
- Создать шаблон автоматического следования для автоматического следования за временными рядами индексов, которые периодически создаются в удаленном кластере
Вы можете вручную создавать индексы-фолловеры для репликации определённых индексов в удалённом кластере или настраивать шаблоны автоматического следования для репликации динамических временных рядов индексов.
Если вы хотите реплицировать данные между кластерами в облаке, вы можете настроить удалённые кластеры в Elasticsearch Service. Затем вы можете искать по нескольким кластерам и настроить кросс-кластерную репликацию.
Предварительные требования
Для выполнения этого урока вам необходимо:
- Привилегию кластера
manageна локальном кластере. - Лицензию на обоих кластерах, включающую кросс-кластерную репликацию. Активировать бесплатный пробный период на 30 дней.
- Индекс в удаленном кластере, содержащий данные, которые вы хотите реплицировать. В этом уроке используется набор данных о примерах заказов электронной коммерции. Загрузить примерные данные.
- В локальном кластере все узлы с ролью
masterузла должны также иметь рольremote_cluster_client. Локальный кластер также должен иметь по крайней мере один узел с ролью данных и рольюremote_cluster_client. Отдельные задачи по координации репликации масштабируются в зависимости от количества узлов данных с рольюremote_cluster_clientв локальном кластере.
Подключение к удалённому кластеру
Чтобы реплицировать индекс в удалённом кластере (Кластер A) в локальный кластер (Кластер B), вы назначаете Кластер A как удалённый в Кластере B.
Чтобы настроить удаленный кластер из Stack Management в Kibana:
- Выберите Удаленные кластеры в боковой навигации.
- Укажите URL-адрес конечной точки Elasticsearch или IP-адрес или имя хоста удалённого кластера (
ClusterA), за которым следует порт транспорта (по умолчанию9300). Например,cluster.es.eastus2.staging.azure.foundit.no:9400или192.168.1.1:9300.
Пример API
Вы также можете использовать API обновления настроек кластера для добавления удалённого кластера:
PUT /_cluster/settings
{
"persistent" : {
"cluster" : {
"remote" : {
"leader" : {
"seeds" : [
"127.0.0.1:9300"
]
}
}
}
}
} | Указывает имя хоста и порт транспорта узла-семени в удалённом кластере. |
Вы можете проверить, успешно ли подключился локальный кластер к удалённому кластеру.
GET /_remote/info
Ответ API показывает, что локальный кластер подключен к удалённому кластеру с псевдонимом кластера leader.
{
"leader" : {
"seeds" : [
"127.0.0.1:9300"
],
"connected" : true,
"num_nodes_connected" : 1,
"max_connections_per_cluster" : 3,
"initial_connect_timeout" : "30s",
"skip_unavailable" : false,
"mode" : "sniff"
}
} | Количество узлов в удалённом кластере, к которому подключен локальный кластер. |
Включение мягких удалений для индексов-лидеров
Чтобы следовать за индексом, он должен быть создан с включёнными мягкими удалениями. Если для индекса не включены мягкие удаления, вы должны переиндексировать его и использовать новый индекс в качестве индекса-лидера. Мягкие удаления по умолчанию включены для новых индексов, созданных с Elasticsearch 7.0.0 и более поздними версиями.
Настройка привилегий для кросс-кластерной репликации
Пользователю кросс-кластерной репликации требуются различные привилегии кластера и индекса в удалённом кластере и локальном кластере. Используйте следующие запросы для создания отдельных ролей в локальном и удалённом кластерах, а затем создайте пользователя с необходимыми ролями.
Удаленный кластер
В удалённом кластере, содержащем индекс-лидер, роль кросс-кластерной репликации требует привилегии кластера read_ccr и привилегий monitor и read на индексе-лидере.
Если запросы аутентифицированы с помощью ключа API, ключ API требует указанных выше привилегий в локальном кластере, а не в удалённом.
Если запросы отправляются от имени других пользователей, то аутентифицирующий пользователь должен иметь привилегию run_as в удалённом кластере.
Следующий запрос создаёт роль remote-replication в удалённом кластере:
POST /_security/role/remote-replication
{
"cluster": [
"read_ccr"
],
"indices": [
{
"names": [
"leader-index-name"
],
"privileges": [
"monitor",
"read"
]
}
]
} Локальный кластер
В локальном кластере, содержащем индекс-фолловер, роль remote-replication требует привилегии кластера manage_ccr и привилегий monitor, read, write и manage_follow_index на индексе-фолловере.
Следующий запрос создаёт роль remote-replication в локальном кластере:
POST /_security/role/remote-replication
{
"cluster": [
"manage_ccr"
],
"indices": [
{
"names": [
"follower-index-name"
],
"privileges": [
"monitor",
"read",
"write",
"manage_follow_index"
]
}
]
} После создания роли remote-replication в каждом кластере используйте API создания или обновления пользователей для создания пользователя в локальном кластере и назначения роли remote-replication. Например, следующий запрос назначает роль remote-replication пользователю с именем cross-cluster-user:
POST /_security/user/cross-cluster-user
{
"password" : "l0ng-r4nd0m-p@ssw0rd",
"roles" : [ "remote-replication" ]
} Вам нужно создать этого пользователя только в локальном кластере.
Создание индекса-фолловера для репликации определённого индекса
При создании индекса-фолловера вы указываете удалённый кластер и индекс-лидер в удалённом кластере.
Чтобы создать индекс-фолловер из Stack Management в Kibana:
- Выберите Кросс-кластерную репликацию в боковой навигации и выберите вкладку Индексы-фолловеры.
- Выберите кластер (ClusterA), содержащий индекс-лидер, который вы хотите реплицировать.
- Введите имя индекса-лидера, которое является
kibana_sample_data_ecommerce, если вы следуете уроку. - Введите имя своего индекса-фолловера, например,
follower-kibana-sample-data.
Elasticsearch инициализирует фолловер, используя процесс удалённого восстановления, который передает существующие файлы сегментов Lucene из индекса-лидера в индекс-фолловер. Состояние индекса изменяется на Приостановлен. После завершения процесса удалённого восстановления начинается следование за индексом, и состояние изменяется на Активен.
При индексировании документов в индекс-лидер Elasticsearch реплицирует документы в индекс-фолловер.
Пример API
Вы также можете использовать API создания фолловера для создания индексов-фолловеров. При создании индекса-фолловера вы должны указать удалённый кластер и индекс-лидер, созданный в удалённом кластере.
При инициализации запроса фолловера ответ возвращается до завершения процесса удалённого восстановления. Чтобы дождаться завершения процесса, добавьте параметр wait_for_active_shards в свой запрос.
PUT /server-metrics-follower/_ccr/follow?wait_for_active_shards=1
{
"remote_cluster" : "leader",
"leader_index" : "server-metrics"
} Используйте API получения статистики фолловера для проверки состояния репликации.
Создание шаблона автоматического следования для репликации индексов временных рядов
Вы используете шаблоны автоматического следования, чтобы автоматически создавать новых последователей для индексов временных рядов. Всякий раз, когда имя нового индекса на удаленном кластере соответствует шаблону автоматического следования, соответствующий индекс-последователь добавляется в локальный кластер. Обратите внимание, что только индексы, созданные на удаленном кластере после создания шаблона автоматического следования, будут автоматически следовать за ними: существующие индексы на удаленном кластере игнорируются, даже если они соответствуют шаблону.
Шаблон автоматического следования указывает удаленный кластер, с которого вы хотите выполнить репликацию, и один или несколько шаблонов индексов, которые определяют индексы временных рядов, которые вы хотите реплицировать.
Для создания шаблона автоматического следования из Stack Management в Kibana:
- Выберите Репликация между кластерами в боковой навигации и выберите вкладку Шаблоны автоматического следования.
- Введите имя для шаблона автоматического следования, например
beats. - Выберите удаленный кластер, который содержит индекс, который вы хотите реплицировать, в примере это Кластер A.
- Введите один или несколько шаблонов индексов, которые определяют индексы, которые вы хотите реплицировать с удаленного кластера. Например, введите
metricbeat-* packetbeat-*, чтобы автоматически создать последователей для индексов Metricbeat и Packetbeat. - Введите follower- в качестве префикса для применения к именам индексов-последователей, чтобы вы могли легче идентифицировать реплицированные индексы.
По мере создания новых индексов, соответствующих этим шаблонам, на удаленном кластере Elasticsearch автоматически реплицирует их в локальные индексы-последователи.
Пример API
Используйте API создания шаблона автоматического следования для настройки шаблонов автоматического следования.
PUT /_ccr/auto_follow/beats
{
"remote_cluster" : "leader",
"leader_index_patterns" :
[
"metricbeat-*",
"packetbeat-*"
],
"follow_index_pattern" : "{{leader_index}}-copy"
} | Автоматически следовать за новыми индексами Metricbeat. | |
| Автоматически следовать за новыми индексами Packetbeat. | |
| Имя индекса-последователя выводится из имени лидирующего индекса путем добавления суффикса |
© 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/7.17/ccr-getting-started-tutorial.html