Работа с внешней базой данных Cassandra
Встроенная служба Cassandra, используемая сервером AggreGate, достаточна для широкого спектра случаев использования. Однако для производственных развертываний, требующих масштабируемости, кластеризации или выделенной инфраструктуры базы данных, следует использовать внешний экземпляр или кластер Cassandra.
В AggreGate предусмотрена возможность соединения с внешним экземпляром Cassandra, что дает администраторам детальный контроль над инфраструктурой базы данных.
Модель конфигурации Cassandra во внешнем режиме
Когда AggreGate Server подключается к внешнему кластеру Cassandra, конфигурацией сервера Cassandra управляет исключительно сама Cassandra.
Конфигурация сервера Cassandra определяется в cassandra.yaml и связанных файлах конфигурации, расположенных в директории для установки Cassandra.
В этом режиме:
AggreGate Server не настраивает и не изменяет
cassandra.yaml.databaseCassandra*параметры вserver.xmlиспользуются только для настройки соединения со стороны клиента из AggreGate Server с Cassandra (хосты, учетные данные, пространство ключей и т. д.).Все рабочие настройки (имя кластера, топология, сетевая привязка, уплотнение, хранилище, лимиты памяти) определяются в конфигурации Cassandra.
Как вычисляются параметры
Когда происходит соединение с внешней Cassandra:
Идентификатор узла, топология и имя кластера берутся из
cassandra.yaml.Сетевые настройки, такие как
listen_address,broadcast_address, аrpc_addressдолжны быть определены в конфигурации внешней Cassandra.AggreGate Server считывает только контактные точки, учетные данные и информацию о пространстве имен из неизменяемого состояния
server.xml— а не из операционных настроек Cassandra.
Почему конфигурация сервера Cassandra не берется из файла server.xml
Сервер AggreGate Server не пытается переопределить или изменить конфигурацию внешнего экземпляра Cassandra.
В внешнем режиме:
конфигурация сервера Cassandra определяется исключительно в
cassandra.yaml.Параметры
databaseCassandra* параметры вserver.xmlиспользуются только для настроек соединения.
Внешний кластер Cassandra должен быть полностью настроен и готов к работе до подключения AggreGate Server.
Любые конфликты в конфигурациях (например, несовпадение имен кластеров) могут помешать AggreGate Server установить соединение.
Сводка
Режим развертывания | Активная конфигурация | Игнорируемая конфигурация |
|---|---|---|
Внешняя Cassandra | Настройки сервера Cassandra: | AggreGate не изменяет |
Эта модель обеспечивает полную совместимость с многоузловыми производственными кластерами и позволяет избежать случайного переопределения конфигурации.
Обзор встроенной и внешней Cassandra
Особенность | Встроенная Cassandra | Внешняя Cassandra |
|---|---|---|
Конфигурация сервера Cassandra | Настройки AggreGate Server (server.xml) и опциональный файл cassandra.yaml (настройка встроенной версии) |
|
Развертывание с несколькими узлами | Нет | Да |
Параметры JVM (включая ограничения памяти, такие как Xmx, Xss и т. д.) | Общее с процессом AggreGate Server | Отдельно для каждого процесса Cassandra |
Рекомендуемые случаи использования | Приступить к работе, создание прототипов, тестирование в изолированной среде, небольшое производственное развертывание | Развертывание в производственной среде, масштабирование, отказоустойчивость |
Для тонкой настройки встроенной службы Cassandra, управляемой AggreGate, см. раздел Работа со встроенной СУБД Cassandra.
Настройки AggreGate для внешней Cassandra настраиваются на каждом узле AggreGate в разделе Конфигурация сервера, вкладка Хранение, подвкладка NoSQL хранилище.
Полный список полей NoSQL хранилища и рекомендуемых значений (включая адрес сервера и порт базы данных по сравнению с семенами/Contact Points, коэффициентом репликации и другими параметрами настройки) см. в описании NoSQL хранилища.
Развертывание внешнего экземпляра Cassandra
Чтобы развернуть внешний экземпляр Cassandra:
Установите Java 17 или JDK 17.
Установите (распакуйте) последнюю версию Apache Cassandra.
Отредактируйте
config/cassandra.yamlНастройте каталог данных и путь к папке commitlog (желательно на разных физических дисках).
Убедитесь, что включен нативный протокол (
start_native_transport) и установлен порт нативного протокола (по умолчанию 9042).Укажите IP-адрес сервера Cassandra в seeds, listen_address и rpc_address.
Если вы измените listen_address в файле
cassandra.yamlна IP-адрес, отличный от127.0.0.1, вы также должны указать этот адрес в файле AggreGate сервераserver.xmlсо следующей опцией:databaseCassandraHost>your_cassandra_ip_address</databaseCassandraHost>
Установите переменную окружения
JAVA_HOMEв корневую папку JRE/JDK.Установите переменную окружения
CASSANDRA_HOMEв папку установки Cassandra.Отредактируйте
bin/cassandraИзмените настройки Xms и Xmx на более высокое значение, оставив не менее 2-4 Гб оперативной памяти для операционной системы.
Запустите
bin/cassandraи убедитесь в том, что Cassandra начала прослушивание входящих соединений.Настройте настройки памяти (Xms, Xmx) в скриптах запуска Cassandra в соответствии с доступными системными ресурсами.
Запустите Cassandra и убедитесь, что она прослушивает входящие соединения.
Оптимизация производительности Cassandra при работе с большими объемами записи
Нагрузка, связанная с записью, подразумевает большое количество операций вставки. Чем быстрее вы вставляете данные, тем быстрее вам нужно их уплотнять, чтобы поддерживать стабильный счетчик. Таким образом, вам нужно отредактировать следующие параметры в cassandra.yaml:
Увеличить количество concurrent_compactors.
Увеличьте значение compaction_throughput_mb_per_sec или отключите дросселирование, установив этот параметр на ноль.
Также может потребоваться изменить стратегию уплотнения определенных таблиц. Возможно, потребуется изменить следующие параметры:
уплотнение - предпочтительной стратегией является TimeWindowCompactionStrategy. Она была специально визуализирована для временных рядов и рабочих нагрузок с истекающим TTL. Для ее настройки вам потребуется изменить только compaction_window_unit и compaction_window_size. Также необходимо установить значение
trueдля параметра unchecked_tombstone_compaction, чтобы Cassandra отбрасывала истекшие sstables в режиме реального времени.gc_grace_seconds - должно быть уменьшено или установлено на ноль (только если вы используете одноузловой кластер).
Для изменения параметров уплотнения необходимо выполнить запрос с помощью интерактивного терминала CQL. Запустите bin/cqlsh для подключения к текущему узлу Cassandra:
USE aggregate;
ALTER TABLE <table_name>
WITH compaction = {'class' : 'TimeWindowCompactionStrategy', 'compaction_window_unit' : 'HOURS', 'compaction_window_size' : '1', 'unchecked_tombstone_compaction' : 'true'}
AND gc_grace_seconds = 0;![]() | Перед настройкой базы данных с использованием перечисленных параметров ознакомьтесь с документацией по Apache Cassandra. В вашем конкретном случае настройка базы данных может отличаться. |
Настройки сетевого таймаута
Рассмотрите возможность изменения настроек таймаута, если вы планируете выполнять операции, требующие много времени. В противном случае вы можете получить TimedOutException при работе с базой данных.
Параметр | Описание |
|---|---|
range_request_timeout_in_ms | Сколько времени координатор должен ждать завершения сканирования seq или index. |
read_request_timeout_in_ms | Сколько времени координатор должен ждать завершения операций чтения. |
write_request_timeout_in_ms | Сколько времени координатор должен ждать завершения операций записи. |
таймаут_запроса_в_мс | Время ожидания выполнения операций по умолчанию для других, различных операций. |
![]() | Будьте внимательны при увеличении таймаута и учитывайте использование памяти и ЦП для выполняемых операций. Таймауты защищают клиентов от слишком долгого ожидания операций, которые никогда не завершаются из-за ошибки или нехватки ресурсов. |
Устранение неполадок с помощью Nodetool
nodetool — это встроенный инструмент Cassandra, позволяющий получать различную аналитическую информацию с узлов Cassandra.
Используйте утилиту nodetool, поставляемую с вашей внешней установкой Cassandra. Запустите ее на узле Cassandra или с машины, имеющей доступ к интерфейсу JMX узла Cassandra.
Список доступных команд см. в официальной документации Apache Cassandra.
Непосредственный запрос с помощью CQLSH
cqlsh — это интерактивный инструмент для запросов к узлу базы данных Cassandra.
Используйте cqlsh утилиту, поставляемую с вашей внешней установкой Cassandra, для подключения к узлу или кластеру Cassandra.
Для получения более подробных подробностей cqlsh см. эту страницу документации. Синтаксис CQL описан здесь.
Was this page helpful?
