Pull to refresh

Riak Cloud Storage. Часть 2. Настройка компонента Riak CS

Reading time10 min
Views771
В этой статье мы продолжим настройку отдельных компонентов системы Riak Cloud Storage, а именно компонента Riak CS.

image

Данная статья это продолжение вольных переводов официального руководства по системе Riak CS 2.1.1
Часть 1. Настройка Riak KV
Часть 3. Stanchion, Proxy и балансировка нагрузки, клиент S3
С целью обеспечить корректную работу компонента Riak CS важно знать как подключаться к Riak KV. Узел Riak CS обычно запускается на том же сервере, что и соответствующий ему узел Riak KV. Это означает, что изменения будут необходимы только в том случае, если Riak настроен с использованием параметров, отличных от настроек по умолчанию.

Настройки Riak CS находятся на узле CS в конфигурационных файлах riak-cs.conf и advanced.conf. Оба файла обычно расположены в директории /etc/riak-cs. Новый файл riak-cs.conf это простой список с парами конфигурация=опция, но есть опции которые могут быть изменены только через advanced.config файл. Это примерно выглядит так:

ADVANCED.CONFIG

{riak_cs, [
    {parameter1, value},
    {parameter2, value},
    %% and so on...
]},

Если вы обновляетесь с версии ранее 2.0.0 — когда файл riak-cs.conf был введён — вы так же всё ещё можете использовать файл app.config, расположенный в месте с riak-cs.conf / advanced.config. Файл app.config имеет идентичный синтаксис файлу advanced.conf, поэтому любые примеры, которые используются для advanced.conf могут быть напрямую использоваться в app.config файле.
Пожалуйста, обратите внимание на то, что старый app.config файл заменяет новые конфигурационные файлы. Если app.config присутствует, ни riak-cs.conf, ни advanced.config не будут использоваться.
Примечание: о наследии app.config
Если вы обновляетесь с предыдущих версий Riak CS до Riak CS 2.0 и планируете продолжить использовать наследуемый app.config файл, пожалуйста, обратите внимание, что в некоторых конфигурационных файлов изменились имена опций. Так же IP/Port формат был изменён в версии 2.0 для Stanchion, Riak, Riak CS. Ознакомиться с изменениями можно в документе Rolling Upgrades Document.

Для получения исчерпывающего перечня доступных параметров и полного списка параметров для app.config можно в документе Full Configuration Reference.
Разделы ниже описывают важные конфигурационные опции для Riak CS.

Хост и порт.


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

  • riak_host – замените 127.0.0.1:8087 на IP-адрес и номером порта узла Riak KV, к которому вы хотите подключить Riak CS.

Вам так же нужно задать хост прослушивателя для Riak CS:

  • listener – замените 127.0.0.1:8080 на IP-адрес и номер порта узла Riak CS, если вы собираетесь использовать его не локально. Будьте уверены, что номер порта не конфликтует к портом riak_host узла Riak KV и узла Riak CS, которые запущены на одной и той же машине.

Примечание: об IP-адресе
IP-адрес, который вы вводите здесь, должен соответствовать IP-адресу, указанному для интерфейса буферов протокола Riak KV в riak.conf файле, если только Riak CS не работает в совершенно другой сети, и в этом случае требуется преобразование адресов.
После некоторых изменений в riak-cs.conf, перезапустите узел Riak CS, если он был уже запущен.

Параметры узла Stanchion Node


Если вы используете один узел Riak CS, то вам не нужно менять настройки Stanchion, потому что он запускается на локальном хосте (Прим. Stanchion устанавливается только в одном экземпляре для всего кластера). Если Riak CS система имеет множество узлов, в этом случае, вы должны указать IP-адрес и порт Stanchion узла и наличие или отсутствие использования SSL.
Параметры для Stanchion находятся в конфигурационном файле riak-cs.conf узла Riak CS, расположенного в ./etc/riak-cs/conf директории каждого Riak CS узла.

Чтобы задать хост и порт для Stanchion, убедитесь, что для хоста и порта, используемых Stanchion, задан следующий параметр:

  • stanchion_host – замените 127.0.0.1:8085 на IP-адрес и порт узла Stanchion.

Использование SSL


В Stanchion SSL по умолчанию отключено, т.е. параметр stanchion_ssl имеет значение off. Если Stanchion настроен на использование SSL, измените значение на on. Следующий пример конфигурации задаёт хост Stanchion как localhost, порт 8085 (по умолчанию) и разрешает использовать SSL.

RIAK-CS.CONF

stanchion_host = 127.0.0.1:8085
stanchion_ssl = on

ADVANCED.CONFIG
{riak_cs, [
    %% Other configs
    {stanchion_host, {"127.0.0.1", 8085}},
    {stanchion_ssl, true},
    %% Other configs
]}

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


Вы так же можете задать более удобное для вас имя узла Riak CS, которое поможет определить узел на котором возникают запросы во время устранения неполадок. Это настраивается в конфигурационном файле riak-cs.conf или vm.args, который так же расположен в /etc/riak-cs.conf. Здесь будет задано имя Riak CS узла riak_cs@127.0.0.1:

RIAK-CS.CONF

nodename = riak_cs@127.0.0.1

VM.ARGS

-name riak_cs@127.0.0.1

Измените 127.0.0.1 на IP-адрес или имя хоста сервера, на котором запущен Riak CS.

Создание учётной записи администратора


Администратор это специальный авторизованный пользователь для совершения действий, таких как создание пользователей или получение статистики. Учётная запись администратора ничем не отличается от учётной записи другого пользователя. Вы должны создать учётную запись администратора для дальнейшего использования Riak CS.
Примечание: о создании анонимного пользователя.

До создания учётной записи администратора, вы должны задать параметр anonymous_user_creation = on в riak-cs.conf (или задайте {anonymous_user_creation,true} в advanced.config/app.config). Вы можете отключить снова, когда администратор будет создан.
Чтобы создать учётную запись администратора, используйте POST HTTP запрос и именем пользователя, которое вы хотите для учётной записи администратора. Например как:

CURL

curl -H 'Content-Type: application/json' \
  -XPOST http://<host>:<port>/riak-cs/user \
  --data '{"email":"admin@example.com", "name":"admin"}'

JSON ответ должен выглядеть вот так:

{
  "display_name" : "admin",
  "email" : "admin@example.com",
  "id" : "8d6f05190095117120d4449484f5d87691aa03801cc4914411ab432e6ee0fd6b",
  "key_id" : "OUCXMB6I3HOZ6D0GWO2D",
  "key_secret" : "a58Mqd3qN-SqCoFIta58Mqd3qN7umE2hnunGag==",
  "name" : "admin_example",
  "status" : "enabled"
}

Опционально вы можете отправить и получить XML, если зададите Content-Type в значение application/xml.

Когда администратор создан, вы должны задать полномочия администратора для каждого узла Riak CS. Полномочия администратора задаются в конфигурационном файле riak-cs.conf, который расположен в /etc/riak-cs директории. Вставьте key_id строчку между кавычками для admin.key. Вставьте secret_key поле параметра admin.secret:

RIAK-CS.CONF

admin.key = OUCXMB6I3HOZ6D0GWO2D
admin.secret = a58Mqd3qN-SqCoFIta58Mqd3qN7umE2hnunGag==

ADVANCED.CONFIG

{riak_cs, [
           %% Admin user credentials
           {admin_key, "OUCXMB6I3HOZ6D0GWO2D"},
           {admin_secret, "a58Mqd3qN-SqCoFIta58Mqd3qN7umE2hnunGag=="},
           %% Other configs
          ]}

Ограничение бакетов


Вы так же можете установить ограничение на число бакетов создаваемых пользователем. По умолчанию максимум 100 бакетов. Пожалуйста, имейте в виду, что если пользователь превысит лимит создания бакетов, они всё ещё будут доступны для других операций, включая удаление бакета. Вы можете изменить лимит по умолчанию используя параметр max_buckets_per_user на каждом узле в файле advanced.config — и это не будет равным изменением в файле riak-cs.conf. Например конфигурация ниже задаёт максимум 1000:

ADVANCED.CONFIG

{riak_cs, [
           %% Other configs
           {max_buckets_per_user, 1000},
           %% Other configs
          ]}

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

Пулы подключения


Riak CS использует два явных пула подключения c целью коммуникации с Riak KV: первичный(основной) и вторичный пулы.

Первичный пул подключения используется для обслуживания большинства запросов API, связанных с загрузкой или извлечением объектов. Задаётся он в конфигурационном файле как pool.request.size. По умолчанию размер пула 128.

Вторичный пул подключения используется строго для запросов на перечисление содержимого бакетов. Отдельный пул подключения необходим для повышения производительности.
Вторичный пул подключения определяется в конфигурационном файле как pool.list.size. По умолчанию его размер равен 5.

Ниже показана запись конфигурации connection_pools по умолчанию, которую можно найти в app.config файле:

RIAK-CS.CONF

pool.request.size = 128
pool.request.overflow = 0
pool.list.size = 5
pool.list.overflow = 0

ADVANCED.CONFIG

{riak_cs, [
           %% Other configs
           {connection_pools,
           [
            {request_pool, {128, 0} },
            {bucket_list_pool, {5, 0} }
           ]},
           %% Other configs
]}

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

Тюнинг


Мы настоятельно рекомендуем Вам быть осторожным при настройке значения параметра pb_backlog в Riak KV. Когда узел Riak CS запущен, каждый пул подключения устанавливает соединения с Riak КV. Это может привести к проблеме thundering herd problem, в которой соединения в пуле полагают, что они связаны с Riak KV, но на самом деле они были сброшены. Из-за ограничения скорости передачи пакетов TCP RST (управляется параметром net.inet.icmp.icmplim) некоторые пакеты могут не получать уведомления до тех пор, пока они не будут использованы для обслуживания запроса пользователя. Это проявляется в виде сообщений {error, disconnected} в журнальных файлах Riak CS и ошибкой, возвращённой пользователю.

Подключение SSL в Riak-CS


RIAK-CS.CONF

ssl.certfile = "./etc/cert.pem"
ssl.keyfile = "./etc/key.pem"

ADVANCED.CONFIG
{ssl, [
    {certfile, "./etc/cert.pem"},
    {keyfile, "./etc/key.pem"}
   ]},

Замените текст в кавычках на пути к вашим ключам SSL шифрования. По умолчанию, на каждом узле файлы cert.pem и key.pem расположены в /etc директории. Вы свободны в использовании этих ключей или своих.

Пожалуйста, обратите внимание, что вы так же должны обеспечить наличием удостоверяющего центра(центр сертификации), т. е. CA сертификат. Если вы имеете такую возможность, то вы должны использовать advanced.config конфигурационный файл и указать его расположение в параметре cacertfile. В отличие от certfile и keyfile, параметр cacertfile не закомментирован. Здесь вы должны добавить свой сертификат. Пример такой конфигурации:

ADVANCED.CONFIG

{ssl, [
       {certfile, "./etc/cert.pem"},
       {keyfile, "./etc/key.pem"},
       {cacertfile, "./etc/cacert.pem"}
      ]},
      %% Other configs

Инструкции по созданию CA сертификата вы можете найти на сторонних ресурсах.

Прокси против подключения напрямую


Riak CS может взаимодействовать S3 клиентами по одному из двух путей:

  1. прокси конфигурация — когда S3 клиент подключается к Riak CS, как будто с Amazon S3, то есть с типичными URL Amazon.
  2. прямое подключение — требует, чтобы S3 клиент, подключённый к Riak CS был настроен как «S3-совместимый сервис», то есть точка подключения Riak CS маскируется под Amazon S3. Примеры таких сервисов Transmit, s3cmd, DragonDisk.

Прокси


Чтобы установить прокси конфигурацию, настройте ваш прокси-клиент как точку по адресу Riak CS кластера. Затем настройте ваш клиент с полномочиями Riak CS.

Когда Riak CS получает запрос на проксирование, он обслуживает сам запрос и отвечает клиенту так, как если бы запрос шел в S3.

На стороне сервера, параметр root_host в файле riak-cs.conf должен иметь значение s3.amazonaws.com, потому что все запросы клиента на URL бакетов будут предназначены для s3.amazonaws.com. Это по умолчанию.
Важно: Одна из проблем с конфигурациями прокси-серверов заключается в том, что многие клиенты GUI позволяют настраивать только один прокси-сервер для всех подключений. Для клиентов, пытающихся подключиться как к S3, так и к Riak CS, может оказаться проблематичным.

Прямое подключение


Настройка прямого подключения осуществляется через параметр cs_root_host в разделе riak-cs файла app.config. Значение должно быть задано FQDN вашей точки входа Riak CS, так как все URL'ы бакетов будут предназначены для точки входа FQDN.

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

CONFIG

data.riakcs.net
*.data.riakcs.net

Настройки сборщика мусора


image

Для настройки сборщика мусора в Riak CS доступны следующие настройки. Дополнительную информацию вы можете посмотреть в разделе Garbage Collection.

  • gc.leeway_period — (leeway_seconds в advanced.config или app.config) — время, которое должно пройти до того, как версия объекта, явно удаленная или перезаписанная, будет допущена к сборке мусора. По умолчанию время 24h(24 часа)
  • gc.interval (gc_interval в advanced.config или app.config) — интервал, в течение которого демон сборки мусора выполняет поиск и сборку подходящих версий объектов. По умолчанию значение 15m (15 минут). Важно, чтобы в любой момент времени в кластере работал только один демон сборки мусора. Отключите демон на узле, задав параметру gc_interval значение infinity.
  • gc.retry_interval (gc_retry_interval в advanced.config или app.config) — время, которое должно пройти до того, как будет предпринята еще одна попытка сделать запись для объявления объекта в состоянии pending_delete во время сборки мусора в допустимом бакете. В общем случае этот тайм-аут никогда не должен истекать, но может истечь, если из-за ошибки исходная запись во время сборки мусора в допустимом бакете будет удалена до завершения процесса сборки мусора. По умолчанию 6h (6 часов).
  • gc.max_workers (gc.max_workers в advanced.config или app.config) — максимальное количество рабочих процессов, которое может быть запущено демоном сборщика мусора для использования одновременно в сборке допустимых объектов. По умолчанию 2.
  • active_delete_threshold (active_delete_threshold в advanced.config или app.config) — блоки объектов, размер которых меньше порогового значения, синхронно удаляются, а их манифесты помечаются как scheduled_delete. По умолчанию значение 0.

Есть несколько дополнительных настроек, которые могут быть заданы только в advanced.config или app.config конфигурационных файлах. Ни одна из ниже перечисленных настроек недоступна через конфигурационный файл riak-cs.conf

  • epoch_start — время, которое демон сборки мусора использует для начала сбора ключей из допустимого бакета в момент сборки мусора. Записи в этом бакете используют ключи, основанные на эпохальном времени создания записи + leeway_seconds. По умолчанию 0 и его должно быть достаточно для основного использования. Корректировать это значение можно в том случае, если вторичный индексный запрос, выполняемый демоном сборки мусора, постоянно истекает. Повышение начального значения может уменьшить диапазон запроса и повысить вероятность его успешного выполнения. Значение должно быть указано в двоичном формате Erlang. например, чтобы установить его равным 10, укажите <<«10»>>.
  • initial_gc_delay — количество секунд ожидания в дополнение к значению gc_interval перед первым выполнением демона сборки мусора при запуске узла Riak CS. Примечание: Первоначально эта настройка использовалась для поэтапного выполнения GC на нескольких узлах; мы больше не рекомендуем запускать несколько демонов GC. Соответственно, мы не рекомендуем устанавливать initial_gc_delay.
  • max_scheduled_delete_manifests — Максимальное число манифестов (репрезентативных версий объектов), которые могут находиться в состоянии scheduled_delete для данного ключа. Неограниченное значение означает, что нет максимума, и обрезка не будет происходить на основе подсчета. Примером того, где эта опция полезна, является случай использования, включающий много оттока на фиксированном наборе ключей в течение относительно короткого периода времени по сравнению со значением leeway_seconds. Это может привести к тому, что объекты манифеста достигнут размера, который может негативно повлиять на производительность системы. Значение по умолчанию не ограничено.
  • gc_batch_size — Этот параметр представляет размер, используемый для разбиения результатов запроса вторичного индекса на страницы. Значение по умолчанию 1000.

Устаревшая конфигурация
На данный момент Riak CS 2.0 ещё поддерживает настройку параметра pg_paginated_indexes, и настоятельно рекомендовано эти настройки не использовать. Настройки будут удалены в следующем мажорном релизе.

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


Для полного перечня настраиваемых параметров Riak CS вы можете обратиться к документу configuration reference.

Ссылки


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

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

Articles