FastDFS 集群的安装、配置、使用

FastDFS 集群的安装、配置、使用

FastDFS 介绍(参考:http://www.oschina.net/p/fastdfs

FastDFS 是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件

访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。

FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS 同时对文件的 meta data 进行管理。所谓文件的 meta data 就是文件的相关属性,以键值对(key value pair)方式表示,如:width=1024,其中的 key 为 width,value 为 1024。文件 meta data 是文件属性列表,可以包含多个键值对。FastDFS 系统结构如下图所示:

跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下

线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或

减少。

为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷

组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷

可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器

起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,

系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增

加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。FastDFS 中的文件标识

分为两个部分:卷名和文件名,二者缺一不可。

FastDFS 上传文件交互过程:

1. client 询问 tracker 上传到的 storage,不需要附加参数;

2. tracker 返回一台可用的 storage;

3. client 直接和 storage 通讯完成文件上传。

客户端 client 发起对 FastDFS 的文件传输动作,是通过连接到某一台 Tracker Server 的指定端

口来实现的,Tracker Server 根据目前已掌握的信息,来决定选择哪一台 Storage Server ,然后将这个

Storage Server 的地址等信息返回给 client,然后 client 再通过这些信息连接到这台 Storage Server,

将要上传的文件传送到给 Storage Server 上。

FastDFS 下载文件交互过程:

1. client 询问 tracker 下载文件的 storage,参数为文件标识(卷名和文件名);

2. tracker 返回一台可用的 storage;

3. client 直接和 storage 通讯完成文件下载。

FastDFS 集群规划:

跟踪服务器 1:192.168.1.131   edu-dfs-tracker-1

跟踪服务器 2:192.168.1.132   edu-dfs-tracker-2

存储服务器 1:192.168.1.135   edu-dfs-storage-group1-1

存储服务器 2:192.168.1.136   edu-dfs-storage-group1-2

存储服务器 3:192.168.1.137   edu-dfs-storage-group2-1

存储服务器 4:192.168.1.138   edu-dfs-storage-group2-2

环境:CentOS 6.8

用户:root

数据目录:/fastdfs (注:数据目录按你的数据盘挂载路径而定)

安装包:

FastDFS_v5.05.tar.gz

libfastcommon-master.zip(是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库)

fastdfs-nginx-module_v1.16.tar.gz

nginx-1.6.2.tar.gz

fastdfs_client_java._v1.25.tar.gz

源码地址:https://github.com/happyfish100/

下载地址:http://sourceforge.net/projects/fastdfs/files/

官方论坛:http://bbs.chinaunix.net/forum-240-1.html

Group 1

Tracker 1 ( FastDFS + Nginx )

Tracker 2 ( FastDFS + Nginx )

Proxy 1 ( Keepalived + Nginx )

FastDFS集群

Proxy 2 ( Keepalived + Nginx )

VIP

Storage 1 ( FastDFS + Nginx )

Storage 2 ( FastDFS + Nginx )

Storage 3 ( FastDFS + Nginx )

Storage 4 ( FastDFS + Nginx )

Group 2

本教程的 FastDFS 文件系统集群的最终结构图

一、FastDFS 的安装(所有跟踪服务器和存储服务器均执行如下操作)

1、编译和安装所需的依赖包:

yum install make cmake gcc gcc-c++

2、安装 libfastcommon (https://github.com/happyfish100/libfastcommon

(1)上传或下载 libfastcommon-master.zip 到/usr/local/src 目录,解压

cd /usr/local/src/ 
unzip libfastcommon-master.zip 
cd libfastcommon-master

(3) 编译、安装

./make.sh 
./make.sh install

libfastcommon 默认安装到了

/usr/lib64/libfastcommon.so

/usr/lib64/libfdfsclient.so

(4)因为 FastDFS 主程序设置的 lib 目录是/usr/local/lib,所以需要创建软链接.

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so 
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so 
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so 
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

3、安装 FastDFS (https://github.com/happyfish100/fastdfs/releases

(1)上传或下载 FastDFS 源码包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目录,解压

cd /usr/local/src/ 
tar -zxvf FastDFS_v5.05.tar.gz 
cd FastDFS

(3)编译、安装(编译前要确保已经成功安装了 libfastcommon)

./make.sh 
./make.sh install

采用默认安装的方式安装,安装后的相应文件与目录:

A、服务脚本在:

/etc/init.d/fdfs_storaged

/etc/init.d/fdfs_tracker

B、配置文件在(样例配置文件):

/etc/fdfs/client.conf.sample

/etc/fdfs/storage.conf.sample

/etc/fdfs/tracker.conf.sample

C、命令工具在/usr/bin/目录下的:

fdfs_appender_test

fdfs_appender_test1

fdfs_append_file

fdfs_crc32

fdfs_delete_file

fdfs_download_file

fdfs_file_info

fdfs_monitor

fdfs_storaged

fdfs_test

fdfs_test1

fdfs_trackerd

fdfs_upload_appender

fdfs_upload_file

stop.sh

restart.sh

(4)因为 FastDFS 服务脚本设置的 bin 目录是/usr/local/bin,但实际命令安装在/usr/bin,可以进入 /user/bin 目录使用以下命令查看 fdfs 的相关命令:

cd /usr/bin/
ls | grep fdfs

因此需要修改 FastDFS 服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged

和/etc/init.d/fdfs_tracker 两个脚本中的/usr/local/bin 修改成/usr/bin:

vi /etc/init.d/fdfs_trackerd

使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin

vi /etc/init.d/fdfs_storaged

使用查找替换命令进统一修改:%s+/usr/local/bin+/usr/bin

注意:以上操作无论是配置 tracker 还是配置 storage 都是必须的,而 tracker 和 storage 的区别主要是在安装完 fastdfs 之后的配置过程中。

二、配置 FastDFS 跟踪器 Tracker (192.168.1.131 、192.168.1.132) 1、 复制 FastDFS 跟踪器样例配置文件,并重命名:

cd /etc/fdfs/  
cp tracker.conf.sample tracker.conf

2、 编辑跟踪器配置文件: # /etc/fdfs/tracker.conf

修改的内容如下:

vi /etc/fdfs/tracker.conf 
disabled=false              #启用配置文件 
port=22122                  #tracker 的端口号,一般采用 22122 这个默认端口 
base_path=/fastdfs/tracker  #tracker 的数据文件和日志目录

(其它参数保留默认配置,具体配置解释请参考官方文档说明:http://bbs.chinaunix.net/thread

1941456-1-1.html )

3、 创建基础数据目录(参考基础目录 base_path 配置):

mkdir -p /fastdfs/tracker

4、 防火墙中打开跟踪器端口(默认为 22122):

vi /etc/sysconfig/iptables 
## FastDFS Tracker Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

重启防火墙:

service iptables restart

5、 启动 Tracker:

/etc/init.d/fdfs_trackerd start

(初次成功启动,会在/fastdfs/tracker 目录下创建 data、logs 两个目录)可以通过以下两个方法查

看 tracker 是否启动成功:

(1)查看 22122 端口监听情况:netstat -unltp|grep fdfs

(2)通过以下命令查看 tracker 的启动日志,看是否有错误

tail -100f  /fastdfs/tracker/logs/trackerd.log

6、 关闭 Tracker:

/etc/init.d/fdfs_trackerd stop

7、 设置 FastDFS 跟踪器开机启动:

vi /etc/rc.d/rc.local
## FastDFS Tracker 
/etc/init.d/fdfs_trackerd start

三、配置 FastDFS 存储 ( 192.168.1.135 、192.168.1.136 、192.168.1.137 、192.168.1.138 ) 1、 复制 FastDFS 存储器样例配置文件,并重命名: # cd /etc/fdfs/

cp storage.conf.sample storage.conf

2、 编辑存储器样例配置文件(以 group1 中的 storage 节点的 storage.conf 为例) :

vi /etc/fdfs/storage.conf
disabled=false           #启用配置文件 
group_name=group1        #组名(第一组为 group1,第二组为 group2) 
port=23000               #storage 的端口号,同一个组的 storage 端口号必须相同 
base_path=/fastdfs/storage   #设置 storage 的日志目录 
store_path0=/fastdfs/storage #存储路径 
store_path_count=1           #存储路径个数,需要和 store_path 个数匹配 
tracker_server=192.168.1.131:22122 #tracker 服务器的 IP 地址和端口 
tracker_server=192.168.1.132:22122 #多个 tracker 直接添加多条配置 
http.server_port=8888              #设置 http 端口号

(其它参数保留默认配置,具体配置解释请参考官方文档说明:

http://bbs.chinaunix.net/thread-1941456-1-1.html )

3、 创建基础数据目录(参考基础目录 base_path 配置):

mkdir -p /fastdfs/storage

4、 防火墙中打开存储器端口(默认为 23000):

vi /etc/sysconfig/iptables

添加如下端口行:

## FastDFS Storage Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

重启防火墙:

service iptables restart

5、 启动 Storage:

/etc/init.d/fdfs_storaged start

(初次成功启动,会在/fastdfs/storage 目录下创建数据目录 data 和日志目录 logs)

各节点启动动,使用 tail -f /fastdfs/storage/logs/storaged.log 命令监听存储节点日志,可以

看到存储节点链接到跟踪器,并提示哪一个为 leader 跟踪器。同时也会看到同一组中的其他节点加入

进来的日志信息。

查看 23000 端口监听情况:netstat -unltp|grep fdfs

所有 Storage 节点都启动之后,可以在任一 Storage 节点上使用如下命令查看集群信息:

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

可以看到存储节点状态为 ACTIVE 则可

6、 关闭 Storage:

/etc/init.d/fdfs_storaged stop

7、 设置 FastDFS 存储器开机启动:

vi /etc/rc.d/rc.local

添加:

## FastDFS Storage 
/etc/init.d/fdfs_storaged start

四、文件上传测试 ( 192.168.1.131 )

1、修改 Tracker 服务器中的客户端配置文件:

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker 
tracker_server=192.168.1.131:22122 
tracker_server=192.168.1.132:22122

2、执行如下文件上传命令:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz

返回 ID 号:

group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

(能返回以上文件 ID,说明文件上传成功)

六、在各存储节点(192.168.1.135、192.168.1.136、192.168.1.137、192.168.1.138)上安装 Nginx

1、fastdfs-nginx-module 作用说明

FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入

文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.1.135,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.1.136,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.1.136 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的 fastdfs-nginx-module 在 nginx 安装时使用)

2、上传 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src,解压

cd /usr/local/src/ 
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

3、修改 fastdfs-nginx-module 的 config 配置文件

vi /usr/local/src/fastdfs-nginx-module/src/config

CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

修改为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

(注意:这个路径修改是很重要的,不然在 nginx 编译的时候会报错的)

4、上传当前的稳定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目录

5、安装编译 Nginx 所需的依赖包

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

6、编译安装 Nginx(添加 fastdfs-nginx-module 模块)

cd /usr/local/src/ 
tar -zxvf nginx-1.6.2.tar.gz 
cd nginx-1.6.2 
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src 
make && make install

7、复制 fastdfs-nginx-module 源码中的配置文件到/etc/fdfs 目录,并修改

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

(1)第一组 Storage 的 mod_fastdfs.conf 配置如下:

connect_timeout=10

base_path=/tmp

tracker_server=192.168.1.131:22122

tracker_server=192.168.1.132:22122

storage_server_port=23000

group_name=group1

url_have_group_name = true

store_path0=/fastdfs/storage

group_count = 2

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage

(2)第一组 Storage 的 mod_fastdfs.conf 配置与第一组配置只有 group_name 不同:

group_name=group2

8、复制 FastDFS 的部分配置文件到/etc/fdfs 目录

cd /usr/local/src/FastDFS/conf 
cp http.conf mime.types /etc/fdfs/

9、在/fastdfs/storage 文件存储目录下创建软连接,将其链接到实际存放数据的目录

ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

10、配置 Nginx,简洁版 nginx 配置样例:

vi /usr/local/nginx/conf/nginx.conf
user  root; 
worker_processes  1; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen       8888; 
        server_name  localhost; 
        location ~/group([0-9])/M00 { 
            #alias /fastdfs/storage/data; 
            ngx_fastdfs_module; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 
}

注意、说明:

A、8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应,

因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。

B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx,

对应的 Nginx 配置为:

location ~/group([0-9])/M00 {

ngx_fastdfs_module;

}

C、如查下载时如发现老报 404,将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。

11、防火墙中打开 Nginx 的 8888 端口

vi /etc/sysconfig/iptables

添加:

## Nginx Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

重启防火墙:

service iptables restart

12、启动 Nginx

/usr/local/nginx/sbin/nginx

ngx_http_fastdfs_set pid=xxx

(重启 Nginx 的命令为:/usr/local/nginx/sbin/nginx -s reload)

设置 Nginx 开机启动

vi /etc/rc.local
/usr/local/nginx/sbin/nginx  #添加

13、通过浏览器访问测试时上传的文件

http://192.168.1.135:8888/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

http://192.168.1.137:8888/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

七、在跟踪器节点(192.168.1.131、192.168.1.132)上安装 Nginx

1、在 tracker 上安装的 nginx 主要为了提供 http 访问的反向代理、负载均衡以及缓存服务。

2、安装编译 Nginx 所需的依赖包

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel 
openssl openssl-devel

3、上传 ngx_cache_purge-2.3.tar.gz 到/usr/local/src,解压

cd /usr/local/src/ 
tar -zxvf ngx_cache_purge-2.3.tar.gz

4、上传当前的稳定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目录

5、编译安装 Nginx(添加 ngx_cache_purge 模块)

cd /usr/local/src/ 
tar -zxvf nginx-1.6.2.tar.gz 
cd nginx-1.6.2 
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3 
make && make install

6、配置 Nginx,设置负载均衡以及缓存

vi /usr/local/nginx/conf/nginx.conf
upstream fdfs_group1 { 
server 192.168.1.135:8888 weight=1 max_fails=2 fail_timeout=user  root; 
worker_processes  1;  
#error_log  logs/error.log; 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info;  
#pid        logs/nginx.pid;  
events { 
worker_connections  1024; 
use epoll; 
}  
http { 
    include       mime.types; 
    default_type  application/octet-stream;  
    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘ 
    #                  ‘$status $body_bytes_sent "$http_referer" ‘ 
    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;  
    #access_log  logs/access.log  main;  
    sendfile        on; 
    tcp_nopush     on;  
    #keepalive_timeout  0; 
    keepalive_timeout  65;  
#gzip  on; 
#设置缓存 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 32k; 
    large_client_header_buffers 4 32k; 
    client_max_body_size 300m; 
    proxy_redirect off; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_connect_timeout 90; 
    proxy_send_timeout 90; 
    proxy_read_timeout 90; 
    proxy_buffer_size 16k; 
    proxy_buffers 4 64k; 
    proxy_busy_buffers_size 128k; 
proxy_temp_file_write_size 128k; 
#设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限 
    proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2 
    keys_zone=http-cache:200m max_size=1g inactive=30d; 
proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp; 
#设置 group1 的服务器 
    30s; 
         server 192.168.1.136:8888 weight=1 max_fails=2 fail_timeout=30s; 
} 
#设置 group2 的服务器 
    upstream fdfs_group2 { 
         server 192.168.1.137:8888 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.138:8888 weight=1 max_fails=2 fail_timeout=30s; 
    }  
    server { 
        listen       8000; 
        server_name  localhost;  
        #charset koi8-r;  
        #access_log  logs/host.access.log  main; 
        #设置 group 的负载均衡参数 
        location /group1/M00 { 
            proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid  200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group1; 
            expires 30d; 
        } 
        location /group2/M00 { 
            proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid  200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group2; 
            expires 30d; 
        }  
    #设置清除缓存的访问权限 
        location ~/purge(/.*) { 
            allow 127.0.0.1; 
            allow 192.168.1.0/24; 
            deny all; 
            proxy_cache_purge http-cache $1$is_args$args; 
        }       
        #error_page  404              /404.html;  
        # redirect server error pages to the static page /50x.html 
        # 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 
}

按以上 nginx 配置文件的要求,创建对应的缓存目录:

mkdir -p /fastdfs/cache/nginx/proxy_cache 
mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp

7、系统防火墙打开对应的端口

vi /etc/sysconfig/iptables
## Nginx 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
service iptables restart

8、启动 Nginx

/usr/local/nginx/sbin/nginx

重启 Nginx

/usr/local/nginx/sbin/nginx -s reload

设置 Nginx 开机启动

vi /etc/rc.local
/usr/local/nginx/sbin/nginx  #添加

9、文件访问测试

前面直接通过访问 Storage 节点中的 Nginx 的文件

http://192.168.1.135:8888/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

http://192.168.1.137:8888/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

现在可以通过 Tracker 中的 Nginx 来进行访问

(1)通过 Tracker1 中的 Nginx 来访问

http://192.168.1.131:8000/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

http://192.168.1.131:8000/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

(2)通过 Tracker2 中的 Nginx 来访问

http://192.168.1.132:8000/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

http://192.168.1.132:8000/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

由上面的文件访问效果可以看到,每一个 Tracker 中的 Nginx 都单独对后端的 Storage 组做了负载均衡,但整套 FastDFS 集群如果想对外提供统一的文件访问地址,还需要对两个 Tracker 中的 Nginx 进行 HA 集群。

八、使用 Keepalived + Nginx 组成的高可用负载均衡集群做两个 Tracker 节点中 Nginx 的负载均衡

Group 1

Tracker 1 ( FastDFS + Nginx )

Tracker 2 ( FastDFS + Nginx )

Proxy 1 ( Keepalived + Nginx )

FastDFS集群

Proxy 2 ( Keepalived + Nginx )

VIP

Storage 1 ( FastDFS + Nginx )

Storage 2 ( FastDFS + Nginx )

Storage 3 ( FastDFS + Nginx )

Storage 4 ( FastDFS + Nginx )

Group 2

1、 《Keepalived+Nginx 实现高可用负载均衡,请查看》

2、在 Keepalived+Nginx 实现高可用负载均衡集群中配置 Tracker 节点中 Nginx 的负载均衡反向代理

(192.168.1.51 和 192.168.1.52 中的 Nginx 执行相同的配置)

vi /usr/local/nginx/conf/nginx.conf
user  root; 
worker_processes  1; 
#error_log  logs/error.log; 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info; 
#pid        logs/nginx.pid; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘ 
    #                  ‘$status $body_bytes_sent "$http_referer" ‘ 
    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘; 
    #access_log  logs/access.log  main; 
    sendfile        on; 
    #tcp_nopush     on; 
    #keepalive_timeout  0; 
    keepalive_timeout  65;  
    #gzip  on;  
    ## FastDFS Tracker Proxy 
    upstream fastdfs_tracker { 
         server 192.168.1.131:8000 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.132:8000 weight=1 max_fails=2 fail_timeout=30s; 
    }  
    server { 
        listen       88; 
        server_name  localhost; 
        #charset koi8-r; 
        #access_log  logs/host.access.log  main; 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
        #error_page  404              /404.html; 
        # redirect server error pages to the static page /50x.html 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
        ## FastDFS Proxy 
        location /dfs { 
            root   html; 
            index  index.html index.htm; 
            proxy_pass  http://fastdfs_tracker/; 
            proxy_set_header Host  $http_host; 
            proxy_set_header Cookie $http_cookie; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto $scheme; 
            client_max_body_size  300m; 
        } 
    } 
}

3、重启 192.168.1.51 和 192.168.1.52 中的 Nginx

/usr/local/nginx/sbin/nginx -s reload

4、通过 Keepalived+Nginx 组成的高可用负载集群的 VIP(192.168.1.50)来访问 FastDFS 集群中的文件

http://192.168.1.50:88/dfs/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz

http://192.168.1.50:88/dfs/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失。

时间: 2024-10-05 23:56:51

FastDFS 集群的安装、配置、使用的相关文章

storm0.9.1 集群环境安装配置

Storm安装配置 三台机器  131,132,133 需要安装 jdk,python,autoconf-2.64,zeromq-3.2.2,jzmq 安装jdk和python不详细说. 1  安装 autoconf-2.64, 1.1 下载 http://download.chinaunix.net/download.php?id=29328&ResourceID=648 上传到lunix上的工作目录 比如  /home/bigdata/ 解压  tar -xvf   autoconf-2.6

Storm集群的安装配置

Storm集群的安装分为以下几步: 1.首先保证Zookeeper集群服务的正常运行以及必要组件的正确安装 2.释放压缩包 3.修改storm.yaml添加集群配置信息 4.使用storm脚本启动相应服务并查看服务状态 5.通过web查看storm集群的状态 安装Storm之前首先保证之前安装的Zookeeper服务正常运行,包括配置hosts映射,主机名修改,防火墙都已经设置完好 Storm是由java编写,因此必须依赖JDK运行,系统首先应正确安装JDK 部分需要依赖Python,红帽系列L

高可用集群heartbeat安装配置(一)

一.HA高可 FailOver:故障转移 包含HA Resource IP, service,STONITH FailBack故障转移原点 Faiover domain:故障转移域 资源粘性资源更倾向于运行于哪个节点 Messagin Layer:集群事务信息层仅用来传递信息并不负责后期信息计算与比较 CRM:claster resource meanager 集群资源管理器负责统计收集集群上每一个资源状态根据资源状态资源服务本身计算出应该运行在哪个节点上. DC:Desinated Coord

Storm系列(一)集群的安装配置

安装前说明: 必须先安装zookeeper集群 该Storm集群由三台机器构成,主机名分别为chenx01,chenx02,chenx03,对应的IP分别为192.168.1.110,192.168.1.111,192.168.1.112,其中chenx01为MAST   1.修改主机名 vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=chenx01   2.修改主机和IP的映射关系 vim /etc/hosts 127.0.0.1 loca

redis应用之cluster(集群)的安装配置

一.redis cluster介绍: 在redis3.0之前的版本中是没有集群功能的,只有master-slave模式,这种模式有个弊端是master主机挂掉,客户端过来的请求就处理不了了.虽然可以通过sentinel高可用来解决这一问题,但是当数据量很庞大的时候,也会成为影响性能的瓶颈,所以可以考虑配置redis cluster来提高性能.Redis集群是一个提供在多个Redis节点间共享数据的程序集,它并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那

Hadoop集群_CentOS安装配置

1.准备安装 1.1 系统简介 CentOS 是什么? CentOS是一个基于Red Hat 企业级 Linux 提供的可自由使用的源代码企业级的 Linux 发行版本.每个版本的 CentOS 都会获得七年的支持(通过安全更新方式).新版本的 CentOS 每两年发行一次,而每个版本的 CentOS 会定期(大概每六个月)更新一次,以便支持新的硬件.这样,建立一个安全.低维护.稳定.高预测性.高重复性的 Linux 环境. CentOS(Community Enterprise Operati

Hadoop集群_Hadoop安装配置

1.集群部署介绍 1.1 Hadoop简介 Hadoop是Apache软件基金会旗下的一个开源分布式计算平台.以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构. 对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve.一个HDFS集群是由一个NameNode和若干个DataNode组成的.其中Nam

MapR分布式集群的安装配置及shell自动化脚本

MapR的分布式集群安装过程还是很艰难的,远远没有计划中的简单.本人总结安装配置,由于集群有很多机器,手动每台配置是很累的,编写了一个自动化配置脚本,下面以脚本为主线叙述(脚本并不完善,后续继续完善中). 编写脚本需要shell基础的,还要掌握awk和sed等统计手段为佳.操作系统是CentOS7. 准备:安装CentOS操作系统并分区 分区: / 50G /home 50G /boot 500M /var 50G /swap 8G /disk 305G(剩余全部,用于MapR的文件管理系统使用

zookeeper集群的安装配置

zookeeper介绍 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.名字服务.分布式同步.组服务等.这是百度百科上的一个介绍,有同学想要了解zookeeper的详细信息,可以看一下官方的文档和一些相关博客.本文只介绍如何安装zookeeper. zookeeper的安装配置 设定我们有三台服务器:hostname1,host