Установка базы Riak на CentOS7 и CentOS8
1. Отключить SELinux
# nano /etc/sysconfig/selinux
Комментируем все, вставляем строку
SELINUX=disabled
Перезагружаемся:
# reboot
2. Увеличить лимит на открывание файлов. Это делается тут:
# nano /etc/security/limits.conf
Настройки для доступа к множеству файлов одновременно:
* soft nofile 65536
* hard nofile 65536
Треьуется перезагрузка:
# reboot
3. Установить пакеты необходимые для сборки языка Erlang и базы Riak
# yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf java-1.8.0-openjdk-devel git
# yum install automake libiodbc pam-devel wget
# yum install erlang-crypto
4. Необходимо провести установку рекомендуемой версии Erlang - OTP_R16B02 в систему.
Это делается с помощью утилиты kerl
# cd /usr/src/
# curl -O https://raw.githubusercontent.com/spawngrid/kerl/master/kerl
# chmod a+x kerl
# ./kerl build git git://github.com/basho/otp.git OTP_R16B02_basho10 R16B02-basho10
Сборка выполняется долго. Сборка должна завершиться словами:
Erlang/OTP R16B02-basho10 from git has been successfully built
После сборки нужно провести установку и активацию приложения Erlang
# ./kerl install R16B02-basho10 ~/erlang/R16B02-basho10
# . ~/erlang/R16B02-basho10/activate
Проверка:
# which erl
/root/erlang/R16B02-basho10/bin/erl
# erl
Erlang R16B02_basho10 (erts-5.10.3) [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] [frame-pointer]
Eshell V5.10.3 (abort with ^G)
5. Установка самого riak:
Для CentOS8:
# wget https://files.tiot.jp/riak/kv/2.2/2.2.6/rhel/8/riak-2.2.6-1.el8.x86_64.rpm
Если не скачивается из-за проблемы устаревшего сертификата, то можно скачать так:
# wget --no-check-certificate https://files.tiot.jp/riak/kv/2.2/2.2.6/rhel/8/riak-2.2.6-1.el8.x86_64.rpm
(Файл riak-2.2.6-1.el8.x86_64.rpm можно скачать вручную)
После скачивания:
# yum localinstall -y riak-2.2.6-1.el8.x86_64.rpm
Для CentOS7:
# wget https://files.tiot.jp/riak/kv/2.2/2.2.3/rhel/7/riak-2.2.3-1.el7.centos.x86_64.rpm
или
# wget --no-check-certificate https://files.tiot.jp/riak/kv/2.2/2.2.3/rhel/7/riak-2.2.3-1.el7.centos.x86_64.rpm
# yum localinstall -y riak-2.2.3-1.el7.centos.x86_64.rpm
6. Запуск riak
# riak start
Включенив в автозагрузку:
# systemctl enable riak.service
# riak ping - проверка работы
# riak version - версия riak
# riak-admin test –тест, команда должна показать следующее:
Successfully completed 1 read/write cycle to 'riak@127.0.0.1'
# riak stop - остановка сервиса
Конфигурационный файл тут: /etc/riak/riak.conf
Лог-файлы в директории: /var/log/riak/
7. Порты, используемые Riak.
Экземпляр Riak исполняется программой beam.smp. Список открытых портов базы riak:
# netstat -ltupn | grep beam
tcp 0 0 127.0.0.1:8087 0.0.0.0:* LISTEN 2022/beam.smp
tcp 0 0 127.0.0.1:9080 0.0.0.0:* LISTEN 2022/beam.smp
tcp 0 0 0.0.0.0:46785 0.0.0.0:* LISTEN 2022/beam.smp
tcp 0 0 127.0.0.1:8098 0.0.0.0:* LISTEN 2022/beam.smp
tcp 0 0 0.0.0.0:8099 0.0.0.0:* LISTEN 2022/beam.smp
Узлы кластера должны свободно взаимодействовать друг с другом по портам: TCP 4369 и TCP 8099
TCP 4369 - для демона epmd
TCP 8099 - handoff_port
В конфигурации Multi-Datacenter во взаимодействии участвует так же порт TCP 9080.
TCP 9080 - порт cluster. Используется в конфигурациях Multi-Datacenter для репликации данных в нескольких дата-центрах
Кроме того, для обмена информацией между узлами кластера используется любой непредсказуемый порт, который согласуется при работе демона epmd. Для того что бы в файрволле не давать разрешения всем портам слушать все, задействованные порты riak нужно прописать в конфигурации /etc/riak/riak.conf. Это делается следующими директивами, которые открывают возможность выбирать порт из диапазона 6000 - 7999:
erlang.distribution.port_range.minimum = 6000
erlang.distribution.port_range.maximum = 7999
А потом перезапустить Riak
# riak stop
# riak start
Выполняем открытие портов в firewalld
# firewall-cmd --permanent --add-port=4369/tcp
# firewall-cmd --permanent --add-port=8099/tcp
# firewall-cmd --permanent --add-port=6000-7999/tcp
# firewall-cmd --reload
Подключение клиентов к базе выполняется по портам:
TCP 8098 - по протоколу HTTP
TCP 8087 - по специальному протоколу Protocol Buffers для API клиентов
Если клиент, осуществляющий запрос находиться на этой же машине, что и узел, то открывать в firewall ничего не нужно. Если есть потребность в запросах по сети, то можно открыть так:
# firewall-cmd --permanent --add-port=8098/tcp
# firewall-cmd --permanent --add-port=8087/tcp
# firewall-cmd --reload
8. Настройка кластера riak
В кластере каждый узел riak должен иметь свое имя. Все узлы равноправны. Настройка имени узла riak выполняется в следующей директиве конфигурационного файла /etc/riak/riak.conf
nodename = <Имя узла>, например, nodename = riak@10.12.35.5
Кроме имени, IP узла должен участвовать в директивах, определяющих прослушиваемые порты:
listener.http.internal = 127.0.0.1:8098
listener.protobuf.internal = 127.0.0.1:8087
Нужно заменить в нашем случае на:
listener.http.internal = 10.12.35.5:8098
listener.protobuf.internal = 10.12.35.5:8087
Для смены имени узла riak, который запускался хотя бы один раз нужно сделать следующее:
Остановить riak
# riak stop
Удалить все временные файлы, куда имя уже прописалось:
# rm -f /var/lib/riak/ring/*
Отредактировать /etc/riak/riak.conf, выставив правильное имя, например так:
nodename = riak@10.12.35.5
Запустить riak
# riak start
Добавление узла в кластер:
# riak-admin cluster join riak@10.12.35.5
riak@10.12.35.5- имя удаленного узла riak. Можно указать любой удаленный узел c любого узла
Для применения изменений
# riak-admin cluster plan
# riak-admin cluster commit
Проверка:
# riak-admin cluster status
# riak-admin status | grep ring_members – Полный список узлов кольца кластера Riak
# riak-admin status | grep connected_nodes – Список других узлов в кольце
9. Данные
Вставка значения в ключ favs/db:
# curl -X PUT http://<IP-адрес>:8098/riak/favs/db -H "content-Type: text/html" -d "<h1>RIAK</h1>"
Запрос данных по ключу:
# curl http://<IP-адрес>::8098/riak/favs/db
Комментариев нет:
Отправить комментарий