Riak Cloud Storage. Parte 3. Estante, Proxy e Balanceamento de Carga, Cliente S3

imagem


Neste artigo, concluiremos a configuração dos componentes do sistema Riak Cloud Storage.



Este artigo é a conclusão de uma série de traduções gratuitas do manual oficial do sistema Riak CS 2.1.1.

Parte 1. Configurando o Riak KV

Parte 2. Configurando o componente Riak CS



Configurando o Stanchion



Você deve usar um e apenas um nó Stanchion em seu cluster. Todos os nós Riak CS neste cluster devem ser configurados para se comunicar com o nó Stanchion para que o cluster possa rastrear e reconciliar operações causais.



Todas as configurações usadas pelo nó Stanchion estão contidas no arquivo stanchion.conf, que está localizado no diretório / etc / stanchion na maioria dos sistemas operacionais.



Se você estiver atualizando de uma versão anterior ao Riak CS 2.0.0 - quando stanchion.conf e riak-cs.conf foram introduzidos - você ainda pode usar o arquivo de configuração app.config antigo. Os exemplos abaixo serão equivalentes.



STANCHION.CONF



configuration.name = value


APP.CONFIG



{stanchion, [
             %% Configs here
            ]}


Configurando endereço IP e porta para escora



Se você tiver apenas um nó Riak CS, não precisa alterar as configurações do Stanchion, porque o Stanchion está apenas ouvindo os pedidos do host local. Se o cluster Riak CS tiver muitos nós, você deve definir o endereço IP e a porta em que o Stanchion atenderá as solicitações de outros nós.



Você pode definir o endereço IP usando o parâmetro listener . Substitua 127.0.0.1 pelo IP do host



Stanchion e a porta 8080 pela porta do host: STANCHION.CONF



listener = 127.0.0.1:8080


APP.CONFIG



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


Observação sobre endereços IP correspondentes O



endereço IP inserido aqui deve corresponder ao endereço IP no parâmetro stanchion_host no riak.conf para Riak e riak-cs.conf para Riak CS.


Se desejar usar SSL, certifique-se de que os parâmetros ssl.certfile e ssl.keyfile não estejam comentados e configurados corretamente.



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


Configurando uma conta de administrador



O administrador é criado ao configurar o componente Riak CS. As mesmas permissões devem ser adicionadas para cada escora usada no cluster. Isso é configurado em stanchion.conf, que está localizado no diretório / etc / stanchion. Insira os mesmos admin.key e 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
          ]}


Configurando as informações do Riak KV



Se você estiver executando um nó para experimentação, ou se o nó Riak KV estiver executando localmente e configurado para ouvir o tráfego do buffer de protocolo em 0.0.0.0, então a configuração padrão deve ser adequada.



Caso contrário, atualize o endereço IP e a porta do host Riak no arquivo de configuração do Stanchion.



STANCHION.CONF



riak_host = 127.0.0.1:8087


APP.CONFIG



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


Balanceamento de carga e proxy para Riak CS



imagem




Se você planeja usar o Riak CS em uso industrial, recomendamos fortemente que você instale um balanceador de carga ou proxy, software ou hardware, após Riak CS. Observe também que você não deve expor diretamente o Riak CS a interfaces de rede abertas.



Os usuários do Riak CS relatam o uso bem-sucedido do Riak CS com um balanceador de carga ou proxy. As soluções colaborativas incluem balanceadores de carga de hardware proprietários, opções de balanceadores de carga baseados em nuvem, como o Elastic Load Balancer da Amazon, e soluções de software de código aberto, como HAProxy e Nginx.



Este guia analisa brevemente a solução de compartilhamento de código-fonte HAProxy e Nginx e fornece algumas configurações e conselhos operacionais obtidos da comunidade de engenheiros e usuários do Riak.



HAProxy



O HAProxy é uma solução rápida e confiável para balanceamento de carga e proxy do tráfego de aplicativos HTTP e TCP.



Os usuários relatam o uso bem-sucedido do HAProxy em combinação com o Riak CS em várias configurações e cenários. Mais informações e exemplos de configuração para esta seção são para usuários avançados na comunidade Riak CS, além de comentários dos engenheiros da Riak.



Exemplo de configuração



O exemplo a seguir é o ponto de partida para configurar o HAProxy como um balanceador de carga para uma instalação do Riak CS.



Observação sobre



limites de arquivos abertos Os limites de arquivos abertos do sistema operacional devem ser maiores que 256.000 para o seguinte exemplo de configuração. Verifique a documentação para limites de arquivos abertos para configuração detalhada do valor para diferentes sistemas operacionais.


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


Observe que o exemplo acima é considerado um ponto de partida e é um trabalho em andamento.


Você deve ter cuidado ao aplicar esta configuração e modificá-la para se adequar ao seu ambiente.

Um detalhe de configuração específico que vale a pena observar no exemplo é a opção comentada para usar SSL. O HAProxy oferece suporte a SSL diretamente desde a versão 1.5. Certifique-se de que sua instância HAProxy seja construída com suporte a OpenSSL, você pode habilitar SSL removendo o comentário da linha e modificando-a para se adequar ao seu ambiente.



Você pode encontrar mais informações na documentação do HAProxy .



Além disso, preste atenção à opção de verificação de integridade do Riak CS por meio do endpoint / riak-cs / ping. Este parâmetro é necessário para validar cada host Riak CS como parte do método round robin de balanceamento de carga.



Nginx



Vários usuários relataram com sucesso o uso de um servidor Nginx HTTP para solicitações de proxy para Riak CS. Um exemplo de acesso ao Riak CS está incluído aqui para referência.



Exemplo de configuração



Abaixo está um exemplo de configuração inicial para Nginx para atuar como um proxy 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;
  }
}


Observe que a diretiva proxy_set_header Host $ http_host é necessária para garantir que o cabeçalho HTTP Host: seja passado ao Riak CS conforme recebido, e não traduzido no nome do host ou endereço do servidor backend Riak CS.



Também é importante observar que proxy_pass não deve terminar com uma barra, pois isso pode levar a vários problemas.



Configuração do cliente S3



imagem




Este tutorial mostra como usar o s3cmd como um cliente S3. Embora não cubra todos os recursos do cliente, ele mostrará como criar uma configuração e executar alguns comandos básicos.

Nota: Versão de assinatura s3cmd



Se você estiver usando s3cmd versão 1.5.0 ou superior, você precisa adicionar o sinalizador --signature-v2 para cada comando direcionado ao cluster Riak CS para que s3cmd use AWS versão 2 e não a versão AWS 3 padrão.

Configuração inicial



Para usar s3cmd em conjunto com Riak CS, você deve configurar o utilitário para fazer interface com seu sistema Riak CS. Uma maneira é criar um arquivo .s3cfg e salvá-lo em seu diretório inicial. Ao executar qualquer comando relacionado ao s3cmd, o conteúdo do arquivo será lido por padrão. Alternativamente, você pode especificar um arquivo de configuração usando o sinalizador -c . Exemplo:



SHELL



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


Uma forma alternativa de configurar o s3cmd é executar s3cmd --configure , que iniciará uma ferramenta interativa e construirá um arquivo de configuração baseado no que você inserir.



Na próxima seção, você encontrará um pequeno exemplo de arquivos .s3cfg que podem ser usados ​​para configurar a comunicação com o Riak CS.



Arquivo de configuração s3cmd de amostra para uso local



Use este exemplo de arquivo de configuração .s3cfg para se comunicar com o Riak CS localmente na porta 8080 com s3cmd (lembre-se de incluir informações específicas para a instalação do Riak CS, se necessário).



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


Arquivo de configuração s3cmd de amostra para uso na produção



Use este arquivo de configuração .s3cfg de exemplo para interagir com o Riak CS via s3cmd em um sistema de produção.



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 o cliente s3cmd para um usuário, você deve alterar access_key e secret_key.



Configurando o local de armazenamento



Por padrão, o arquivo .3cfg usa o serviço Amazon S3 como back-end de armazenamento. Para um sistema Riak CS, altere as configurações a seguir para apontar para seu sistema de armazenamento.



  • host_base - forneça um nome de domínio ou caminho para seu armazenamento de dados, por exemplo data.example.com
  • host_bucket - especifique a localização do intervalo, por exemplo my_cs_bucket.data.example.com


Usando SSL no cliente



Se você estiver usando SSL, defina o parâmetro use_https como True .



Links



Riak Cloud Storage. Parte 1. Configurando o Riak KV

Riak Cloud Storage. Parte 2. Configurando o componente

Riak CS Riak Cloud Storage. Parte 3. Stanchion, Proxy e Balanceamento de Carga, Manual Original do Cliente S3

.



All Articles