«Лучшая практика» использует двойную запись шлюза для обеспечения плавной онлайн-миграции Elasticsearch.
«Лучшая практика» использует двойную запись шлюза для обеспечения плавной онлайн-миграции Elasticsearch.

иллюстрировать

Проблемы и решения, описанные в этой статье, также применимы к Тенсент Облако Elasticsearch Service(ES)

Также используется:Тенсент Облако Облачный сервер (Облако Virtual Machine,CVM)

фон

Беспрепятственный перенос самостоятельно созданных ES-кластеров в облако с одновременным обновлением между версиями и поддержкой откатов. В этом случае обычно необходимо обеспечить завершение бизнеса в кратчайшие сроки. Предыдущие решения имели более или менее ограничения:

План миграции

Поддержка отката

онлайн

Дружественная миграция бизнеса в облако

Ограничения версии

Метод миграции

Скорость миграции

Снимок Снимок

Поддерживается, данные противоречивы

нет

поддерживать

Источник<=Цель

копировать

быстрый

онлайн Слияние

нет

да

Нетподдерживать

Источник<=Цель

резать

оченьбыстрый

Logstash

Поддерживается, данные противоречивы

нет

поддерживать

Нет требований

копировать

медленный

Исходя из текущей ситуации,Возникает новая потребность: есть ли решение?,А как насчет да и да или да?

Ответ да: Да.

1. План введения

Направляя трафик приложения на шлюз, запросы отправляются как в самодельную ES, так и в облачную ES одновременно. Шлюз отвечает за запись и последовательное повторное выполнение всех запросов на запись в ES в облаке. Это обеспечивает плавную запись в два кластера и плавную и безопасную миграцию данных.

2. Планирование развертывания

иллюстрировать:

Требуются как шлюз, так и консоль. ES В качестве хранилища метаданных источник можно использовать повторно. ES,Вы также можете использовать шлюз&Консольный сервер развертывает автономный компьютер ES (рекомендуется).

1. Развертывание и запуск автономного ES (пропустить)

Этот шаг не обязателен,Может быть повторно использован с другимиESкластеркак шлюз&Метаданные консоликластер。

2. Установите и запустите консоль

Язык кода:bash
копировать
curl -sSL http://get.infini.cloud | bash -s -- -p console -d /usr/local/service/console

После завершения установки пакет приложения находится по адресу /usr/local/service/console.

Язык кода:bash
копировать
cd /usr/local/service/console
./console-linux-amd64 -service install
./console-linux-amd64 -service start

После успешного запуска откройте в браузере ссылку для регистрации консоли и прослушивания по умолчанию. 9000 Порт, если сервер, на котором установлена ​​консоль, находится в публичной сети ip да100.100.100.100,Тогда адрес доступа:100.100.100.100:9000

  • ТЛС По умолчанию используется http, а если включено, то https.
  • Авторизация по умолчанию не требует аутентификации соединения,После открытия,Требуется имя пользователя&пароль。

Автоматически инициализировать базовые настройки системных индексов и шаблонов:

Третий шаг — правильно хранить ключ учетных данных. Нажмите на символ 👁️‍🗨️, чтобы ключ учетных данных стал видимым:

Вы также можете скачать настроенную информацию одним щелчком мыши на последнем шаге:

3. Установите и запустите шлюз

Язык кода:bash
копировать
curl -sSL http://get.infini.cloud | bash -s -- -p gateway -d /usr/local/service/gateway

После завершения установки пакет приложения находится по адресу /usr/local/service/gateway.

Настроить шлюз

Загрузите конфигурацию шлюза с двойной записью:

Язык кода:bash
копировать
cd /usr/local/service/gateway
# Удалить по По умолчанию — Конфигурация.
mv gateway.yml gateway.yml.bak
# Загрузите конфигурацию шлюза с двойной записью
wget https://tools-release-1253240642.cos.ap-shanghai.myqcloud.com/elasticsearch/config/gateway.yml

Измените следующие элементы конфигурации:

  • #primary

Основные элементы конфигурации кластера

  • #backup

Из элементов конфигурации кластера

  • #metadata & metrics & logging

Элементы конфигурации кластера метаданных

  • consume-queue_backup-bulk_request_ingestion-to-backup

нужно закрытьauto_start,по По умолчанию:

Запустить шлюз

Язык кода:bash
копировать
cd /usr/local/service/gateway
./gateway-linux-amd64 -service install
./gateway-linux-amd64 -service start

4. Зарегистрируйте серверную часть шлюза.

Изменить имя экземпляра:

После завершения регистрации вы сможете увидеть экземпляр шлюза в интерфейсе управления экземпляром:

5. Зарегистрируйте кластер

Зарегистрируйте исходный ES-кластер

Изменить имя кластера:

Зарегистрируйте ES-кластер в облаке

Изменить имя кластера:

После завершения вы можете увидеть обзор кластера в интерфейсе управления кластером:

3. Тест на двойное письмо

1. Временно включите инкрементальное резервное копирование.

Нажмите, чтобы открыть:

2. Зарегистрируйте кластер шлюзов.

Для облегчения тестирования прописываем шлюз как кластер в консоли:

Изменить имя кластера:

3. Тестирование с использованием шлюза

Выполните следующие операции на шлюзе:

Язык кода:json
копировать
# Создать индекс
PUT gateway-test

# Вставить документ
PUT gateway-test/doc/1
{
  "name": "dy"
}

PUT gateway-test/doc/2
{
  "name": "dy2"
}

# Обновить документацию
PUT gateway-test/doc/2
{
  "name": "dy_update"
}

# Удалить документ
DELETE gateway-test/doc/2

# удалить
DELETE gateway-test

Проверьте результаты синхронизации на ES в облаке:

4. Отключите инкрементальную синхронизацию.

После завершения теста инкрементное резервное копирование необходимо отключить, поскольку перед официальным использованием шлюза двойной записи требуется полная синхронизация:

4. Синхронизация данных

1. Синхронизировать все данные (опущено)

  • Для полной синхронизации данных см.:Elasticsearch План миграции,Используйте быстрый план для выполнения полного резервного копирования;
  • Если общие данные большие,Тогда первое полное резервное копирование может занять много времени (дни или даже недели),В этом случае вам нужно использовать быструю для выполнения нескольких инкрементальных резервных копий.,До тех пор, пока дополнительные данные не перестанут быть огромными.

2. Бизнес-переключатель записывает в указанное место и выключает прослушивание.

иллюстрировать:

Так как мы использовали быстрый по полной сумме + приращение,Таким образом, теперь трафик Switch Switch не будет создавать слишком много дополнительных данных до тех пор, пока в следующий раз не будет выполнено последнее быстрое инкрементное резервное копирование.,Не приведет к большому накоплению данных,Влияет на эффективность синхронизации.

  • Переключить трафик

Бизнес-указатель в настоящее время не подключен к шлюзу, поэтому конфигурацию подключения бизнес-кода необходимо изменить во время официального переключения. Текущий поток трафика выглядит следующим образом:

Компания изменит конфигурацию IP, первоначально указывающую на исходный кластер, чтобы дважды записать IP-адрес шлюза: 18000. Никаких изменений в логике кода не требуется. Поскольку инкрементная синхронизация шлюза двойной записи в настоящее время еще не включена, после переключения записи данные синхронизации облачного кластера сначала будут накапливаться в очереди сообщений. Бизнес-поток после перехода выглядит следующим образом:

  • Отключить обнюхивание

Ссылка по отключению анализа для каждого SDK: https://cloud.tencent.com/document/product/845/19538.

3. Последнее инкрементальное резервное копирование и восстановление (опущено)

После переключения службы на шлюз двойной записи,Вам все равно придется использовать быструю версию для последнего восстановления.,Также обратитесь к:Elasticsearch План миграции

4. Включите инкрементную синхронизацию шлюзов с двойной записью.

После завершения последнего быстрого увеличения фотографии вы можете Включить инкрементную синхронизацию шлюзов с двойной записию, после включения шлюз двойной записи будет воспроизводить накопленные операции записи на В облаке ES Кластеризируйте до тех пор, пока данные не будут выровнены, что действительно обеспечивает синхронизацию в реальном времени:

За завершением синхронизации данных можно наблюдать через потребление очереди:

Если компенсации производства и потребления совпадают, иллюстрирование будет завершено одновременно:

5. Переключите запись

Если вам необходимо сохранить резервное решение, вы можете продолжать направлять службы на шлюз с двойной записью. Затем поменяйте местами активный и резервный кластеры в конфигурации шлюза и перезапустите шлюз, чтобы ES кластер станет основным кластером, а старый кластер станет резервным. Если в бизнесе возникнут проблемы, вы можете выполнить откат в любой момент, поскольку данные согласованы. После завершения всех проверок вы можете напрямую передать бизнес. IP Переключитесь в облако.

6. Резюме

Решение с двойным шлюзом успешно решило многие проблемы, с которыми раньше было трудно справиться, например, межоблачную ES онлайн миграция сервисов, традиции План на сайте отсутствуют возможности отката в реальном времени и т. д. Даже поддержка мигрирует из высокой версии в низкую онлайн, хотя такая миграция не разрешена поддержкойбыстрый и может быть осуществлена ​​только через Logstash Подождите, пока инструменты будут реализованы. потому что Logstash Только поддержка полностью синхронизирована, что увеличит нагрузку по накоплению сообщений на шлюз с двойной записью. Но даже в этом случае это лучше, чем ничего, и будущее Количество встреч определенно будет развиваться в направлении тренда реального времени.

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose