Riak Cloud Storage. Часть 3. Stanchion, Proxy и балансировка нагрузки, клиент S3

от автора

image

В этой статье мы завершим настройку компонентов системы Riak Cloud Storage.

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

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

Настройка Stanchion

В вашем кластере вы должны использовать один и только один Stanchion узел. Все узлы Riak CS в этом кластере должны быть настроены для коммуникации с Stanchion узлом, чтобы кластер мог отслеживать и согласовывать причинно-следственные операции.

Все настройки используемые узлом Stanchion содержатся в stanchion.conf файле, который расположен в директории /etc/stanchion на большинстве операционных систем.

Если вы обновляетесь с версии ранее Riak СS 2.0.0 – когда stanchion.conf и riak-cs.conf были введены — вы всё ещё можете использовать старый конфигурационный файл app.config. Примеры ниже будут равнозначны.

STANCHION.CONF

configuration.name = value 

APP.CONFIG

{stanchion, [              %% Configs here             ]} 

Настройка IP-адреса и порта для Stanchion

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

Вы можете задать IP-адрес, используя параметр listener. Замените 127.0.0.1 на IP-адрес узла Stanchion и порт 8080 на порт узла:

STANCHION.CONF

listener = 127.0.0.1:8080 

APP.CONFIG

{stanchion, [              {host, {"127.0.0.1", 8085}},              %% Other configs             ]} 

Примечание по совпадающим IP-адресам

IP-адрес, который вы здесь введёте, должен совпадать с IP-адресом в параметре stanchion_host в конфигурационном файлах riak.conf для Riak и riak-cs.conf для Riak CS.

Если вы хотите использовать SSL, убедитесь, что параметры ssl.certfile и ssl.keyfile не закомментированны и настроены корректно.

STANCHION.CONF

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

APP.CONFIG

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

Настройка учётной записи администратора

Администратор создаётся во время настройки конфигурации компонента Riak CS. Те же полномочия должны быть добавлены на каждый Stanchion, используемый в кластере. Это настраивается в stanchion.conf, который расположен в директории /etc/stanchion. Введите тот же admin.key и admin.secret

STANCHION.CONF

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

APP.CONFIG

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

Настройка сведений о Riak KV

Если вы запускаете один узел для экспериментов, или если узел Riak KV запущен локально и настроен для прослушивания трафика буффера протокола на 0.0.0.0, то настройка по умолчанию должна подойти.

Иначе, обновите IP-адрес и порт для хоста Riak в конфигурационном файле Stanchion.

STANCHION.CONF

riak_host = 127.0.0.1:8087 

APP.CONFIG

{stanchion, [              {riak_host, {"127.0.0.1", 8087}},              %% Other configs             ]} 

Балансировка нагрузки и Proxy для Riak CS

image

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

Пользователи Riak CS сообщают об успешном использовании Riak CS совместно с балансировщиком нагрузки или прокси. Совместные решения включают проприоритарные аппаратные балансировщики нагрузки, облачные опции балансировщиков нагрузки — такие как Amazon’s Elastic Load Balancer – и программные решение с открытым исходным кодом, такие как HAProxy и Nginx.

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

HAProxy

HAProxy это быстрое и надёжное решение для балансировки нагрузки и проксирования HTTP и TCP трафика приложений.

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

Пример настройки

Следующий пример это начальная точка настройки HAProxy как балансировщика нагрузки для установки Riak CS.

Примечание на лимиты открытых файлов

Лимиты открытых файлов операционной системы должны быть больше 256000 для приведенного ниже примера конфигурации. Сверяйтесь с документацией на лимиты открытых файлов для детальной настройки значения для различных операционных систем.

CONFIG

global     log 127.0.0.1     local0     log 127.0.0.1     local1 notice     maxconn           256000     spread-checks     5     daemon  defaults     log               global     option            dontlognull     option            redispatch     option            allbackups     no option         httpclose     retries           3     maxconn           256000     timeout connect   5000     timeout client    5000     timeout server    5000  frontend riak_cs     bind              10.0.24.100:8080     # Example bind for SSL termination     # bind            10.0.24.100:8443 ssl crt /opt/local/haproxy/etc/data.pem     mode              http     option            httplog     capture           request header Host len 64     acl good_ips      src -f /opt/local/haproxy/etc/gip.lst     block if          !good_ips     use_backend       riak_cs_backend if good_ips  backend riak_cs_backend     mode              http     balance           roundrobin     # Ping Riak CS to determine health     option            httpchk GET /riak-cs/ping     timeout connect 60s     timeout http-request 60s     server riak1 r1s01.example.com:8081 weight 1 maxconn 1024 check     server riak2 r1s02.example.com:8081 weight 1 maxconn 1024 check     server riak3 r1s03.example.com:8081 weight 1 maxconn 1024 check     server riak4 r1s04.example.com:8081 weight 1 maxconn 1024 check     server riak5 r1s05.example.com:8081 weight 1 maxconn 1024 check 

Пожалуйста, обратите внимание, что приведенный выше пример считается отправной точкой и является незавершенной работой.

Вы должны быть осторожны применяя эту конфигурацию и изменяя её под ваше окружение.
Конкретная деталь конфигурации, которую стоит отметить из примера, — это закомментированная опция для использования SSL. HAProxy напрямую поддерживает SSL c версии 1.5. Убедитесь, что ваш HAProxy экземпляр собран с поддержкой OpenSSL, вы можете активировать SSL путём раскомментированния строки и модификации под своё окружение.

Больше информации вы можете найти в документации на HAProxy.

Так же обратите внимание на опцию проверки здоровья Riak CS через конечную точку /riak-cs/ping. Этот параметр необходим для проверки каждого узла Riak CS как части метода round robin балансировки нагрузки.

Nginx

Некоторые пользователи сообщили об успешном использовании Nginx HTTP сервера для проксирования запросов для Riak CS. Пример, предоставляющий доступ к Riak CS, приведен здесь для справки.

Пример конфигурации

Ниже приведён пример начальной конфигурации для Nginx, чтобы действовать в качестве front-end прокси для Riak CS.

CONFIG

upstream riak_cs_host {   server  10.0.1.10:8080; }  server {   listen   80;   server_name  _;   access_log  /var/log/nginx/riak_cs.access.log;    location / {     proxy_set_header Host $http_host;     proxy_set_header X-Real-IP $remote_addr;     proxy_redirect off;      proxy_connect_timeout      90;     proxy_send_timeout         90;     proxy_read_timeout         90;      proxy_buffer_size          64k;  # If set to a smaller value,                                      # nginx can complain with a                                      # "headers too large" error      proxy_buffers 8  64k;   # Increase from default of (8, 8k).                             # If left to default with increased                             # proxy_buffer_size, nginx complains                             # that proxy_busy_buffers_size is too                             # large.      proxy_pass http://riak_cs_host;   } } 

Обратите внимание, что директива proxy_set_header Host $http_host необходима для обеспечения того, чтобы заголовок HTTP Host: передавался Riak CS как полученный, а не переводился в имя хоста или адрес бэкенд-сервера Riak CS.

Также важно отметить, что proxy_pass не должен заканчиваться косой чертой, так как это может привести к различным проблемам.

Настройка S3 клиента

image

Это руководство демонстрирует вам как использовать s3cmd как S3 клиент. Хотя оно не будет охватывать все функции клиента, оно покажет вам, как создать конфигурацию и выполнить некоторые основные команды.

Внимание: s3cmd Signature Version

Если вы используете s3cmd версии 1.5.0 или выше вам нужно добавить флаг —signature-v2 для каждой команды нацеленной на Riak CS кластера, чтобы s3cmd использовал версию AWS 2, а не версию по умолчанию AWS 3.

Первоначальная настройка

Для использования s3cmd в сочетании с Riak CS, вы должны настроить утилиту для взаимодействия с вашей Riak CS системой. Один из путей это создать файл .s3cfg и сохранить его в вашей домашней директории. Когда вы запускаете любую команду, связанную c s3cmd, содержимое файла будет считано по умолчанию. Другой вариант, вы можете указать конфигурационный файл используя флаг -c. Пример:

SHELL

s3cmd -c /PATH/TO/CONFIG/FILE <command> 

Альтернативный путь настройки s3cmd это запустить s3cmd —configure, который запустит интерактивный инструмент и соберёт конфигурационный файл на основе того, что вы введёте.

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

Пример конфигурационного файла s3cmd для локального использования

Используйте этот пример .s3cfg конфигурационного файла для взаимодействия с Riak CS локально через порт 8080 с s3cmd (не забудьте при необходимости указать данные, относящиеcя к вашей установке Riak CS).

CONFIG

[default] access_key = 8QON4KC7BMAYYBCEX5J+ bucket_location = US cloudfront_host = cloudfront.amazonaws.com cloudfront_resource = /2010-07-15/distribution default_mime_type = binary/octet-stream delete_removed = False dry_run = False enable_multipart = False encoding = UTF-8 encrypt = False follow_symlinks = False force = False get_continue = False gpg_command = /usr/local/bin/gpg gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_passphrase = password guess_mime_type = True host_base = s3.amazonaws.com host_bucket = %(bucket)s.s3.amazonaws.com human_readable_sizes = False list_md5 = False log_target_prefix = preserve_attrs = True progress_meter = True proxy_host = localhost proxy_port = 8080 recursive = False recv_chunk = 4096 reduced_redundancy = False secret_key = rGyDLBi7clBuvrdrkFA6mAJkwJ3ApUVr4Pr9Aw== send_chunk = 4096 simpledb_host = sdb.amazonaws.com skip_existing = False socket_timeout = 300 urlencoding_mode = normal use_https = False verbosity = WARNING signature_v2 = True 

Пример конфигурационного файла s3cmd для использования в продакшине

Используйте этот пример .s3cfg конфигурационного файла для взаимодействия с Riak CS через s3cmd в продакшин системе.

CONFIG

[default] access_key = EJ8IUJX9X0F2P9HAMIB0 bucket_location = US cloudfront_host = cloudfront.amazonaws.com cloudfront_resource = /2010-07-15/distribution default_mime_type = binary/octet-stream delete_removed = False dry_run = False enable_multipart = False encoding = UTF-8 encrypt = False follow_symlinks = False force = False get_continue = False gpg_command = /usr/local/bin/gpg gpg_decrypt = %(gpg_command)s -d --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_encrypt = %(gpg_command)s -c --verbose --no-use-agent --batch --yes --passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s gpg_passphrase = password guess_mime_type = True host_base = <YOUR DOMAIN HERE> host_bucket = %(bucket)s.<YOUR DOMAIN HERE> human_readable_sizes = False list_md5 = False log_target_prefix = preserve_attrs = True progress_meter = True proxy_host = proxy_port = 0 recursive = False recv_chunk = 4096 reduced_redundancy = False secret_key = XOY/9IFKVEDUl6Allrkj7oyH9XW+CANnFLEVuw== send_chunk = 4096 simpledb_host = sdb.amazonaws.com skip_existing = False socket_timeout = 300 urlencoding_mode = normal use_https = True verbosity = WARNING signature_v2 = True 

Для того, чтобы настроить s3cmd клиент для пользователя, вы должны изменить access_key и secret_key.

Настройка расположения хранилища

По умолчанию .3cfg файл использует Amazon S3 сервис, как бэкэнд хранилища. Для Riak CS системы, измените следующие настройки к точке к вашей системе хранилища.

  • host_base – укажите имя домена или путь к вашему хранилищу данных, например data.example.com
  • host_bucket – укажите расположение бакета, например my_cs_bucket.data.example.com

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

Если вы используете SSL, тогда задайте в параметре use_https значение True.

Ссылки

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

ссылка на оригинал статьи https://habr.com/ru/post/514680/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *