Как стать автором
Обновить

Поднимаем кластер 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 ноды.

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

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.