Работа со встроенной базой данных Cassandra

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

Полное сравнение с внешней Cassandra см. в разделе Работа с внешней базой данных Cassandra.

Если вы обновляете Cassandra с версии 3.x до 5.x, см. Руководство по миграции данных.

Модель конфигурации Cassandra во встроенном режиме

Встроенная Cassandra использует модель конфигурации, отличную от окружения внешней Cassandra.

В встроенном режиме AggreGate предоставляет поддержку двум вариантам конфигурации:

(1) встроенная Cassandra с внутренними/стандартными настройками,

(2) встроенная Cassandra с внешней тонкой настройкой YAML.

Оба варианта выбираются на каждом узле AggreGate на вкладке Конфигурация сервера / Хранилище / NoSQL хранилище с помощью свойств Использовать встроенную службу и Использовать внешний файл конфигурации YAML (включает настройку через cassandra.yaml, применимо только когда встроенная служба включена). Подробности см. раздел ниже.

Полный список полей NoSQL хранилища и рекомендуемых значений (включая Адрес сервера базы данных и Порт против «Сеeds/Contact Points», «Коэффициент репликации» и другие параметры настройки) см. в описании NoSQL хранилища.

По умолчанию сервер AggreGate настраивает встроенную службу Cassandra, применяя databaseCassandra* параметров из собственного файла конфигурации (server.xml по умолчанию), а также определённые внутренние значения по умолчанию.

Файл cassandra.yaml поставляется вместе с сервером AggreGate (расположен в директории для установки AggreGate) и предназначен исключительно для использования со встроенным сервером Cassandra. Его цель — предоставить администраторам дополнительную гибкость, выходящую за рамки встроенной модели конфигурации.

Включение cassandra.yaml не превращает встроенную СУБД в внешнее или высокопроизводительное окружение Cassandra.

Использование cassandra.yaml в встроенном режиме по-прежнему ограничено работой с одним узлом, управляемым AggreGate. Для масштабируемости в производственной среде, кластеризации, отказоустойчивости и управления выделенными ресурсами необходимо использовать отдельно установленный внешний кластер Cassandra.

Как вычисляются параметры

Когда включен встроенный режим:

  • По умолчанию AggreGate Server считывает настройки, связанные с Cassandra, из databaseCassandra* параметров в server.xml.

  • Настройки сети, хранилища, имени кластера, портов и памяти берутся из конфигурации сервера.

  • Если cassandra.yaml используется для настройки встроенной версии, настройки сервера Cassandra берутся из этого файла.

Рекомендации по редактированию cassandra.yaml

Встроенный движок Cassandra интегрирован с системой управления жизненным циклом AggreGate Server.
Изменение параметров конфигурации Cassandra может стать причиной:

  • несоответствие идентификатора узла

  • неправильную привязку к сети

  • сбой запуска

  • проблем с членством в Кластере

  • несоответствий схем файлов данных

Если cassandra.yaml используется для настройки встроенной Cassandra, изменения конфигурации следует вносить осторожно и проверять после перезапуска.

Сводка

Режим развертывания

Активная конфигурация

Игнорируемая конфигурация

Встроенная Cassandra

По умолчанию (внешний YAML отключен): server.xml (databaseCassandra* Параметры)
Внешний YAML включен: cassandra.yaml (встроенная настройка)

По умолчанию (внешний YAML отключен): cassandra.yaml
Внешний YAML включен: server.xml (databaseCassandra* Параметры)

Это обеспечивает согласованное поведение узла и надежную работу службы встроенной СУБД.

Включение вывода журнала во внешний файл

Чтобы вывести журналы встроенной Cassandra во внешний файл:

  1. Откройте файл настроек журналирования, который обычно представляет собой logging.xml в корневом каталоге вашей установки AggreGate.

  2. В секции <Loggers>...</Loggers> удалите следующие строки:

    <Logger name="org.apache.cassandra.cql3.QueryProcessor" level="off"/>
    <Logger name="org.apache.cassandra.db.Memtable" level="off"/>
    <Logger name="org.apache.cassandra.io.sstable.SSTableDeletingTask" level="off"/>
  3. В секции <Loggers>...</Loggers> добавьте следующие строки:

            <Logger name="org.apache.cassandra" level="info" additivity="false">
    <AppenderRef ref="cassandra"/>
    </Logger>
  4. В секции <Appenders>...</Appenders> добавьте следующие строки:

            <File name="cassandra" fileName="logs/cassandra.log" append="false">
    <ThresholdFilter level="debug"/>
    <PatternLayout pattern="%d{dd.MM.yyyy HH:mm:ss,SSS} %-5p %-25c %m - [%t] %C.%M (%F:%L)%n%throwable{full}"/>
    </File>
  5. Опционально настройте ротацию файлов журнала, добавив Log4J Rolling File Appender в файл logging.xml.

Использование cassandra.yaml для настройки Embedded Cassandra

Файл cassandra.yaml Файл в AggreGate представляет собой модифицированную копию файла конфигурации автономной Cassandra по умолчанию.

Все изменения сопровождаются заголовком комментария, например:

########################################################################################################################
NOTE
########################################################################################################################
This parameter was changed from default 'true' to 'false' according to internal config
########################################################################################################################

Файл расположен в директории для установки сервера AggreGate.

Дистрибутив AggreGate также содержит файл резервной копии с именем cassandra.default.yaml , в котором сохранены все исходные значения. Этот файл не используется AggreGate и может служить точкой отката в случае сбоя конфигурации.

Не следует изменять имя кластера. Однако, если это неизбежно, можно добавить следующие опции JVM в файл ag_server.vmoptions (или в другой соответствующий файл):

-Dcassandra.ignore_rack=true
-Dcassandra.ignore_dc=true

Это предотвращает сбой запуска сервера когда метаданные кластера не совпадают.

Рекомендации по подключению и настройке отдельно развернутого экземпляра или кластера Cassandra см. в разделе Работа с внешней базой данных Cassandra.

Как включить конфигурацию из cassandra.yaml

Чтобы настроить встроенную Cassandra с помощью файла cassandra.yaml Файл:

Установите флаг «Использовать внешний YAML-файл конфигурации» на вкладке «Конфигурация сервера» / вкладке «Хранение» / подвкладке «NoSQL хранилище» и перезапустите сервер AggreGate.

Когда эта опция включена:

  • Встроенная служба Cassandra осуществляет чтение конфигурации из файла cassandra.yaml, расположенного в директории для установки сервера AggreGate.

  • Параметры databaseCassandra* параметры в server.xml игнорируются.

Обратите внимание, что переключение источников конфигурации может вызвать проблемы с существующей базой данных. Например, если cassandra.yaml содержит другое значение для параметра cluster_name , сервер может не запуститься.

Этот механизм позволяет точно настроить конфигурацию встроенной Cassandra.
Он не преобразует встроенное окружение во внешний или многоузловой экземпляр Cassandra.

Устранение неполадок встроенной Cassandra с помощью Nodetool

nodetool — это встроенный инструмент Cassandra, предназначенный для получения различной аналитической информации с узлов Cassandra. Он может быть чрезвычайно полезен при поиске проблем с производительностью.

Чтобы использовать nodetool со встроенной службой Cassandra AggreGate:

  1. Загрузите пакет установки Cassandra, совместимый с версией Cassandra, входящей в состав вашей установки AggreGate (Cassandra 3.x для AG 6.3, Cassandra 5.x для AG 6.4 и более поздних версий), и распакуйте его в любую папку.

  2. Убедитесь, что сервер AggreGate работает с включенной встроенной службой Cassandra.

  3. Убедитесь, что в вашей переменной среде установлен подходящий Java Runtime JAVA_HOME переменной среды или соответствующий java исполняемый файл в PATH . Вы можете проверить наличие последней переменной, выполнив java -version Команда

  4. Перейдите в разархивированный bin/ Директория и выполните следующую команду:

$ ./nodetool --port 11111 status

Параметр --port относится к встроенному порту JMX Cassandra. Если вы запускаете nodetool с другого компьютера, вам также необходимо указать --host опцию с IP-адресом или именем хоста AggreGate.

Результат выполнения команды должен выглядеть следующим образом:

Datacenter: datacenter1
========================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 1.35 MiB 256 100,0% 38512adb-b868-4ea1-9593-bf3b9950e687 rack1

Основные информационные команды nodetool - status, version и info. Существует множество других полезных команд, описанных в документации и в самом инструменте (просто запустите его без опций или с командой help Команда).

Непосредственный запрос к встроенной Cassandra с помощью CQLSH

Вы можете использовать утилиту cqlsh утилиту из дистрибутива Cassandra, совместимого с версией Cassandra, входящей в состав вашей установки AggreGate.

  1. Убедитесь, что сервер AggreGate работает с включенной встроенной Cassandra.

  2. Получите cqlsh инструмент из дистрибутива Cassandra, соответствующего вашей версии встроенной Cassandra (3.x для AggreGate 6.3, 5.x для AggreGate 6.4 и более поздних версий).

  3. Выполните:

$ ./cqlsh localhost 9042

Если включена аутентификация:

$ ./cqlsh -u <username> -p <password>

После подключения вы должны увидеть вывод, похожий на:

Connected to <cluster_name> at 127.0.0.1:9042.
cqlsh>

Чтобы протестировать простой запрос:

cqlsh> SELECT count(*) FROM aggregate.ag_events;
  • Дистрибутивы Cassandra 3.x обычно требуют Python 2.7.

  • Дистрибутивы Cassandra 5.x используют Python 3.

  • Убедитесь, что cqlsh версия соответствовала версии сервера Cassandra, чтобы избежать проблем с совместимостью протоколов.

Для получения более подробных подробностей cqlsh см. эту страницу документации. Синтаксис CQL описан здесь.

Was this page helpful?