Как запустить многоузловую кластерную базу данных с Cassandra в Ubuntu 14.04

Вступление

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

Ранее мы прошли https://www.digitalocean.com/community/tutorials/how-to-install-cassandra-and-run-a-single-node-cluster-on-ubuntu-14-04 как запустить одноузловой кластер Кассандры. В этом руководстве вы узнаете, как установить и использовать Cassandra для запуска многоузлового кластера в Ubuntu 14.04.

Предпосылки

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

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

Шаг 1 - Удаление данных по умолчанию

Серверы в кластере Cassandra известны как nodes. Сейчас у вас на каждом сервере есть одноузловой кластер Cassandra. На этом этапе мы настроим узлы для работы в качестве многоузлового кластера Cassandra.

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

Первая команда, которую вы запустите на каждом узле, остановит демон Cassandra.

sudo service cassandra stop

По завершении удалите набор данных по умолчанию.

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

Шаг 2 - Настройка кластера

Файл конфигурации Cassandra находится в каталоге + / etc / cassandra +. Этот конфигурационный файл + cassandra.yaml + содержит много директив и очень хорошо прокомментирован. На этом этапе мы изменим этот файл для настройки кластера.

Для настройки многоузлового кластера Cassandra необходимо изменить только следующие директивы:

  • + cluster_name +: это имя вашего кластера.

  • + -seeds +: список разделенных запятыми IP-адресов каждого узла в кластере.

  • + listen_address +: это IP-адрес, который другие узлы в кластере будут использовать для подключения к этому. По умолчанию используется * localhost *, и его необходимо изменить на IP-адрес узла.

  • + rpc_address +: это IP-адрес для удаленных вызовов процедур. По умолчанию это * localhost *. Если имя хоста сервера настроено правильно, оставьте это как есть. В противном случае измените IP-адрес сервера или адрес обратной связи (+ 127.0.0.1 +).

  • + endpoint_snitch +: имя снитча, которое говорит Кассандре о том, как выглядит ее сеть. По умолчанию это * SimpleSnitch *, который используется для сетей в одном центре данных. В нашем случае мы изменим его на * GossipingPropertyFileSnitch *, который предпочтителен для производственных установок.

  • + auto_bootstrap +: эта директива отсутствует в файле конфигурации, поэтому ее необходимо добавить и установить в * false *. Это заставляет новые узлы автоматически использовать правильные данные. Это необязательно, если вы добавляете узлы в существующий кластер, но требуется, когда вы инициализируете новый кластер, то есть тот, у которого нет данных.

Откройте файл конфигурации для редактирования, используя + nano + или ваш любимый текстовый редактор.

sudo nano /etc/cassandra/cassandra.yaml

Найдите в файле следующие директивы и измените их, как показано ниже, в соответствии с вашим кластером. Замените ++ на IP-адрес сервера, над которым вы сейчас работаете. Список + - seed: + должен быть одинаковым на каждом сервере и содержать IP-адрес каждого сервера, разделенный запятыми.

/etc/cassandra/cassandra.yaml

. . .

cluster_name: ''

. . .

seed_provider:
 - class_name: org.apache.cassandra.locator.SimpleSeedProvider
   parameters:
        - seeds: ",,..."

. . .

listen_address:

. . .

rpc_address:

. . .

endpoint_snitch:

. . .

Внизу файла добавьте директиву + auto_bootstrap +, вставив в эту строку:

/etc/cassandra/cassandra.yaml

Когда вы закончите изменять файл, сохраните и закройте его. Повторите этот шаг для всех серверов, которые вы хотите включить в кластер.

Шаг 3 - Настройка брандмауэра

На данный момент кластер настроен, но узлы не обмениваются данными. На этом этапе мы настроим брандмауэр для разрешения трафика Cassandra.

Сначала перезапустите демон Cassandra на каждом.

sudo service cassandra start

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

sudo nodetool status

Выход

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

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

  • + 7000 +, который является TCP-портом для команд и данных.

  • + 9042 +, который является портом TCP для собственного транспортного сервера. + cqlsh +, утилита командной строки Cassandra, подключится к кластеру через этот порт.

Чтобы изменить правила брандмауэра, откройте файл правил для IPv4.

sudo nano /etc/iptables/rules.v4

Скопируйте и вставьте следующую строку в цепочку INPUT, которая разрешит трафик на вышеупомянутые порты. Если вы используете файл + rules.v4 + из учебника по брандмауэру, вы можете вставить следующую строку непосредственно перед тем, как + # Отклонить все, что выпало на этот комментарий +.

IP-адрес, указанный в + -s +, должен быть IP-адресом другого узла в кластере. Если у вас есть два узла с IP-адресами + 111.111.111.111 + и + 222.222.222.222 +, правило на машине + 111.111.111.111 + должно использовать IP-адрес + 222.222.222.222 +.

Новое правило брандмауэра

-A INPUT -p tcp -s  -m multiport --dports 7000,9042 -m state --state NEW,ESTABLISHED -j ACCEPT

После добавления правила сохраните и закройте файл, затем перезапустите IPTables.

sudo service iptables-persistent restart

Шаг 4 - Проверьте статус кластера

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

sudo nodetool status

Выход

Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address      Load       Tokens       Owns    Host ID                               Rack
UN  192.168.1.4  147.48 KB  256          ?       f50799ee-8589-4eb8-a0c8-241cd254e424  rack1
UN  192.168.1.6  139.04 KB  256          ?       54b16af1-ad0a-4288-b34e-cacab39caeec  rack1

Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless

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

Вы также можете проверить, можете ли вы подключиться к кластеру, используя + cqlsh +, клиент командной строки Cassandra. Обратите внимание, что для этой команды вы можете указать IP-адрес любого узла в кластере.

cqlsh  9042

Вы увидите, что это соединяется:

Выход

Connected to My DO Cluster at 192.168.1.6:9042.
[cqlsh 5.0.1 | Cassandra 2.2.3 | CQL spec 3.3.1 | Native protocol v4]
Use HELP for help.
cqlsh>

Затем вы можете выйти из CQL-терминала.

exit

Заключение

Поздравляем! Теперь у вас есть многоузловой кластер Cassandra, работающий на Ubuntu 14.04. Более подробную информацию о Кассандре можно найти на веб-сайте project. Если вам необходимо устранить неполадки в кластере, первое место для поиска подсказок находится в файлах журналов, которые находятся в каталоге + / var / log / cassandra +.

Related