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
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
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
.