Pull to refresh

Riak Cloud Storage. Часть 1. Настройка Riak KV

Reading time8 min
Views2.8K
Riak CS (Cloud Storage) – лёгкое в использовании программное обеспечение для организации хранилища объектов, работающее поверх Riak KV. Riak (KV) это распределённая NoSQL база данных типа «ключ-значение(key-value)». Riak CS спроектирована так, чтобы обеспечить простоту, доступность, распределённость облачного хранилища любого масштаба, и может использоваться для построения облачных архитектур — как публичных, так и частных — или как инфраструктурного хранилища для высоко нагруженных приложений и сервисов. Riak CS API совместим с Amazon S3 и поддерживает возможность получения отчётов по различным ситуациям.

image

Данная статья это вольный перевод официального руководства по системе Riak CS версии 2.1.1

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

  • Riak (KV) – система баз данных, которая действует как конечная система.
  • Riak CS — слой облачного хранилища поверх Riak, которая предоставляет хранение и возможности API, хранит файлы и метаданные в Riak, и передаёт их затем конечным пользователям.
  • Stanchion — управляет запросами с участием глобально уникальных сущностей, такими как бакеты и пользователями в экземпляре Riak. Например, создание пользователей, создание или удаление бакетов.

Дополнительно вы так же можете настроить S3 клиент для использовании в обмене сообщениями с Riak CS системой.

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

Если ваша система состоит из нескольких узлов, конфигурация в первую очередь представляет собой настройку коммуникации между компонентами. Другие настройки, такие как и где будут храниться лог-файлы, имеют значения по умолчанию и нуждаются в изменениях только если вы захотите использовать нестандартные значения.

Настройка компонентов системы. Настройка Riak KV для CS


Так как Riak CS это приложение разработанное поверх Riak, очень важно обратить внимание на вашу конфигурацию Riak, когда запускается Riak CS. Этот документ одновременно является руководством по конфигурированию Riak, а так же справочным документом по описанию важных конфигурационных параметров.

Перед настройкой убедитесь, что Riak KV и Riak CS установлены на каждом узле в вашем кластере. Stanchion, напротив, должен быть установлен только на одном узле во всём кластере.

image

Бэкэнды для Riak CS


По умолчанию бэкэнд используемый Riak это Bitcask, но Riak CS пакет включает специальный бэкэнд, который должен быть использован Riak кластером, являющегося частью Riak CS системы. В обычной версии есть стандартный Multi бэкэнд, который поставляется с Riak.

Одни и те же Riak бакеты, используемые внутри Riak’ ом CS, используют вторичные индексы, которые теперь требуют LevelDB бэкэнд. Другие части Riak CS системы могут извлечь выгоду используя Bticask бэкэнд. Использование образцового Multi бэкенд включено в Riak CS, чтобы воспользоваться преимуществами обоих этих бэкэндов для достижения наилучшего сочетания производительности и функциональности. В следующем разделе описывается, как правильно настроить Riak для использования этого Multi-бэкенда.

Бэкэнд — это то, что Riak будет использовать для сохранения данных. В арсенале Riak KV имеется несколько бэкэндов: Bitcask, LevelDB, Memory и Multi.

Дополнительно, система расчёта хранения данных использует Riak MapReduse для суммирования файлов в бакеты. Это означает, что вы должны сообщить всем узлам Riak, где искать подготовленные файлы Riak CS перед вычислением хранения.

Несколько другие параметры должны быть изменены, чтобы настроить узел Riak, как часть системы Riak CS, такие как IP-адрес и IP-адрес и порт для обмена сообщениями через Protocol Buffers. Остальные настройки можно изменить, если в этом есть необходимость. Следующие разделы описывают как настроить узел Riak для работы как части системы Riak CS.

Настройка Riak бэкэнда


Во-первых, редактируются riak.conf или advanced.config/app.config конфигурационные файлы. Эти файлы могут быть расположены в /etc/riak или в /opt/riak/etc директориях. По умолчанию, Riak использует Bitcask бэкэнд. Первую вещь, которую нам нужно сделать, это изменить конфигурационный файл путём удаления следующей строки:

RIAK.CONF

## Delete this line:
storage_backend = bitcask

ADVANCED.CONFIG

{riak_kv,
 [ %% Delete this line: 
{storage_backend, riak_kv_bitcask_backend},
 ]}

APP.CONFIG

{riak_kv, 
  [ %% Delete this line:
    {storage_backend, riak_kv_bitcask_backend},
]}

Далее, нам нужно показать необходимость модулей RiakCS для Riak и указать Riak для использования настроенного бэкэнда обеспечивающего Riak CS. Нам нужно использовать для этого advanced.config или app.config файл и внести следующие опции:

ADVANCED.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}

APP.CONFIG

{eleveldb, [
    {total_leveldb_mem_percent, 30}
    ]},
{riak_kv, [
    %% Other configs
    {add_paths, ["/usr/lib/riak-cs/lib/riak_cs-2.1.1/ebin"]},
    {storage_backend, riak_cs_kv_multi_backend},
    {multi_backend_prefix_list, [{<<"0b:">>, be_blocks}]},
    {multi_backend_default, be_default},
    {multi_backend, [
        {be_default, riak_kv_eleveldb_backend, [
            {data_root, "/var/lib/riak/leveldb"}
        ]},
        {be_blocks, riak_kv_bitcask_backend, [
            {data_root, "/var/lib/riak/bitcask"}
        ]}
    ]},
    %% Other configs
]}

Очень важно отметить, что множество из этих значений будут зависеть от вариаций директорий специфичных для вашей операционной системы, поэтому выполняйте инструкции в соответствии с ними. Например, параметр add_paths предполагает, что Riak CS установлен в /usr/lib/riak-cs, когда параметры data_root предполагают, что Riak установлен в /var/lib. (Прим. В моем случае это было add_paths — /usr/lib64/riak-cs/).

Эта конфигурация предполагает, что Riak CS установлен на одной и той же машине, что и Riak. Если нет, то пакет нуждается в копировании в отдельный хост.

Hастройка создания сайблингов


Сейчас, нам нужно настроить параметр allow_mult в значение true. Мы можем добавить строчку в конфигурационном файле riak.conf, или раздел riak_core в advanced.config или app.config.

RIAK.CONF

buckets.default.allow_mult = true


ADVANCED.CONFIG
{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

APP.CONFIG

{riak_core, [
    %% Other configs
    {default_bucket_props, [{allow_mult, true}]},
    %% Other configs
]}

Это позволит Riak создавать сайблинги, которые необходимы для функционирования Riak CS. Если вы подключаетесь к Riak CS с помощью клиентской библиотеки, не беспокойтесь: вам не придётся разрешать конфликты, так как все Riak CS операции строго согласованы в соответствии со своим определением.

Сайблинг — это способ хранения нескольких объектов в одном ключе для того, чтобы объект имел разные значения на разных узлах.

Примечание: allow_mult
Любой узел Riak, который также поддерживает Riak CS, будет все время иметь значение true параметра allow_mult. Riak CS будет сбрасывать запуск, если значение будет false.

Настройка имени узла и IP-адреса


Каждый узел Riak имеет имя, которое может быть указано в riak.conf в опции nodename. Если вы используется конфигурационный файл app.config, вам необходимо создать файл с именем vm.args в той же директории, где и расположен app.config, и указать имя узла используя флаг -name. Мы рекомендуем задать имена узлам в формате @. И так если вы имеете три запущенных узла на одном хосте 100.0.0.1, вы можете назвать их riak1@100.0.0.1, riak2@100.0.0.1, и riak3@100.0.0.1 или вы может дать имена более специфические, такие как test_cluster1@100.0.0.1, user_data3@100.0.0.1 и так далее. Пример ниже демонстрирует изменение имени узла на имя riak1@127.0.0.1, которое будет работать на локальном хосте.

RIAK.CONF

 nodename = riak1@127.0.0.1 

VM.ARGS

 -name riak1@127.0.0.1

Вы должны задать имена всем узлам перед запуском и включением их в кластер.

Тест настройки


Сейчас, когда все необходимые настройки узла были выполнены, мы можем попытаться запустить Riak:

SHELL

 riak start 

Прим. Ответ в моём случае:

image

Здесь нужно подождать немного. Потом уже можно начать тест запущенного узла.

SHELL

 riak ping

Если ответ будет pong, значит Riak запущен: если же ответ Node not responding to pings, значит, что-то пошло не так.

Прим. Ответ в моём случае:

image

Если узел стартовал некорректно, посмотрите журнал erlang.log.1 в директории /log узла, если проблему возможно идентифицировать. Одна из самых распространённых ошибок это invalid_storage_backend. Который указывает, что путь к библиотеки Riak CS в advanced.config или в app.config неверный( или Riak CS не установлен на сервере). Несмотря на эту ошибку, убедитесь, что вы не изменили с riak_cs_kv_multi_backend на riak_kv_multi_backend.

Настройка Riak для использования буферов протокола(protocol buffers)


Настройки буферов протокола Riak находятся в riak.conf или в riak_api разделе в advanced.config или app.config файлах, которые расположены в /etc/riak/ директории. По умолчанию хост имеет IP-адрес 127.0.0.1 и порт 8087. Вам нужно их изменить, если вы планируете запускать Riak и Riak CS не в локальном окружении. Замените 127.0.0.1 IP-адрес узла Riak и порт 8087 на подходящий.

RIAK.CONF

 listener.protobuf.internal = 10.0.2.10:10001

ADVANCED.CONF

{riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}


APP.CONFIG
riak_api, [
    %% Other configs
    {pb, ["10.0.2.10", 10001]},
    %% Other configs
]}

Примечание:Значение параметра listener.protobuf.internal в riak.conf (или значение параметра pb в advanced.conf / app.config) файле должны соответствовать значениям для riak_host в Riak CS riak-cs.config и Stanchion stanchion.conf (или riak_host соответственно в advanced.config/app.config) файлах.

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

Также рекомендуется, чтобы пользователи убедились, что размер Riak protobuf.backlog (или в advanced.config/app.config файлах это pb_backlog) равняется или больше чем размер pool.request.size, указанный для Riak CS в riak-cs.config (или request_pool_size в advanced.config/ app.conf файлах).

Если значение pool.request.size в Riak CS было изменено, то значение protobuf.backlog так же в Riak должно быть обновлено.

Другие настройки Riak


Файлы riak.conf и advanced.config включают другие настройки, которые настраивают создание журнальных файлов и пути их сохранения. Эти настройки имеют значения по умолчанию и должны работать в большинстве случаев. Для большей информации, мы рекомендуем прочитать нашу документацию о конфигурационных файлах.

Настройка IP-адреса для Riak


При настройке IP-адреса для Riak вы должны быть уверенны, что узлы Riak имеют уникальный IP-адрес, будь-то бы вы работаете всего с одним узлом или добавляете ещё дополнительные узлы к системе. IP-адрес Riak содержится в riak.conf или — если вы используете app.config файл — в vm.args конфигурационном файле, который расположен там же в /etc/riak директории (или в /opt/riak/etc/ в других операционных системах).

Первоначально, строка содержащая IP-адрес Riak указывает на локальный хост в этом месте:

RIAK.CONF

 nodename = riak@127.0.0.1

VM.ARGS

 -name riak@127.0.0.1

Замените 127.0.0.1 на предпочитаемый IP-адрес или имя хоста узла Riak.

Настройки производительности и пропускной способности


Из-за причин производительности, мы настоятельно рекомендуем добавить значения в конфигурационные файлы Riak riak.conf или vm.args, расположенных в /etc/riak/ или /opt/riak/etc директории.

RIAK.CONF

 erlang.max_ports = 65536

VM.ARGS

## This setting should already be present for recent Riak installs.
 -env ERL_MAX_PORTS 65536

Отключение JavaScript MapReduce


Рекомендуется не использовать устаревший JavaScript MapReduce в связке с любой версией Riak CS. Из-за причин производительности, вы должны отключить виртуальную машину, выполняющую операции JavaScript MapReduce настройкой в riak.conf конфигурационном файле, или в riak_kv разделе advanced.conf или app.config:

RIAK.CONF

 javascript.map_pool_size = 0
 javascript.reduce_pool_size = 0
 javascript.hook_pool_size = 0 

ADVANCED.CONFIG

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

APP.CONFIG

{riak_kv, [
    %% Other configs
    {map_js_vm_count, 0},
    {reduce_js_vm_count, 0},
    {hook_js_vm_count, 0}
    %% Other configs
]}

Далее нам нужно настроить оставшиеся компоненты системы Riak CS.

Ссылки


Riak Cloud Storage. Часть 1. Настройка Riak KV
Riak Cloud Storage. Часть 2. Настройка компонента Riak CS
Riak Cloud Storage. Часть 3. Stanchion, Proxy и балансировка нагрузки, клиент S3

Оригинал руководства.
Tags:
Hubs:
+6
Comments0

Articles

Change theme settings