Stockage dans le cloud Riak. Partie 3. Stanchion, proxy et équilibrage de charge, client S3

image


Dans cet article, nous terminerons la configuration des composants du système Riak Cloud Storage.



Cet article est l'achèvement d'une série de traductions gratuites du manuel officiel du système Riak CS 2.1.1.

Partie 1. Configuration du Riak KV

Partie 2. Configuration du composant Riak CS



Mettre en place Stanchion



Vous devez utiliser un et un seul nœud Stanchion dans votre cluster. Tous les nœuds Riak CS de ce cluster doivent être configurés pour communiquer avec le nœud Stanchion afin que le cluster puisse surveiller et réconcilier les opérations causales.



Tous les paramètres utilisés par le nœud Stanchion sont contenus dans le fichier stanchion.conf, qui se trouve dans le répertoire / etc / stanchion sur la plupart des systèmes d'exploitation.



Si vous effectuez une mise à niveau à partir d'une version antérieure à Riak CS 2.0.0 - lorsque stanchion.conf et riak-cs.conf ont été introduits - vous pouvez toujours utiliser l'ancien fichier de configuration app.config. Les exemples ci-dessous seront équivalents.



STANCHION.CONF



configuration.name = value


APP.CONFIG



{stanchion, [
             %% Configs here
            ]}


Configuration de l'adresse IP et du port pour Stanchion



Si vous n'avez qu'un seul nœud Riak CS, vous n'avez pas besoin de modifier les paramètres de Stanchion, car Stanchion écoute simplement les demandes de l'hôte local. Si le cluster Riak CS comporte de nombreux nœuds, vous devez définir l'adresse IP et le port sur lesquels Stanchion écoutera les demandes des autres nœuds.



Vous pouvez définir l'adresse IP à l'aide du paramètre d' écoute . Remplacez 127.0.0.1 par l'adresse IP du nœud Stanchion et le port 8080 par le port du nœud:



STANCHION.CONF



listener = 127.0.0.1:8080


APP.CONFIG



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


Remarque sur la correspondance des adresses IP L'



adresse IP que vous entrez ici doit correspondre à l'adresse IP du paramètre stanchion_host dans riak.conf pour Riak et riak-cs.conf pour Riak CS.


Si vous souhaitez utiliser SSL, assurez-vous que les paramètres ssl.certfile et ssl.keyfile ne sont pas commentés et configurés correctement.



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


Créer un compte administrateur



L'administrateur est créé lors de la configuration du composant Riak CS. Les mêmes autorisations doivent être ajoutées pour chaque Stanchion utilisé dans le cluster. Ceci est configuré dans stanchion.conf, qui se trouve dans le répertoire / etc / stanchion. Entrez les mêmes admin.key et 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
          ]}


Configuration des informations Riak KV



Si vous exécutez un seul nœud pour l'expérimentation, ou si le nœud Riak KV est exécuté localement et configuré pour écouter le trafic de tampon de protocole à 0.0.0.0, le paramètre par défaut devrait être correct.



Sinon, mettez à jour l'adresse IP et le port de l'hôte Riak dans le fichier de configuration Stanchion.



STANCHION.CONF



riak_host = 127.0.0.1:8087


APP.CONFIG



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


Équilibrage de charge et proxy pour Riak CS



image




Si vous prévoyez d'utiliser Riak CS à des fins industrielles, nous vous recommandons vivement d'installer un équilibreur de charge ou un proxy, logiciel ou matériel, après Riak CS. Notez également que vous ne devez pas exposer directement Riak CS à des interfaces réseau ouvertes.



Les utilisateurs de Riak CS signalent avec succès l'utilisation de Riak CS avec un équilibreur de charge ou un proxy. Les solutions communes incluent des équilibreurs de charge matériels propriétaires, des options d'équilibrage de charge basées sur le cloud - telles que Elastic Load Balancer d'Amazon - et des solutions logicielles open source telles que HAProxy et Nginx.



Ce guide passe brièvement en revue la solution de partage de code source HAProxy et Nginx et fournit des conseils de configuration et d'exploitation recueillis auprès de la communauté des utilisateurs et des ingénieurs de Riak.



HAProxy



HAProxy est une solution rapide et fiable pour l'équilibrage de charge et le proxy du trafic des applications HTTP et TCP.



Les utilisateurs signalent une utilisation réussie de HAProxy en combinaison avec Riak CS dans un certain nombre de configurations et de scénarios. Plus d'informations et d'exemples de configuration pour cette section sont destinés aux utilisateurs avancés de la communauté Riak CS, en plus des commentaires des ingénieurs Riak.



Exemple de configuration



L'exemple suivant est le point de départ de la configuration de HAProxy en tant qu'équilibreur de charge pour une installation Riak CS.



Remarque sur les



limites de fichiers ouverts Les limites de fichiers ouverts du système d'exploitation doivent être supérieures à 256 000 pour l'exemple de configuration suivant. Consultez la documentation pour connaître les limites de fichiers ouverts pour la définition détaillée de la valeur pour différents systèmes d'exploitation.


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


Veuillez noter que l'exemple ci-dessus est considéré comme un point de départ et est un travail en cours.


Vous devez être prudent lorsque vous appliquez cette configuration et la modifiez en fonction de votre environnement.

Un détail de configuration spécifique à noter dans l'exemple est l'option commentée pour l'utilisation de SSL. HAProxy prend directement en charge SSL depuis la version 1.5. Assurez-vous que votre instance HAProxy est construite avec la prise en charge d'OpenSSL, vous pouvez activer SSL en décommentant la ligne et en la modifiant pour l'adapter à votre environnement.



Vous pouvez trouver plus d'informations dans la documentation HAProxy .



Faites également attention à l'option de vérification de l'état de Riak CS via le point de terminaison / riak-cs / ping. Ce paramètre est requis pour valider chaque hôte Riak CS dans le cadre de la méthode round robin d'équilibrage de charge.



Nginx



Plusieurs utilisateurs ont signalé avec succès l'utilisation d'un serveur HTTP Nginx pour les requêtes proxy pour Riak CS. Un exemple d'accès à Riak CS est inclus ici pour référence.



Exemple de configuration



Vous trouverez ci-dessous un exemple de configuration initiale pour que Nginx agisse en tant que proxy frontal pour 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;
  }
}


Notez que la directive proxy_set_header Host $ http_host est requise pour garantir que l'en-tête HTTP Host: est passé à Riak CS tel qu'il a été reçu, et non traduit en nom d'hôte ou en adresse du serveur principal de Riak CS.



Il est également important de noter que proxy_pass ne doit pas se terminer par une barre oblique, car cela peut entraîner divers problèmes.



Configuration du client S3



image




Ce tutoriel vous montre comment utiliser s3cmd en tant que client S3. Bien qu'il ne couvre pas toutes les fonctionnalités du client, il vous montrera comment créer une configuration et exécuter certaines commandes de base.

Remarque: Version de signature s3cmd



Si vous utilisez s3cmd version 1.5.0 ou supérieure, vous devez ajouter l'indicateur --signature-v2 pour chaque commande ciblant le cluster Riak CS afin que s3cmd utilise AWS version 2 et non la version AWS 3 par défaut.

La configuration initiale



Pour utiliser s3cmd avec Riak CS, vous devez configurer l'utilitaire pour qu'il s'interface avec votre système Riak CS. Une façon est de créer un fichier .s3cfg et de l'enregistrer dans votre répertoire personnel. Lorsque vous exécutez une commande liée à s3cmd, le contenu du fichier sera lu par défaut. Vous pouvez également spécifier un fichier de configuration à l'aide de l'indicateur -c . Exemple:



SHELL



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


Une autre façon de configurer s3cmd est d'exécuter s3cmd --configure , qui lancera un outil interactif et construira un fichier de configuration basé sur ce que vous entrez.



Dans la section suivante, vous trouverez un petit exemple de fichiers .s3cfg pouvant être utilisés pour configurer la communication avec Riak CS.



Exemple de fichier de configuration s3cmd pour une utilisation locale



Utilisez cet exemple de fichier de configuration .s3cfg pour communiquer avec Riak CS localement sur le port 8080 avec s3cmd (n'oubliez pas d'inclure des informations spécifiques à votre installation Riak CS si nécessaire).



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


Un exemple de fichier de configuration s3cmd à utiliser en production



Utilisez cet exemple de fichier de configuration .s3cfg pour interagir avec Riak CS via s3cmd sur un système de production.



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


Afin de configurer le client s3cmd pour un utilisateur, vous devez modifier les access_key et secret_key.



Configuration de l'emplacement de stockage



Par défaut, le fichier .3cfg utilise le service Amazon S3 comme backend de stockage. Pour un système Riak CS, modifiez les paramètres suivants pour qu'ils pointent vers votre système de stockage.



  • host_base - indiquez un nom de domaine ou un chemin vers votre magasin de données, par exemple data.example.com
  • host_bucket - Spécifiez l'emplacement du bucket, par exemple my_cs_bucket.data.example.com


Utilisation de SSL dans le client



Si vous utilisez SSL, définissez le paramètre use_https sur True .



Liens



Stockage dans le cloud Riak. Partie 1. Configuration de Riak KV

Riak Cloud Storage. Partie 2. Configuration du composant

Riak CS Riak Cloud Storage. Partie 3. Stanchion, Proxy et Load Balancing, Manuel d'origine du client S3

.



All Articles