Riak Cloud Storage. Teil 3. Stütze, Proxy und Lastausgleich, S3-Client

Bild


In diesem Artikel werden wir die Konfiguration der Komponenten des Riak Cloud Storage-Systems abschließen.



Dieser Artikel ist die Vervollständigung einer Reihe kostenloser Übersetzungen des offiziellen Handbuchs für das Riak CS 2.1.1-System.

Teil 1. Riak KV einrichten

Teil 2. Riak CS-Komponente einrichten



Stütze einrichten



Sie sollten einen und nur einen Rungenknoten in Ihrem Cluster verwenden. Alle Riak CS-Knoten in diesem Cluster müssen für die Kommunikation mit dem Stanchion-Knoten konfiguriert sein, damit der Cluster kausale Vorgänge überwachen und abgleichen kann.



Alle vom Stanchion-Knoten verwendeten Einstellungen sind in der Datei stanchion.conf enthalten, die sich auf den meisten Betriebssystemen im Verzeichnis / etc / stanchion befindet.



Wenn Sie ein Upgrade von einer früheren Version als Riak CS 2.0.0 durchführen - als stanchion.conf und riak-cs.conf eingeführt wurden -, können Sie weiterhin die alte Konfigurationsdatei app.config verwenden. Die folgenden Beispiele sind gleichwertig.



STANCHION.CONF



configuration.name = value


APP.CONFIG



{stanchion, [
             %% Configs here
            ]}


IP-Adresse und Port für Stanchion konfigurieren



Wenn Sie nur einen Riak CS-Knoten haben, müssen Sie die Stanchion-Einstellungen nicht ändern, da Stanchion nur auf Anforderungen vom lokalen Host wartet. Wenn der Riak CS-Cluster viele Knoten hat, müssen Sie die IP-Adresse und den Port festlegen, an dem Stanchion auf Anforderungen von anderen Knoten wartet.



Sie können die IP-Adresse mit dem Listener- Parameter einstellen . Ersetzen Sie 127.0.0.1 durch die IP-Adresse des Stanchion-Knotens und Port 8080 durch den Knoten-Port:



STANCHION.CONF



listener = 127.0.0.1:8080


APP.CONFIG



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


Hinweis zum Abgleichen von IP-Adressen Die



hier eingegebene IP-Adresse muss mit der IP-Adresse im Parameter stanchion_host in der riak.conf für Riak und der riak-cs.conf für Riak CS übereinstimmen.


Wenn Sie SSL verwenden möchten, stellen Sie sicher, dass die Parameter ssl.certfile und ssl.keyfile nicht auskommentiert und korrekt konfiguriert sind.



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


Einrichten eines Administratorkontos



Der Administrator wird beim Konfigurieren der Riak CS-Komponente erstellt. Für jede im Cluster verwendete Stütze müssen dieselben Berechtigungen hinzugefügt werden. Dies wird in der Datei stanchion.conf konfiguriert, die sich im Verzeichnis / etc / stanchion befindet. Geben Sie denselben admin.key und denselben admin.secret STANCHION.CONF



ein



admin.key = OUCXMB6I3HOZ6D0GWO2D
admin.secret = a58Mqd3qN-SqCoFIta58Mqd3qN7umE2hnunGag==


APP.CONFIG



{stanchion, [
           %% Admin user credentials
           {admin_key, "OUCXMB6I3HOZ6D0GWO2D"},
           {admin_secret, "a58Mqd3qN-SqCoFIta58Mqd3qN7umE2hnunGag=="},
           %% Other configs
          ]}


Riak KV-Informationen einrichten



Wenn Sie einen einzelnen Knoten zum Experimentieren ausführen oder wenn der Riak KV-Knoten lokal ausgeführt wird und so konfiguriert ist, dass er auf Protokollpufferverkehr mit 0.0.0.0 wartet, sollte die Standardeinstellung in Ordnung sein.



Andernfalls aktualisieren Sie die IP-Adresse und den Port für den Riak-Host in der Stanchion-Konfigurationsdatei.



STANCHION.CONF



riak_host = 127.0.0.1:8087


APP.CONFIG



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


Lastausgleich und Proxy für Riak CS



Bild




Wenn Sie Riak CS im industriellen Einsatz verwenden möchten, empfehlen wir dringend, nach Riak CS einen Load Balancer oder Proxy, Software oder Hardware zu installieren. Beachten Sie auch, dass Sie Riak CS nicht direkt offenen Netzwerkschnittstellen aussetzen dürfen.



Riak CS-Benutzer berichten über die erfolgreiche Verwendung von Riak CS mit einem Load Balancer oder Proxy. Zu den kollaborativen Lösungen gehören proprietäre Hardware-Load-Balancer, Cloud-basierte Load-Balancer-Optionen wie Amazon Elastic Load Balancer und Open-Source-Softwarelösungen wie HAProxy und Nginx.



In diesem Handbuch wird kurz auf die Lösung für die gemeinsame Nutzung von HAProxy- und Nginx-Quellcode eingegangen und es werden einige Konfigurations- und Betriebsempfehlungen von Riak-Benutzern und Ingenieuren gegeben.



HAProxy



HAProxy ist eine schnelle und zuverlässige Lösung für den Lastausgleich und das Proxying von HTTP- und TCP-Anwendungsverkehr.



Benutzer berichten über die erfolgreiche Verwendung von HAProxy in Kombination mit Riak CS in einer Reihe von Konfigurationen und Szenarien. Weitere Informationen und Konfigurationsbeispiele für diesen Abschnitt richten sich neben Kommentaren von Riak-Ingenieuren an fortgeschrittene Benutzer in der Riak CS-Community.



Konfigurationsbeispiel



Das folgende Beispiel ist der Ausgangspunkt für die Konfiguration von HAProxy als Load Balancer für eine Riak CS-Installation.



Hinweis zu



Grenzwerten für offene Dateien Das Limit für offene Dateien des Betriebssystems muss für das folgende Konfigurationsbeispiel größer als 256.000 sein. In der Dokumentation finden Sie Informationen zu Grenzwerten für geöffnete Dateien, um den Wert für verschiedene Betriebssysteme detailliert festzulegen.


KONFIG



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


Bitte beachten Sie, dass das obige Beispiel als Ausgangspunkt betrachtet wird und noch in Arbeit ist.


Sie müssen vorsichtig sein, wenn Sie diese Konfiguration anwenden und an Ihre Umgebung anpassen.

Ein spezielles Konfigurationsdetail aus dem Beispiel ist die auskommentierte Option für die Verwendung von SSL. HAProxy unterstützt SSL direkt seit Version 1.5. Stellen Sie sicher, dass Ihre HAProxy-Instanz mit OpenSSL-Unterstützung erstellt wurde. Sie können SSL aktivieren, indem Sie die Zeile auskommentieren und an Ihre Umgebung anpassen.



Weitere Informationen finden Sie in der HAProxy-Dokumentation .



Beachten Sie auch die Option Riak CS Health Check über den Endpunkt / riak-cs / ping. Dieser Parameter ist erforderlich, um jeden Riak CS-Host im Rahmen der Round-Robin-Methode für den Lastausgleich zu validieren.



Nginx



Mehrere Benutzer haben gemeldet, dass sie einen Nginx-HTTP-Server erfolgreich für Proxy-Anforderungen für Riak CS verwenden. Ein Beispiel für den Zugriff auf Riak CS finden Sie hier als Referenz.



Konfigurationsbeispiel



Nachfolgend finden Sie ein Beispiel für die Erstkonfiguration von Nginx als Front-End-Proxy für Riak CS.



KONFIG



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


Beachten Sie, dass die Anweisung proxy_set_header Host $ http_host erforderlich ist , um sicherzustellen, dass der HTTP-Host: -Header wie empfangen an Riak CS übergeben und nicht in den Hostnamen oder die Adresse des Riak CS-Backend-Servers übersetzt wird.



Es ist auch wichtig zu beachten, dass proxy_pass nicht mit einem Schrägstrich enden sollte, da dies zu verschiedenen Problemen führen kann.



S3-Client-Setup



Bild




Dieses Tutorial zeigt Ihnen, wie Sie s3cmd als S3-Client verwenden. Es werden zwar nicht alle Funktionen des Clients behandelt, es zeigt Ihnen jedoch, wie Sie eine Konfiguration erstellen und einige grundlegende Befehle ausführen.

Hinweis: s3cmd-Signaturversion



Wenn Sie s3cmd Version 1.5.0 oder höher verwenden, müssen Sie für jeden Befehl, der auf den Riak CS-Cluster abzielt, das Flag --signature-v2 hinzufügen, damit s3cmd AWS Version 2 und nicht die Standardversion von AWS 3 verwendet.

Ersteinrichtung



Um s3cmd in Verbindung mit Riak CS verwenden zu können, müssen Sie das Dienstprogramm für die Schnittstelle mit Ihrem Riak CS-System konfigurieren. Eine Möglichkeit besteht darin, eine .s3cfg- Datei zu erstellen und in Ihrem Home-Verzeichnis zu speichern. Wenn Sie einen Befehl für s3cmd ausführen, wird der Inhalt der Datei standardmäßig gelesen. Alternativ können Sie eine Konfigurationsdatei mit dem Flag -c angeben . Beispiel:



SHELL



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


Eine alternative Möglichkeit zum Konfigurieren von s3cmd besteht darin, s3cmd --configure auszuführen. Dadurch wird ein interaktives Tool gestartet und eine Konfigurationsdatei basierend auf Ihren Eingaben erstellt .



Im nächsten Abschnitt finden Sie ein kleines Beispiel für .s3cfg-Dateien, mit denen die Kommunikation mit Riak CS konfiguriert werden kann.



Beispiel einer s3cmd-Konfigurationsdatei für die lokale Verwendung



Verwenden Sie diese .s3cfg- Konfigurationsdatei für die lokale Kommunikation mit Riak CS über Port 8080 mit s3cmd (denken Sie bei Bedarf daran, spezifische Informationen für Ihre Riak CS-Installation anzugeben).



KONFIG



[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


Beispiel für eine s3cmd-Konfigurationsdatei zur Verwendung in der Produktion



Verwenden Sie diese .s3cfg-Konfigurationsdatei, um über s3cmd auf einem Produktionssystem mit Riak CS zu interagieren.



KONFIG



[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


Um den s3cmd-Client für einen Benutzer zu konfigurieren, müssen Sie den access_key und den secret_key ändern.



Speicherort konfigurieren



Standardmäßig verwendet die .3cfg-Datei den Amazon S3-Dienst als Speicher-Backend. Ändern Sie für ein Riak CS-System die folgenden Einstellungen, um auf Ihr Speichersystem zu verweisen.



  • host_base - Geben Sie einen Domainnamen oder Pfad zu Ihrem Datenspeicher an, z. B. data.example.com
  • host_bucket - Geben Sie den Speicherort des Buckets an, z. B. my_cs_bucket.data.example.com


Verwenden von SSL im Client



Wenn Sie SSL verwenden, setzen Sie den Parameter use_https auf True .



Links



Riak Cloud Storage. Teil 1. Konfigurieren des Riak KV

Riak Cloud-Speichers. Teil 2. Konfigurieren der Riak CS

Riak Cloud Storage- Komponente . Teil 3. Stütze, Proxy und Lastausgleich, S3 Client

Originalhandbuch.



All Articles