Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8 |
Как установить Apache Cassandra на CentOS 8 | Машина Rocky Linux 8? Apache Cassandra — это бесплатная система управления базами данных NoSQL с открытым исходным кодом, предназначенная для распространения и обеспечения высокой доступности. Cassandra может обрабатывать большие объемы данных на множестве обычных серверов без единой точки отказа.
Это руководство проведет вас через установку Cassandra на CentOS 8 | Rocky Linux 8. После завершения установки мы приступим к настройке и настройке Cassandra для работы с машинами, имеющими минимальные доступные ресурсы.
Особенности Кассандры
Cassandra предоставляет язык запросов Cassandra (CQL), язык, подобный SQL.
- Пространство ключей: определяет, как реплицируется набор данных, например, в каком
- Таблица: определяет типизированную схему для набора разделов. Кассандра
- Раздел: определяет обязательную часть первичного ключа для всех строк в
- Строка: содержит набор столбцов, идентифицируемых уникальным первичным ключом.
- Столбец: один элемент данных, тип которого принадлежит строке.
Cassandra поддерживает следующие клиентские драйверы:
- Джава
- Питон
- Рубин
- С#/.NET
- Нодейс
- PHP
- С++
- Скала
- Кложур
- Эрланг
- Идти
- Хаскелл
- Ржавчина
- Перл
- Эликсир
- Дарт
Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8
Для запуска Cassandra на CentOS 8 требуется Java | Rocky Linux 8. Но давайте сначала обновим и перезагрузим систему.
sudo dnf -y update
После обновления выполните перезагрузку системы.
sudo reboot
Шаг 1. Установите Java, Python и cqlsh.
Установите Python3 Pip и OpenJDK 8 на свой CentOS/Rocky Linux 8:
sudo dnf -y install python3 python3-pip java-11-openjdk java-11-openjdk-devel
Установите cqsh с помощью менеджера пакетов Python pip3:
sudo pip3 install cqlsh tox
Убедитесь, что установка прошла успешно:
.....
Collecting py>=1.4.17 (from tox)
Downloading https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl (98kB)
100% |████████████████████████████████| 102kB 9.5MB/s
Collecting toml>=0.10.2; python_version <= "3.6" (from tox)
Downloading https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl
Collecting filelock>=3.0.0 (from tox)
Downloading https://files.pythonhosted.org/packages/84/ce/8916d10ef537f3f3b046843255f9799504aa41862bfa87844b9bdc5361cd/filelock-3.4.1-py3-none-any.whl
Collecting geomet<0.3,>=0.1 (from cassandra-driver->cqlsh)
Downloading https://files.pythonhosted.org/packages/c9/81/156ca48f950f833ddc392f8e3677ca50a18cb9d5db38ccb4ecea55a9303f/geomet-0.2.1.post1-py3-none-any.whl
Collecting distlib<1,>=0.3.6 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/43/a0/9ba967fdbd55293bacfc1507f58e316f740a3b231fc00e3d86dc39bc185a/distlib-0.3.7-py2.py3-none-any.whl (468kB)
100% |████████████████████████████████| 471kB 2.2MB/s
Collecting platformdirs<3,>=2.4 (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/b1/78/dcfd84d3aabd46a9c77260fb47ea5d244806e4daef83aa6fe5d83adb182c/platformdirs-2.4.0-py3-none-any.whl
Collecting importlib-resources>=5.4; python_version < "3.7" (from virtualenv!=20.0.0,!=20.0.1,!=20.0.2,!=20.0.3,!=20.0.4,!=20.0.5,!=20.0.6,!=20.0.7,>=16.0.0->tox)
Downloading https://files.pythonhosted.org/packages/24/1b/33e489669a94da3ef4562938cd306e8fa915e13939d7b8277cb5569cb405/importlib_resources-5.4.0-py3-none-any.whl
Collecting typing-extensions>=3.6.4; python_version < "3.8" (from importlib-metadata>=0.12; python_version < "3.8"->tox)
Downloading https://files.pythonhosted.org/packages/45/6b/44f7f8f1e110027cf88956b59f2fad776cca7e1704396d043f89effd3a0e/typing_extensions-4.1.1-py3-none-any.whl
Collecting zipp>=0.5 (from importlib-metadata>=0.12; python_version < "3.8"->tox)
Downloading https://files.pythonhosted.org/packages/bd/df/d4a4974a3e3957fd1c1fa3082366d7fff6e428ddb55f074bf64876f8e8ad/zipp-3.6.0-py3-none-any.whl
Collecting pyparsing!=3.0.5,>=2.0.2 (from packaging>=14->tox)
Downloading https://files.pythonhosted.org/packages/39/92/8486ede85fcc088f1b3dba4ce92dd29d126fd96b0008ea213167940a2475/pyparsing-3.1.1-py3-none-any.whl (103kB)
100% |████████████████████████████████| 112kB 10.0MB/s
Collecting click (from geomet<0.3,>=0.1->cassandra-driver->cqlsh)
Downloading https://files.pythonhosted.org/packages/4a/a8/0b2ced25639fb20cc1c9784de90a8c25f9504a7f18cd8b5397bd61696d7d/click-8.0.4-py3-none-any.whl (97kB)
100% |████████████████████████████████| 102kB 8.5MB/s
Installing collected packages: typing-extensions, zipp, importlib-metadata, click, geomet, cassandra-driver, cqlsh, distlib, filelock, platformdirs, importlib-resources, virtualenv, pluggy, pyparsing, packaging, py, toml, tox
Running setup.py install for cassandra-driver ... done
Successfully installed cassandra-driver-3.28.0 click-8.0.4 cqlsh-6.1.2 distlib-0.3.7 filelock-3.4.1 geomet-0.2.1.post1 importlib-metadata-4.8.3 importlib-resources-5.4.0 packaging-21.3 platformdirs-2.4.0 pluggy-1.0.0 py-1.11.0 pyparsing-3.1.1 toml-0.10.2 tox-3.28.0 typing-extensions-4.1.1 virtualenv-20.17.1 zipp-3.6.0
Подтвердите установку Java и cqlsh.
$ java -version
openjdk version "11.0.18-ea" 2023-01-17 LTS
OpenJDK Runtime Environment (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS)
OpenJDK 64-Bit Server VM (Red_Hat-11.0.18.0.9-0.3.ea.el8) (build 11.0.18-ea+9-LTS, mixed mode, sharing)
$ cqlsh --version
cqlsh 6.1.0
Шаг 2. Установите Apache Cassandra на CentOS 8 | Рокки Линукс 8
Теперь, когда Java и Python установлены. Давайте теперь добавим репозиторий Cassandra в нашу систему CentOS/Rocky. Более подробную информацию о настройке репозитория можно найти на официальных страницах документации.
sudo tee /etc/yum.repos.d/cassandra.repo<<EOF
[cassandra]
name=Apache Cassandra
baseurl=https://redhat.cassandra.apache.org/41x/
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://downloads.apache.org/cassandra/KEYS
EOF
Установите Apache Cassandra с помощью команды ниже.
sudo yum -y install cassandra
Чтобы подтвердить версию установленного пакета cassandra, используйте:
$ rpm -qi cassandra
Name : cassandra
Version : 4.1.3
Release : 1
Architecture: noarch
Install Date: Wed 16 Aug 2023 02:16:33 AM UTC
Group : Development/Libraries
Size : 58896904
License : Apache Software License 2.0
Signature : RSA/SHA512, Tue 18 Jul 2023 08:18:51 PM UTC, Key ID 32f35cb2f546d93e
Source RPM : cassandra-4.1.3-1.src.rpm
Build Date : Tue 18 Jul 2023 08:18:30 PM UTC
Build Host : 9bc3d3817a9e
Relocations : (not relocatable)
URL : http://cassandra.apache.org/
....
Создайте сервис Cassandra.
sudo tee /etc/systemd/system/cassandra.service<<EOF
[Unit]
Description=Apache Cassandra
After=network.target
[Service]
PIDFile=/var/run/cassandra/cassandra.pid
User=cassandra
Group=cassandra
ExecStart=/usr/sbin/cassandra -f -p /var/run/cassandra/cassandra.pid
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Запустите и включите запуск службы при загрузке.
sudo systemctl daemon-reload
sudo systemctl start cassandra.service
sudo systemctl enable cassandra
Проверьте статус услуги:
$ systemctl status cassandra.service
● cassandra.service - Apache Cassandra
Loaded: loaded (/etc/systemd/system/cassandra.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2023-08-16 01:48:30 UTC; 30s ago
Main PID: 6371 (java)
Tasks: 16 (limit: 10843)
Memory: 1.0G
CGroup: /system.slice/cassandra.service
└─6371 /usr/bin/java -ea -da:net.openhft... -XX:+UseThreadPriorities -XX:+HeapDumpOnOutOfMemoryError -Xss256k -XX:+AlwaysPreTouch -XX:-UseBiasedLocking -XX:+UseTLAB -XX:+ResizeTLAB -XX:+>
Aug 16 01:48:45 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:45,049 YamlConfigurationLoader.java:102 - Configuration location: file:/etc/cassandra/default.conf/cassandra.yaml
Aug 16 01:48:49 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:49,810 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:49,986 Config.java:1163 - Node configuration:[allocate_tokens_for_keyspace=null; allocate_tokens_for_local_replication_>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,015 DatabaseDescriptor.java:467 - DiskAccessMode 'auto' determined to be mmap, indexAccessMode is mmap
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,017 DatabaseDescriptor.java:521 - Global memtable on-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,018 DatabaseDescriptor.java:525 - Global memtable off-heap threshold is enabled at 214MiB
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: INFO [main] 2023-08-16 01:48:50,044 DatabaseDescriptor.java:592 - Native transport rate-limiting disabled.
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:50,294 DatabaseDescriptor.java:990 - Small commitlog volume detected at '/var/lib/cassandra/commitlog'; setting commitl>
Aug 16 01:48:50 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:50,315 DatabaseDescriptor.java:657 - Only 15.499GiB free across all data volumes. Consider adding more capacity to your>
Aug 16 01:48:57 cent8.mylab.io cassandra[6371]: WARN [main] 2023-08-16 01:48:57,981 YamlConfigurationLoader.java:422 - [key_cache_save_period, counter_cache_save_period, row_cache_save_period] par>
...
Вы также можете проверить, что 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 70 KiB 256 100.0% 0daf41fa-22e5-4471-bc00-9aed6f566235 rack1
Чтобы выполнить запрос к Cassandra, вызовите оболочку CQL с помощью приведенной ниже команды.
$ cqlsh
Connected to Test Cluster at 127.0.0.1:9042
[cqlsh 6.1.0 | Cassandra 4.1.3 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
- Местоположение файлов конфигурации по умолчанию — /etc/cassandra.
- Местоположение каталогов журналов и данных по умолчанию — /var/log/cassandra/ и /var/lib/cassandra.
Шаг 3. Настройка Cassandra на CentOS 8 | Рокки Линукс 8
Для запуска Cassandra на одном узле файл конфигурации по умолчанию находится в /etc/cassandra/conf/cassandra.yaml. Для настройки кластера узлов вам может потребоваться изменить этот файл, чтобы убедиться, что ваш кластер настроен правильно.
Как минимум вы
- cluster_name: имя вашего кластера.
- сид: разделенный запятыми список IP-адресов начальных значений вашего кластера.
- storage_port: вам не обязательно это менять, но убедитесь, что этот порт не блокируется брандмауэрами.
- listen_address: IP-адрес вашего узла. Это то, что позволяет другим узлам взаимодействовать с этим узлом, поэтому важно его изменить.
- native_transport_port: что касается Storage_port, убедитесь, что этот порт не заблокирован брандмауэрами, поскольку клиенты будут связываться с Cassandra через этот порт.
Изменение расположения каталогов
Файл конфигурации yaml управляет следующими каталогами данных.
- каталоги_файлов_данных: один или несколько каталогов, в которых расположены файлы данных.
- commitlog_directory: каталог, в котором расположены файлы журнала фиксации.
- saved_caches_directory: каталог, в котором расположены сохраненные кеши.
- hints_directory: каталог, в котором расположены подсказки.
Если у вас несколько дисков, из соображений производительности рассмотрите возможность размещения файлов журнала фиксации и данных на разных дисках.
Установка переменных среды
Настройки уровня JVM, такие как размер кучи, задаются в файле cassandra-env.sh. Рассмотрите возможность добавления любого дополнительного аргумента командной строки JVM в переменную среды JVM_OPTS
. Эти аргументы передаются службе Cassandra при ее запуске.
Кассандра Ведение журнала
Используемый регистратор — logback. Вы можете изменить свойства ведения журнала, отредактировав logback.xml. По умолчанию он записывает данные на уровне INFO в файл system.log, а на уровне отладки – в файл debug.log. При работе на переднем плане он также будет записываться на консоль на уровне INFO.
Обратитесь к официальному руководству по настройке клиентов.