Введение
Apache Cassandra — бесплатная база данных NoSQL, распространяемая по лицензии с открытым исходным кодом и оптимизированная для обработки больших объемов данных. Он обеспечивает линейную масштабируемость и высокую доступность без ущерба для производительности. Apache Cassandra используется несколькими компаниями, имеющими большие активные наборы данных, включая Reddit, NetFlix, Instagram и Github.
В этой статье мы объясним, как установить Apache Cassandra на Ubuntu.
Предпосылки
В инструкциях предполагается, что вы вошли в систему как root или пользователь с привилегиями sudo.
Если вы намерены установить Apache Cassandra на удаленный сервер, продолжайте чтение, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установить Java
На момент написания этой статьи последняя стабильная версия Apache Cassandra — 3.11
, для нее требуется OpenJDK 8, которого нет в официальных репозиториях Ubuntu 18.04 LTS.
Включаем репозиторий AdoptOpenJDK и устанавливаем java.
Обновите список пакетов и установите зависимости, необходимые для добавления нового репозитория через HTTPS:
sudo apt update
sudo apt install apt-transport-https ca-certificates wget curl dirmngr gnupg software-properties-common
Импортируйте ключ GPG репозитория и добавьте репозиторий APT AdoptOpenJDK в вашу систему:
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
Установите Java 8, выполнив следующие команды:
sudo apt update
sudo apt install adoptopenjdk-8-hotspot
После завершения проверьте его, распечатав версию Java:
java -version
Вывод должен выглядеть так:
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.232-b09, mixed mode)
Установить Апач Кассандра
Мы установим Apache Cassandra, используя пакет deb из репозитория поставщика. Для этого вам нужно включить репозиторий Apache Cassandra.
Добавьте репозиторий Cassandra в список источников системы, выполнив следующую команду, в настоящее время последняя стабильная версия — 311:
echo "deb http://www.apache.org/dist/cassandra/debian 311x main" | sudo tee -a /etc/apt/sources.list.d/cassandra.sources.list
Импортируйте открытый ключ репозитория с помощью следующей команды curl
:
curl https://www.apache.org/dist/cassandra/KEYS | sudo apt-key add -
Приведенная выше команда должна ответить OK
. Это означает, что ключ был успешно импортирован и пакеты из этого репозитория будут доверенными.
Обновите индекс пакета и установите пакет Apache Cassandra:
sudo apt update
Если вы столкнулись с сообщением об ошибке, подобным следующему:
GPG error: http://www.apache.org 311x InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A278B781FE4B2BDA
Добавьте открытый ключ Apache Cassandra следующим образом:
sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-key A278B781FE4B2BDA
Затем снова обновите список пакетов:
sudo apt update
На этом этапе вы можете установить Cassandra:
sudo apt install cassandra
В конце процесса установки служба Cassandra запустится автоматически, в противном случае вы можете запустить Cassandra с помощью следующей команды:
sudo service cassandra start
Чтобы убедиться, что Cassandra запущена, введите:
nodetool status
Вы должны увидеть выходное сообщение, подобное следующему:
Datacenter: datacenter1
=======================
Status=Up/Down
|/State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 127.0.0.1 103.67 KiB 256 100.0% 1d7218c2-6c7f-4287-9695-3d957572cdcf rack1
Если вы получили сообщение об ошибке подключения, откройте следующий файл:
sudo nano /etc/cassandra/cassandra-env.sh
Найдите следующую строку:
...
JVM_OPTS="$JVM_OPTS -Djava.rmi.server.hostname=<public name>"...
Раскомментируйте его и добавьте публичный IP-адрес вашего сервера вместо <public name>.
Сохраните и закройте файл, нажав CTRL + X, затем Y, чтобы сохранить изменения, а затем ENTER, если вы используете nano.
Перезапустите Cassandra с помощью следующей команды:
sudo service cassandra restart
Чтобы убедиться, что Cassandra запущена, введите:
nodetool status
Это все. Apache Cassandra успешно установлен.
Настроить Apache Cassandra
Данные Apache Cassandra хранятся в каталоге /var/lib/cassandra
. Файлы конфигурации находятся в /etc/cassandra
, а параметры запуска Java можно настроить в /etc/default/cassandra
.
По умолчанию Cassandra слушает только локальный хост. Если клиент, подключающийся к базе данных, работает на том же компьютере, нет необходимости менять интерфейс привязки.
Для взаимодействия с Cassandra через командную строку используйте инструмент cqlsh
, поставляемый с пакетом Cassandra.
cqlsh
Connected to Test Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.5 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh>
Чтобы выйти из оболочки cassandra, введите exit:
exit
Переименовать кластер Apache Cassandra
По умолчанию кластер Cassandra называется «Тестовый кластер». Если вы хотите изменить его, выполните следующие действия:
Доступ к CQL-терминалу Cassandra с помощью cqlsh
:
cqlsh
Введите следующую команду, чтобы изменить имя кластера на «Кластер Новиелло»:
UPDATE system.local SET cluster_name = 'Noviello Cluster' WHERE KEY = 'local';
Когда закончите, введите exit
, чтобы выйти из терминала:
exit
Теперь нужно отредактировать файл конфигурации cassandra.yaml
, введя имя нового кластера, затем открыть файл:
sudo nano /etc/cassandra/cassandra.yaml
Измените параметр cluster_name на желаемое имя:
cluster_name: 'Noviello Cluster'
Очистите системный кеш:
nodetool flush system
Перезапустите службу Cassandra, выполнив:
sudo systemctl restart cassandra
Или с помощью следующей команды:
sudo service cassandra restart
Включить функции безопасности
Включить аутентификацию для входа пользователя.
Сначала сделайте резервную копию файла конфигурации Cassandra cassandra.yaml:
cp /etc/cassandra/cassandra.yaml /etc/cassandra/cassandra.yaml.backup
Откройте файл конфигурации Cassandra:
sudo nano /etc/cassandra/cassandra.yaml
Сопоставьте следующие переменные в файле со значениями, показанными ниже. Если какие-либо из следующих значений закомментированы, раскомментируйте их. Остальные свойства в файле конфигурации должны быть установлены в соответствии с конкретными требованиями проекта и тем, как вы планируете использовать Cassandra. Конфигурация по умолчанию должна нормально работать для разработки.
...
authenticator: org.apache.cassandra.auth.PasswordAuthenticator
authorizer: org.apache.cassandra.auth.CassandraAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 0
permissions_validity_in_ms: 0...
После редактирования файла перезапустите Cassandra:
sudo service cassandra restart
nodetool status
Добавить административного суперпользователя
Внимание, эта конфигурация работает только в том случае, если была соблюдена конфигурация из предыдущего пункта.
Войдите в командный терминал Cassandra с указанными ниже учетными данными для пользователя по умолчанию «cassandra»:
cqlsh -u cassandra -p cassandra
Создайте нового суперпользователя (superuser). Замените new_user и YOUR_PASSWORD на желаемую информацию:
CREATE ROLE nuovo_utente WITH PASSWORD = 'TUA_PASSWORD' AND SUPERUSER = true AND LOGIN = true;
Выйдите, набрав выход:
exit
Войдите в систему с новой учетной записью суперпользователя, используя новые учетные данные, и удалите повышенные разрешения из учетной записи Cassandra:
cqlsh -u nuovo_utente -p TUA_PASSWORD
ALTER ROLE cassandra WITH PASSWORD = 'cassandra' AND SUPERUSER = false AND LOGIN = false;
Предоставьте все разрешения новой учетной записи суперпользователя. Замените new_user на имя созданного вами пользователя:
GRANT ALL PERMISSIONS ON ALL KEYSPACES TO nuovo_utente;
Выйдите, набрав выход:
exit
Вывод
Мы показали вам, как установить Apache Cassandra на Ubuntu 18.04 LTS и, при желании, переименовать кластер по умолчанию. Для получения дополнительной информации о начале работы с Cassandra посетите страницу официальной документации.