Создание многоузлового кластера в Cassandra на сервере Ubuntu

Данное руководство продемонстрирует установку и настройку многоузлового кластера при помощи Cassandra. Cassandra – это открытая система баз данных с высокой масштабируемостью, позволяющая достичь высокой производительности на многоузловых установках (даже если они расположены в разных центрах обработки данных).

Установка Cassandra на каждый узел

Прежде чем приступить к настройке узлов, нужно установить СУБД Cassandra на каждый из них (все необходимые инструкции по установке Cassandra можно найти в отдельном руководстве). Установив СУБД, убедитесь, что она работает должным образом. Закройте Cassandra, набрав:

sudo ps auwx | grep cassandra

Если при этом появляется какой-либо процесс, кроме grep, скопируйте его ID и остановите его.

sudo kill -9 PID

Также необходимо очистить данные, выполнив:

sudo rm -rf /var/lib/cassandra/*

Настройка Cassandra

Чтобы настроить Cassandra для многоузлового кластера, нужно заранее знать, сколько узлов будет содержать этот кластер, и вычислить токены для каждого их них. В интернете можно найти множество специальных инструментов; как правило, нужно просто указать количество узлов, и инструмент выдаст токен для каждого узла. Например, если в кластере 3 узла, токены могут выглядеть так:

Node 0: 0
Node 1: 3074457345618258602
Node 2: 6148914691236517205

Теперь нужно отредактировать конфигурационный файл каждого узла. Для этого откройте текстовый редактор nano:

nano ~/cassandra/conf/cassandra.yaml

В зависимости от потребностей все узлы могут иметь одинаковые (cluster_name, seed_provider, rpc_address и endpoint_snitch) или уникальные (initial_token и listen_address) настройки. Выберите порождающий узел, откройте его конфигурации, найдите в них следующие строки и задайте им необходимое значение:

cluster_name: 'Name'
initial_token: Token
seed_provider:
- seeds:  "Seed IP"
listen_address: Server IP
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch

Замените Name именем кластера, Token – сгенерированным ранее токеном (в соответствии с узлом), Seed IP – IP-адресом порождающего узла, Server IP – IP-адресом выделенного сервера. Повторите данную процедуру для каждого узла. Пример конфигурации кластера из трех узлов:

Node 0
cluster_name: 'MyCluster'
initial_token: 0
seed_provider:
- seeds:  "198.211.xxx.0"
listen_address: 198.211.xxx.0
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch
Node 1
cluster_name: 'MyCluster'
initial_token: 3074457345618258602
seed_provider:
- seeds:  "198.211.xxx.0"
listen_address: 192.241.xxx.0
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch
Node 2
cluster_name: 'MyCluster'
initial_token: 6148914691236517205
seed_provider:
- seeds:  "198.211.xxx.0"
listen_address: 37.139.xxx.0
rpc_address: 0.0.0.0
endpoint_snitch: RackInferringSnitch

Для запуска просто введите следующую команду на порождающем узле:

sudo sh ~/cassandra/bin/cassandra

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

Tags: , , , ,

Добавить комментарий