Riak CS (Cloud Storage)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 20:15, 21 января 2019.
Riak CS (Cloud Storage)
fraimed
Создатели: Nick Marino, Russell Brown
Разработчики: Basho Technologies, Inc.
Выпущена: 27 March 2012 года; 8 years ago (2012-03-27)
Last release: 2.1.1 / 13 October 2015 года; 4 years ago (2015-10-13)
Состояние разработки: Closed
Написана на: Erlang
Операционная система: Linux, BSD, Mac OS X, Solaris
Платформа: IA-32, x86-64
Тип ПО: Облачное хранилище данных
Лицензия: Apache 2.0
Веб-сайт basho.com/products/

Riak CS - это программное обеспечение для управления объектным хранилищем, которое построено на распределенной базе данных Basho Riak. Его можно использовать для хранения данных любого типа, таких как изображения, видео, документы и резервные копии базы данных. Riak CS хранит пары ключ / значение в пространствах имен, называемых Buckets. Riak CS с открытым исходным кодом и может быть легко загружен.

Обзор

С ростом применения облачных технологий хранилище должно не только существовать с постоянно увеличивающейся емкостью, но также должно быть надежным, простым в обслуживании, распределенным, масштабируемым и дешевым. Riak CS сильно отличается от локальных решений, таких как SAN или NAS. Традиционные подходы к хранению были разработаны для структурированных данных, но сегодня основными источниками данных являются машины (например, датчики и смартфоны). Эти данные неструктурированы и требуют более надежного решения для хранения данных, чтобы справляться с большим разнообразием. Более ранние версии хранилищ были не очень отказоустойчивыми и требовали больших усилий для поддержания их надежности. Помимо того, что Riak CS лучше справляется с обработкой неструктурированных данных, он пытается устранить все основные недостатки традиционных решений для хранения данных, избегая единой точки отказа в архитектуре и обеспечивая большую отказоустойчивость, более надежное управление, масштабирование и снижение затрат.

[Источник 1]

Поддержка Amazon S3-API

Riak CS имеет встроенный интерфейс Amazon S3 с поддержкой списка управления доступом Amazon S3 (ACL), что означает, что вы можете использовать существующие инструменты и платформы Amazon S3 для управления данными, а также импортировать и извлекать данные непосредственно из Amazon. HTTP REST API поддерживает операции на уровне сервиса, сегмента и на уровне объекта для простого хранения и извлечения данных. Также есть поддержка OpenStack Swift API.

Отказоустойчивость

Riak CS имеет бесступенчатую многоузловую архитектуру (см. рисунок 1), которая обеспечивает быстрое чтение и запись даже в случае сбоев сети или оборудования (благодаря репликации узлов).

Riak CS безопасно распределяет данные по кластеру серверов, называемых узлами. Группа узлов формирует кластер Riak CS. Каждый узел в кластере может обслуживать запросы чтения и записи.

Чтобы обеспечить доступность данных, Riak CS по умолчанию копирует данные на три узла кластера. Это гарантирует, что по крайней мере одна копия данных будет доступна. Нет выделенного мастера, а значит, и единой точки отказа. Каждый узел может обслуживать любой входящий запрос.

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

Высокая масштабируемость

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

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

[Источник 2]

Мультикластерная репликация

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

В мультикластерной репликации существуют два основных режима работы:

  • полная синхронизация – синхронизация между основным и резервным кластерами осуществляется периодически;
  • режим реального времени – синхронизация происходит постоянно при изменении данных на основном кластере.

Рисунок 1 - Мультикластерная репликация

Архитектура Riak CS

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

Как работает Riak CS

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

Когда объект загружается через API хранилища, Riak CS разбивает объект на более мелкие фрагменты, которые передаются в потоковом режиме, записываются и реплицируются в Riak. Каждый блок связан с метаданными для последующего поиска. Диаграмма ниже обеспечивает визуализацию (см. Рисунок 2).

Рисунок 2 - Архитектура Riak CS


Установка

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

[Источник 3]

Для простейшего процесса установки в выпусках LTS (Long-Term Support) используйте apt-get. Сначала вы должны получить ключ подписи:

# curl https://packagecloud.io/gpg.key | sudo apt-key add -

Во-вторых, вы должны установить пакет apt-transport-https, чтобы иметь возможность получать пакеты через HTTPS:

# sudo apt-get install -y apt-transport-https

Далее загрузите и установите Riak KV:

# curl -s https://packagecloud.io/install/repositories/basho/riak/script.deb.sh | sudo bash
# sudo apt-get install riak=2.1.4-1

Переходим к скачиванию и установке Riak CS. При включенном HTTPS рекомендуется добавить желаемый пакет Riak CS в ваш файл .list. Packagecloud может автоматически генерировать такой файл на основе имени, которое вы укажете, например, имя хоста, желаемая операционная система и дистрибутив. В следующем примере имя хоста будет храниться в переменной HOSTNAME. Отправляется информация в packagecloud для автоматического создания файла .list, а затем сохраняется возвращаемое значение в файле с именем basho.list, который хранится в /etc/apt/sources каталоге. Этот пример сценария относится к дистрибутиву Precise Ubuntu:


HOSTNAME=`hostname -f`
FILENAME=/etc/apt/sources.list.d/basho.list
OS=ubuntu
DIST=precise
PACKAGE_CLOUD_RIAK_CS_DIR=https://packagecloud.io/install/repositories/basho/riak-cs
curl "${PACKAGE_CLOUD_RIAK_CS_DIR}/config_file.list?os=${OS}&dist=${DIST}&name=${HOSTNAME}" > $FILENAME

Имя, которое вы отправляете в packagecloud, может быть любым. HOSTNAME, использованное выше, было для примера. Полученный файл должен содержать содержимое, подобное следующему:

# deb https://packagecloud.io/basho/riak-cs/ubuntu/ precise main
# deb-src https://packagecloud.io/basho/riak-cs/ubuntu/ precise main

Заполнив файл basho.list, вы можете обновить список источников apt:

# sudo apt-get update

Теперь установите пакет Riak CS:

# sudo apt-get install riak-cs

Программы управления командной строки

Riak CS поставляется с различными интерфейсами командной строки, которые можно использовать для управления каждым узлом в кластере Riak CS. Сценарии для этих команд доступны по умолчанию в каталоге / bin каждого узла. Примеры команд:


# riak-cs start

Если запуск узла прошел успешно, вы не увидите возвращаемых результатов. Если узел уже запущен, эта команда вернет информацию об уже запущенном узле.

# riak-cs stop

Эта команда будет печатать ok, если остановка прошла успешно.

# riak-cs console

Если узел уже работает в фоновом режиме, вы увидите, что выходной узел уже работает - вместо этого используйте 'riak-cs attach'. Если команда выполнена успешно, вы можете выйти из оболочки, нажав Ctrl-G q.

# riak-cs attach

Команда проверяет доступность узла

# riak-cs getpid

Команда riak-cs top предоставляет информацию о том, что делают процессы Erlang в Riak CS. top сообщает о сокращении процессов (показатель загрузки процессора), используемой памяти и размерах очереди сообщений.

# riak-cs top [-interval N] [-sort reductions|memory|msg_q] [-lines N]

Опции:

  • interval указывает количество секунд между каждым обновлением вывода top и по умолчанию использует 5
  • sort определяет категорию, по которой riak-cs top сортирует и по умолчанию использует reductions
  • lines указывает количество процессов, отображаемых в верхнем выводе, по умолчанию 10

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

Источники

  1. Обзор Riak CS // Официальный сайт cloudacademy [2011-2018]. Дата обновления: 17.12.2018. URL: https://cloudacademy.com/blog/riak-cs-cloud-storage-amazon-s3/ (дата обращения: 10.01.2019)
  2. Высокая масштабируемость RiakCS // Официальный сайт basho [2013-2016]. Дата обновления: 17.12.2018. URL: http://basho.com/products/riak-kv/massive-scalability/ (дата обращения: 10.01.2019)
  3. Документация Riak CS // Официальный сайт basho [2013-2016]. Дата обновления: 17.12.2018. URL: http://docs.basho.com/riak/cs/2.1.1/cookbooks/installing/ (дата обращения: 10.01.2019)