Almacenamiento en la nube de Riak. Parte 3. Soporte, proxy y equilibrio de carga, cliente S3

imagen


En este art铆culo, completaremos la configuraci贸n de los componentes del sistema Riak Cloud Storage.



Este art铆culo es la finalizaci贸n de una serie de traducciones gratuitas del manual oficial del sistema Riak CS 2.1.1.

Parte 1. Configuraci贸n de Riak KV

Parte 2. Configuraci贸n del componente Riak CS



Configuraci贸n de Stanchion



Debe utilizar un solo nodo de Stanchion en su cl煤ster. Todos los nodos de Riak CS en este cl煤ster deben configurarse para comunicarse con el nodo de Stanchion para que el cl煤ster pueda monitorear y reconciliar las operaciones causales.



Todas las configuraciones utilizadas por el nodo Stanchion est谩n contenidas en el archivo stanchion.conf, que se encuentra en el directorio / etc / stanchion en la mayor铆a de los sistemas operativos.



Si est谩 actualizando desde una versi贸n anterior a Riak CS 2.0.0, cuando se introdujeron stanchion.conf y riak-cs.conf, a煤n puede usar el antiguo archivo de configuraci贸n app.config. Los ejemplos siguientes ser谩n equivalentes.



STANCHION.CONF



configuration.name = value


APP.CONFIG



{stanchion, [
             %% Configs here
            ]}


Configuraci贸n de la direcci贸n IP y el puerto para Stanchion



Si solo tiene un nodo Riak CS, no necesita cambiar la configuraci贸n de Stanchion, porque Stanchion solo est谩 escuchando las solicitudes del host local. Si el cl煤ster Riak CS tiene muchos nodos, entonces debe configurar la direcci贸n IP y el puerto en el que Stanchion escuchar谩 las solicitudes de otros nodos.



Puede establecer la direcci贸n IP mediante el par谩metro de escucha . Reemplace 127.0.0.1 con la direcci贸n IP del nodo Stanchion y el puerto 8080 con el puerto del nodo:



STANCHION.CONF



listener = 127.0.0.1:8080


APP.CONFIG



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


Nota sobre direcciones IP coincidentes La



direcci贸n IP que ingrese aqu铆 debe coincidir con la direcci贸n IP en el par谩metro stanchion_host en riak.conf para Riak y riak-cs.conf para Riak CS.


Si desea utilizar SSL, aseg煤rese de que los par谩metros ssl.certfile y ssl.keyfile no est茅n comentados y configurados correctamente.



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
            ]}


Configurar una cuenta de administrador



El administrador se crea al configurar el componente Riak CS. Se deben agregar los mismos permisos para cada Stanchion usado en el cl煤ster. Esto se configura en stanchion.conf, que se encuentra en el directorio / etc / stanchion. Ingrese la misma admin.key y 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
          ]}


Configuraci贸n de la informaci贸n de Riak KV



Si est谩 ejecutando un nodo para experimentaci贸n, o si el nodo Riak KV se est谩 ejecutando localmente y est谩 configurado para escuchar el tr谩fico del b煤fer de protocolo en 0.0.0.0, entonces la configuraci贸n predeterminada deber铆a estar bien.



De lo contrario, actualice la direcci贸n IP y el puerto del host Riak en el archivo de configuraci贸n de Stanchion.



STANCHION.CONF



riak_host = 127.0.0.1:8087


APP.CONFIG



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


Equilibrio de carga y proxy para Riak CS



imagen




Si planea usar Riak CS en uso industrial, le recomendamos encarecidamente que instale un equilibrador de carga o proxy, software o hardware, despu茅s de Riak CS. Tambi茅n tenga en cuenta que no debe exponer directamente Riak CS a interfaces de red abiertas.



Los usuarios de Riak CS informan que utilizan Riak CS con 茅xito con un equilibrador de carga o proxy. Las soluciones conjuntas incluyen equilibradores de carga de hardware patentados, opciones de equilibrador de carga basadas en la nube, como Elastic Load Balancer de Amazon, y soluciones de software de c贸digo abierto como HAProxy y Nginx.



Esta gu铆a revisa brevemente la soluci贸n de uso compartido de c贸digo fuente de HAProxy y Nginx y proporciona algunos consejos operativos y de configuraci贸n recopilados por la comunidad de ingenieros y usuarios de Riak.



HAProxy



HAProxy es una soluci贸n r谩pida y confiable para el equilibrio de carga y el tr谩fico de aplicaciones HTTP y TCP.



Los usuarios informan sobre el uso exitoso de HAProxy en combinaci贸n con Riak CS en una serie de configuraciones y escenarios. M谩s informaci贸n y ejemplos de configuraci贸n para esta secci贸n son para usuarios avanzados de la comunidad de Riak CS, adem谩s de los comentarios de los ingenieros de Riak.



Ejemplo de configuraci贸n



El siguiente ejemplo es el punto de partida para configurar HAProxy como un equilibrador de carga para una instalaci贸n de Riak CS.



Nota sobre los



l铆mites de archivos abiertos Los l铆mites de archivos abiertos del sistema operativo deben ser superiores a 256.000 para el siguiente ejemplo de configuraci贸n. Consulte la documentaci贸n para conocer los l铆mites de archivos abiertos para conocer la configuraci贸n detallada del valor para diferentes sistemas operativos.


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


Tenga en cuenta que el ejemplo anterior se considera un punto de partida y es un trabajo en progreso.


Debe tener cuidado al aplicar esta configuraci贸n y modificarla para adaptarla a su entorno.

Un detalle de configuraci贸n espec铆fico que vale la pena destacar del ejemplo es la opci贸n comentada para usar SSL. HAProxy admite SSL directamente desde la versi贸n 1.5. Aseg煤rese de que su instancia de HAProxy est茅 construida con soporte OpenSSL, puede habilitar SSL descomentando la l铆nea y modific谩ndola para que se adapte a su entorno.



Puede encontrar m谩s informaci贸n en la documentaci贸n de HAProxy .



Adem谩s, preste atenci贸n a la opci贸n de verificaci贸n de estado de Riak CS a trav茅s del punto final / riak-cs / ping. Este par谩metro es necesario para validar cada host Riak CS como parte del m茅todo de operaci贸n por turnos de equilibrio de carga.



Nginx



Varios usuarios han informado que han utilizado correctamente un servidor HTTP Nginx para enviar solicitudes de proxy para Riak CS. Aqu铆 se incluye un ejemplo que proporciona acceso a Riak CS como referencia.



Ejemplo de configuraci贸n



A continuaci贸n se muestra un ejemplo de configuraci贸n inicial para que Nginx act煤e como un proxy de front-end para 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;
  }
}


Tenga en cuenta que la directiva proxy_set_header Host $ http_host es necesaria para garantizar que el encabezado HTTP Host: se pase a Riak CS tal como se recibe y no se traduzca al nombre de host o la direcci贸n del servidor backend de Riak CS.



Tambi茅n es importante tener en cuenta que proxy_pass no debe terminar con una barra, ya que esto puede provocar varios problemas.



Configuraci贸n del cliente S3



imagen




Este tutorial le muestra c贸mo utilizar s3cmd como cliente S3. Si bien no cubrir谩 todas las funciones del cliente, le mostrar谩 c贸mo crear una configuraci贸n y ejecutar algunos comandos b谩sicos.

Nota: s3cmd Signature Version



Si est谩 utilizando s3cmd versi贸n 1.5.0 o superior, debe agregar la marca --signature-v2 para cada comando dirigido al cl煤ster de Riak CS para que s3cmd use AWS versi贸n 2 y no el AWS 3 predeterminado.

Configuraci贸n inicial



Para utilizar s3cmd junto con Riak CS, debe configurar la utilidad para que se conecte con su sistema Riak CS. Una forma es crear un archivo .s3cfg y guardarlo en su directorio personal. Cuando ejecuta cualquier comando relacionado con s3cmd, el contenido del archivo se leer谩 de forma predeterminada. Alternativamente, puede especificar un archivo de configuraci贸n usando el indicador -c . Ejemplo:



SHELL



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


Una forma alternativa de configurar s3cmd es ejecutar s3cmd --configure , que lanzar谩 una herramienta interactiva y crear谩 un archivo de configuraci贸n basado en lo que ingrese.



En la siguiente secci贸n, encontrar谩 un peque帽o ejemplo de archivos .s3cfg que se pueden usar para configurar la comunicaci贸n con Riak CS.



Ejemplo de archivo de configuraci贸n de s3cmd para uso local



Utilice este archivo de configuraci贸n .s3cfg de ejemplo para comunicarse con Riak CS localmente en el puerto 8080 con s3cmd (recuerde incluir informaci贸n espec铆fica para su instalaci贸n de Riak CS si es necesario).



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


Ejemplo de archivo de configuraci贸n de s3cmd para usar en producci贸n



Utilice este archivo de configuraci贸n .s3cfg de ejemplo para interactuar con Riak CS a trav茅s de s3cmd en un sistema de producci贸n.



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


Para configurar el cliente s3cmd para un usuario, debe cambiar la clave de acceso y la clave secreta.



Configurar la ubicaci贸n de almacenamiento



De forma predeterminada, el archivo .3cfg utiliza el servicio Amazon S3 como backend de almacenamiento. Para un sistema Riak CS, cambie las siguientes configuraciones para que apunten a su sistema de almacenamiento.



  • host_base : proporcione un nombre de dominio o una ruta a su almac茅n de datos, por ejemplo, data.example.com
  • host_bucket : especifique la ubicaci贸n del dep贸sito, por ejemplo, my_cs_bucket.data.example.com


Usando SSL en el cliente



Si est谩 utilizando SSL, establezca el par谩metro use_https en True .



Enlaces



Almacenamiento en la nube de Riak. Parte 1. Configuraci贸n de Riak KV

Riak Cloud Storage. Parte 2. Configuraci贸n del componente Riak CS

Riak Cloud Storage. Parte 3. Stanchion, Proxy y Load Balancing, S3 Client

Manual original.



All Articles