Riak云存储。第3部分。S3客户端的固定,代理和负载平衡

图片


在本文中,我们将完成Riak Cloud Storage系统组件的配置。



本文是Riak CS 2.1.1系统官方手册的一系列免费翻译的完成。

第1部分。设置Riak KV

第2部分。设置Riak CS组件



设置支柱



您应该在集群中使用一个并且只有一个Stanchion节点。必须将该群集中的所有Riak CS节点配置为与Stanchion节点进行通信,以便群集可以跟踪和协调因果关系操作。



Stanchion节点使用的所有设置都包含在stanchion.conf文件中,该文件位于大多数操作系统的/ etc / stanchion目录中。



如果要从Riak CS 2.0.0之前的版本升级-引入stanchion.conf和riak-cs.conf时-您仍然可以使用旧的app.config配置文件。下面的示例将是等效的。



STANCHION.CONF



configuration.name = value


应用程序配置



{stanchion, [
             %% Configs here
            ]}


配置要配置的IP地址和端口



如果只有一个Riak CS节点,则无需更改Stanchion设置,因为Stanchion只是侦听来自本地主机的请求。如果Riak CS群集有许多节点,则必须设置Stanchion将在其上侦听来自其他节点的请求的IP地址和端口。



您可以使用listener参数设置IP地址将127.0.0.1替换为Stanchion节点的IP地址,并将端口8080替换为节点端口:



STANCHION.CONF



listener = 127.0.0.1:8080


应用程序配置



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


有关匹配IP地址的说明在



Riak CS和riak CS.conf中,您在此处输入的IP地址必须与riak.conf中stanchion_host参数中的IP地址匹配。


如果要使用SSL,请确保未对ssl.certfile和ssl.keyfile参数进行注释和正确配置。



STANCHION.CONF



ssl.certfile = "./etc/cert.pem"
ssl.keyfile = "./etc/key.pem"


应用程序配置



{stanchion, [
             {ssl, [
                    {certfile, "./etc/cert.pem"},
                    {keyfile, "./etc/key.pem"}
                   ]},
             %% Other configs
            ]}


设置管理员帐户



配置Riak CS组件时将创建管理员。必须为集群中使用的每个Stanchion添加相同的权限。这是在stanchion.conf中配置的,该文件位于/ etc / stanchion目录中。输入相同的admin.key和admin.secret



STANCHION.CONF



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


应用程序配置



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


设置Riak KV信息



如果您正在运行单个节点进行实验,或者Riak KV节点正在本地运行并配置为侦听协议缓冲区流量为0.0.0.0,则默认设置应该很好。



否则,请在Stanchion配置文件中更新Riak主机的IP地址和端口。



STANCHION.CONF



riak_host = 127.0.0.1:8087


应用程序配置



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


Riak CS的负载平衡和代理



图片




如果计划在工业用途中使用Riak CS,则强烈建议您在Riak CS之后安装负载平衡器或代理,软件或硬件。另请注意,您不得直接将Riak CS暴露给开放的网络接口。



Riak CS用户成功报告了将Riak CS与负载平衡器或代理一起使用。联合解决方案包括专有的硬件负载平衡器,基于云的负载平衡器选项(例如Amazon的Elastic Load Balancer)以及开源软件解决方案(例如HAProxy和Nginx)。



本指南简要回顾了HAProxy和Nginx源代码共享解决方案,并提供了从Riak用户和工程社区收集的一些配置和操作建议。



HAProxy



HAProxy是用于负载平衡以及代理HTTP和TCP应用程序流量的快速可靠的解决方案。



用户报告在许多配置和方案中成功将HAProxy与Riak CS结合使用。除了Riak工程师的意见,此部分的更多信息和配置示例适用于Riak CS社区的高级用户。



配置示例



以下示例是将HAProxy配置为Riak CS安装的负载平衡器的起点。



关于打开文件



限制的说明对于以下配置示例,操作系统打开文件的限制必须大于256,000。查看文档中打开文件的限制,以获取有关不同操作系统的值的详细设置。


配置



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


请注意,以上示例被视为起点,并且仍在进行中。


在应用此配置并对其进行修改以适合您的环境时,您必须小心。

该示例中值得注意的一个具体配置细节是使用SSL的注释选项。从1.5版开始,HAProxy直接支持SSL。确保您的HAProxy实例内置OpenSSL支持,您可以通过取消注释该行并对其进行修改以适合您的环境来激活SSL。



您可以在HAProxy文档中找到更多信息



另外,请通过/ riak-cs / ping端点注意Riak CS运行状况检查选项。作为负载平衡循环方法的一部分,需要使用此参数来验证每个Riak CS主机。



Nginx的



一些用户报告成功使用Nginx HTTP服务器代理Riak CS的请求。这里提供了一个提供对Riak CS的访问权限的示例,以供参考。



配置示例



以下是Nginx用作Riak CS的前端代理的初始配置示例。



配置



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


请注意,必须使用proxy_set_header Host $ http_host指令来确保HTTP Host:标头按接收到的方式传递给Riak CS,并且不会转换为Riak CS后端服务器的主机名或地址。



同样重要的是要注意proxy_pass不能以正斜杠结尾,因为这可能导致各种问题。



S3客户端设置



图片




本教程向您展示如何将s3cmd用作S3客户端。尽管它不会涵盖客户端的所有功能,但它将向您展示如何创建配置和运行一些基本命令。

注意:s3cmd签名版本



如果您使用的是s3cmd 1.5.0或更高版本,则需要为每个针对Riak CS集群的命令添加--signature-v2标志,以便s3cmd使用AWS 2版本,而不是默认的AWS 3版本。

初始设置



要将s3cmd与Riak CS结合使用,必须将实用程序配置为与Riak CS系统进行交互。一种方法是创建一个.s3cfg文件并将其保存在主目录中。当您运行与s3cmd相关的任何命令时,默认情况下将读取文件的内容。或者,您可以使用-c标志指定配置文件示例:



SHELL



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


配置s3cmd的另一种方法是运行s3cmd --configure,这将启动一个交互式工具并根据您输入的内容构建配置文件。



在下一部分中,您将找到一个.s3cfg文件的小示例,该文件可用于配置与Riak CS的通信。



本地使用的示例s3cmd配置文件



使用此示例.s3cfg配置文件可通过s3cmd在端口8080上与Riak CS进行本地通信(请记住,必要时包括特定于Riak CS安装的信息)。



配置



[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


样本s3cmd配置文件用于生产



使用此示例.s3cfg配置文件,通过生产系统上的s3cmd与Riak CS进行交互。



配置



[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


为了为用户配置s3cmd客户端,必须更改access_key和secret_key。



配置存储位置



默认情况下,.3cfg文件使用Amazon S3服务作为存储后端。对于Riak CS系统,更改以下设置以指向您的存储系统。



  • host_base-提供域名或数据存储路径,例如data.example.com
  • host_bucket-指定存储桶的位置,例如my_cs_bucket.data.example.com


在客户端中使用SSL



如果使用SSL,则将use_https参数设置True



链接



Riak云存储。第1部分。配置Riak KV

Riak云存储。第2部分。配置Riak CS

Riak云存储组件第3部分。固定,代理和负载平衡,S3客户端

原始手册。



All Articles