Поднимаем кластер Cassandra на 3 нодах

Если однажды вы проснетесь посреди ночи с внезапным непреодолимым желанием развернуть кластер Cassandra, надеюсь, эта статья поможет вам преуспеть в этом деле даже если вы не знакомы с данной СУБД.

Здесь я на пальцах объясню, как поднять Кассандру на 3 нодах (nodes), что означает, что для успешного взлета кластера нам понадобятся 3 сервера, на которых надо будет установить и настроить Cassandra. Надеюсь, всем понятно, что в данном контексте node = server.

Начну с того, что на каждом сервере должна быть учётка юзера cassadmin. Не выполняйте установку из-под root и уж тем более oracle/user/admin и т.д.

Предварительно устанавливаем Java, а лучше все, что с ней связано, например, командой sudo yum install -y java*

Для начала нам нужно создать папку (в данном примере назову ее folder), которую мы отведем под Кассандру, и сделать пользователя cassadmin ее владельцем - разумеется, рекурсивно.

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

Выполняем команду:

tar xzvf apache-cassandra-3.11.9-bin.tar.gz

Если у вас другая версия, то название архива может отличаться, но в моем случае это apache-cassandra-3.11.9-bin.tar.gz. Ссылку на скачивание давайте не буду.

Когда архиы распакуется, рекомендую образовавшуюся папку с Кассандрой переименовать просто в cassandra. В моем примере - через sudo mv apache-cassandra-3.11.9 cassandra

На всякий случай после этого советую еще раз проверить, является ли cassadmin владельцем папки рекурсивно, и если нет, то выполнить команду:

sudo chown -R cassadmin:cassadmin /folder/cassandra

Переходим в папку cassandra и находим там конфигурационный файл cassandra.yaml

Ищем и выставляем там следующие параметры:

endpoint_snitch: ставим GossipingPropertyFileSnitch

authenticator: PasswordAuthenticator, a не AllowAllAuthenticator

listen_address: прописываем свой ip-адрес

rpc_address: сюда тоже ставим свой ip-адрес

seeds: сюда сначала пишем свой ip-адрес (текущего сервера), после него ip остальных серверов, которые будут входить в кластер - тут уже в любом порядке

enable_user_defined_functions = true

Сохраняем конфигурятину.

То же самое в плане установки и конфигурятины проделываем на остальных серверах, только будьте внимательны: в пункте seeds для каждого сервера сначала пишем его текущий ip, а после него в любом порядке остальные ip. Например, у нас есть один сервер с ip 01, второй сервер с ip 02 и третий сервер с ip 03, и все эти сервера мы хотим объединить в кластер Кассандры. В таком случае в параметре seeds на первом сервере айпишники будут прописаны в таком порядке: 01, 02, 03, на втором сервере - 02, 01, 03 (ну или 02, 03, 01), а на третьем - 03, 01, 02 (или же 03, 02, 01).

После того, как на всех серверах была установлена Кассандра и отредактированы конфигурационные файлы cassandra.yaml, на любом сервере, находясь в папке cassandra/bin, выполняем следующую команду:

nohup ./cassandra & - таким образом мы запускаем Кассандру отдельным процессом и не даем ей завянуть после того, как выйдем из сервера, чтобы не запускать каждый раз заново.

Проверяем, поднялся ли кластер и все ли ноды подтянулись:

./nodetool status

Должно отобразить 3 ноды. (спойлер: если какая-то бода не подтянулась, удаляем Кассандру с нее и проводим настройку заново)

Открываем новое окно консоли и там выполняем команду:


./cqlsh айпишниктекущегосервера -u cassandra -p cassandra

Внимание: айпишниктекущегосервера = это действительно ip-адрес сервера, на котором вы сейчас находитесь и с которого запустили службу Кассандры.

Если же вам удалось все сделать правильно и вы оказались в оболочке cqlsh, теперь можно создать тестовый Keyspace, тестового пользователя и загрантить ему права на данный keyspace:

CREATE ROLE testuser WITH PASSWORD = 'password' AND LOGIN = true;

CREATE KEYSPACE testkeyspace WITH REPLICATION = {'class':'NetworkTopologyStrategy', 'dc1' : 3};

GRANT ALL ON KEYSPACE testuser TO testkeyspace;

Обратите внимание на {'class':'NetworkTopologyStrategy', 'dc1' : 3} - это важно, так как в кластере у нас 3 ноды.

Это все. Кластер поднялся.

Tags:
cassandra, nosql, администрирование бд, базы данных, apache cassandra

You can't comment this post because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author's username will be hidden by an alias.