• 名称
  • 描述
  • 编译安装
  • 配置
  • 指令
    • server
    • type
    • rcs_zone
    • rcs_heartbeat
    • rcs_interface
    • tfs_upstream
    • tfs_pass
    • tfs_keepalive
    • tfs_block_cache_zone
    • tfs_log
    • tfs_body_buffer_size
    • tfs_connect_timeout
    • tfs_send_timeout
    • tfs_read_timeout
    • 其他

    名称

    • nginx-tfs

    描述

    • 这个模块实现了TFS的客户端,为TFS提供了RESTful API。TFS的全称是Taobao File System,是淘宝开源的一个分布式文件系统。

    编译安装

    1. TFS模块使用了一个开源的JSON库来支持JSON,请先安装yajl-2.0.1。

    2. 下载nginx或tengine。

    3. ./configure —add-module=/path/to/nginx-tfs

    4. make && make install

    配置

    1. http {
    2. tfs_upstream tfs_rc {
    3. server 127.0.0.1:6100;
    4. type rcs;
    5. rcs_zone name=tfs1 size=128M;
    6. rcs_interface eth0;
    7. rcs_heartbeat lock_file=/logs/lk.file interval=10s;
    8. }
    9. server {
    10. listen 7500;
    11. server_name localhost;
    12. tfs_keepalive max_cached=100 bucket_count=10;
    13. tfs_log "pipe:/usr/sbin/cronolog -p 30min /path/to/nginx/logs/cronolog/%Y/%m/%Y-%m-%d-%H-%M-tfs_access.log";
    14. location / {
    15. tfs_pass tfs://tfs_rc;
    16. }
    17. }
    18. }

    指令

    server

    Syntaxserver address

    Defaultnone

    Contexttfs_upstream

    指定后端TFS服务器的地址,当指令typercs时为RcServer的地址,如果为为ns时为NameServer的地址。此指令必须配置。例如:

    1. server 10.0.0.1:8108;

    type

    Syntaxtype [ns | rcs]

    Defaultns

    Contexttfs_upstream

    设置server类型,类型只能为ns或者rcs,如果为ns,则指令server指定的地址为NameServer的地址,如果为rcs,则为RcServer的地址。如需使用自定义文件名功能请设置类型为rcs,使用自定义文件名功能需额外配置MetaServer和RootServer。

    rcs_zone

    Syntaxrcs_zone name=n size=num

    Defaultnone

    Contexttfs_upstream

    配置TFS应用在RcServer的配置信息。若开启RcServer(配置了type rcs),则必须配置此指令。配置此指令会在共享内存中缓存TFS应用在RcServer的配置信息,并可以通过指令rcs_heartbeat来和RcServer进行keepalive以保证应用的配置信息的及时更新。例如:

    1. rcs_zone name=tfs1 size=128M;

    rcs_heartbeat

    Syntaxrcs_heartbeat lock_file=/path/to/file interval=time

    Defaultnone

    Contexttfs_upstream

    配置TFS应用和RcServer的keepalive,应用可通过此功能来和RcServer定期交互,以及时更新其配置信息。若开启RcServer功能(配置了type rcs),则必须配置此指令。例如:

    1. rcs_heartbeat lock_file=/path/to/nginx/logs/lk.file interval=10s;

    rcs_interface

    Syntaxrcs_interface interface

    Defaultnone

    Contexttfs_upstream

    配置TFS模块使用的网卡。若开启RcServer功能(配置了type rcs),则必须配置此指令。例如:

    1. rcs_interface eth0;

    tfs_upstream

    Syntaxtfs_upstream name {…}

    Defaultnone

    Contexthttp

    配置TFS模块的server信息,这个块包括上面几个命令。例如:

    1. tfs_upstream tfs_rc {
    2. server 127.0.0.1:6100;
    3. type rcs;
    4. rcs_zone name=tfs1 size=128M;
    5. rcs_interface eth0;
    6. rcs_heartbeat lock_file=/logs/lk.file interval=10s;
    7. }

    tfs_pass

    Syntaxtfs_pass name

    Defaultnone

    Contextlocation

    是否打开TFS模块功能,此指令为关键指令,决定请求是否由TFS模块处理,必须配置。需要注意,这里不支持直接写ip地址或者域名,这里只支持指令tfs_upstream name {…} 配置的upstream,并且必须以 tfs:// 开头。例如:

    1. tfs_upstream tfs_rc {
    2. };
    3. location / {
    4. tfs_pass tfs://tfs_rc;
    5. }

    tfs_keepalive

    Syntaxtfs_keepalive max_cached=num bucket_count=num

    Defaultnone

    Contexthttp, server

    配置TFS模块使用的连接池的大小,TFS模块的连接池会缓存TFS模块和后端TFS服务器的连接。可以把这个连接池看作由多个hash桶构成的hash表,其中bucket_count是桶的个数,max_cached是桶的容量。此指令必须配置。注意,应该根据机器的内存情况来合理配置连接池的大小。例如:

    1. tfs_keepalive max_cached=100 bucket_count=15;

    tfs_block_cache_zone

    Syntaxtfs_block_cache_zone size=num

    Defaultnone

    Contexthttp

    配置TFS模块的本地BlockCache。配置此指令会在共享内存中缓存TFS中的Block和DataServer的映射关系。注意,应根据机器的内存情况来合理配置BlockCache大小。例如:

    1. tfs_block_cache_zone size=256M;

    tfs_log

    Syntaxtfs_log path

    Defaultnone

    Contexthttp, server

    是否进行TFS访问记录。配置此指令会以固定格式将访问TFS的请求记录到指定log中,以便进行分析。具体格式参见代码。例如:

    1. tfs_log "pipe:/usr/sbin/cronolog -p 30min /path/to/nginx/logs/cronolog/%Y/%m/%Y-%m-%d-%H-%M-tfs_access.log";

    注:cronolog支持依赖于tengine提供的扩展的日志模块。

    tfs_body_buffer_size

    Syntaxtfs_body_buffer_size size

    Default8k|16k

    Contexthttp, server, location

    配置用于和后端TFS服务器交互时使用的的body_buffer的大小。默认为页大小的2倍。建议设为2m。例如:

    1. tfs_body_buffer_size 2m;

    tfs_connect_timeout

    Syntaxtfs_connect_timeout time

    Default3s

    Contexthttp, server, location

    配置连接后端TFS服务器的超时时间。

    tfs_send_timeout

    Syntaxtfs_send_timeout time

    Default3s

    Contexthttp, server, location

    配置向后端TFS服务器发送数据的超时时间。

    tfs_read_timeout

    Syntaxtfs_read_timeout time

    Default3s

    Contexthttp, server, location

    配置从后端TFS服务器接收数据的超时时间。

    其他

    能支持上传文件大小决定于client_max_body_size指令配置的大小。

    原文: https://github.com/alibaba/nginx-tfs/blob/master/ReadMe.markdown