Как стать автором
Обновить

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

Время на прочтение8 мин
Количество просмотров1.1K
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
Оригинал руководства.
Теги:
Хабы:
Рейтинг0
Комментарии0

Публикации