FastDFS集群安装

发表时间:2018-04-19 21:29:31 浏览量( 49 ) 留言数( 0 )

学习目标:

1、了解Java的历史

2、为什么要学习Java语言

3、端正学习态度


学习过程:

一、安装FastDFS的集群,如下图:

安装的过程前面的课程是一样的,配置有些地方需要修改一下。注意记得修改防火墙配置,还有开机启动等。

1、tracker安装和配置

   我们使用192.168.3.104 是作为tracker,安装和配置和192.168.3.101一样就可以了。

2、存储服务

192.168.3.102和192.168.3.103作为存储服务器的,作为group1.

192.168.3.105和192.168.3.106也是作为存储服务器的,作为group2,

这四台存储服务的配置文件都需要修改,打开storage.conf,修改内容如下:

192.168.3.102和192.168.3.103的修改内容

group_name=group1

base_path=/fastdfs/storage

store_path0=/fastdfs/storage

tracker_server=192.168.3.101:22122

tracker_server=192.168.3.104:22122


192.168.3.105和192.168.3.106的修改内容,其实就是组名不一样,其他一样就可以了。

group_name=group2

base_path=/fastdfs/storage

store_path0=/fastdfs/storage

tracker_server=192.168.3.101:22122

tracker_server=192.168.3.104:22122


二、安装nginx,配置http服务器

1、安装nginx和fastdfs-nginx-module插件

   192.168.3.105和192.168.3.106编译和安装过程和前面的课程是一样的。四台存储服务器都需要修改 mod_fastdfs.conf配置

group_name=group1  # 不同组不同名称  

tracker_server=192.168.3.101:22122

tracker_server=192.168.3.104:22122

group_count = 2   # 组的数量,分了多少组就些多少就可以额了。  

[group1]   #group1组的配置

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage

#store_path1=/home/yuqing/fastdfs1


[group2]   #group2组的配置

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage


三、测试

1、安装成功后,全部都启动了,然后使用监听命令:

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

命令看一下。是不是有两个组信息输出。


2、java测试

先修改fdfs_client.conf

tracker_server = 192.168.3.101:22122

tracker_server = 192.168.3.104:22122

还是运行同一个测试类:

看一下输出

输出

group1/M00/00/00/wKgDZlrYqOaAPrqdAAA2j-z2qsA726.jpg

也有可能输出group2

如果你每一次都是相同的组,那么可以自己调整负载均衡的算法

# the method of selecting group to upload files

# 0: round robin

# 1: specify group

# 2: load balance, select the max free space group to upload file

store_lookup=0


# which group to upload file

# when store_lookup set to 1, must set store_group to the group name

store_group=group2


# which storage server to upload file

# 0: round robin (default)

# 1: the first server order by ip address

# 2: the first server order by priority (the minimal)

store_server=0


# which path(means disk or mount point) of the storage server to upload file

# 0: round robin

# 2: load balance, select the max free space path to upload file

store_path=0


# which storage server to download file

# 0: round robin (default)

# 1: the source storage server which the current file uploaded to

download_server=0


3、上传后可以通过任意一个存储器去访问的:

可以看到fastdfs-nginx-module插件还是非常强大的,上传成功到group1的文件,你使用group2的路径也是一样可以浏览到的。

http://192.168.3.102:8888/group1/M00/00/00/wKgDZlrXamWAKEa0AAA2j-z2qsA922.jpg

http://192.168.3.103:8888/group1/M00/00/00/wKgDZlrXamWAKEa0AAA2j-z2qsA922.jpg

http://192.168.3.105:8888/group1/M00/00/00/wKgDZlrXamWAKEa0AAA2j-z2qsA922.jpg

http://192.168.3.106:8888/group1/M00/00/00/wKgDZlrXamWAKEa0AAA2j-z2qsA922.jpg



四、配置nginx反向代理所有的存储服务器

   如果作为图片的文件服务器,我们不可能提供这么多的路径的,我们可以再使用另外的服务反向代理这些存储服务器,这样就可以对外提供统一的访问入口,同时使用nginx的缓存功能,提供图片的缓存,提升访问的效率。当然这方面的知识点和FastDFS关系不大。

缓存配置:

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


[root@localhost fastDFS]# ls

nginx-1.6.2.tar.gz  ngx_cache_purge-2.3.tar.gz

[root@localhost fastDFS]# mv ng* /usr/local/src

[root@localhost fastDFS]# cd /usr/local/src/


解压

[root@localhost src]# tar zxf nginx-1.6.2.tar.gz 

[root@localhost src]# tar zxf ngx_cache_purge-2.3.tar.gz 

[root@localhost nginx-1.6.2]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3

[root@localhost nginx-1.6.2]# make

[root@localhost nginx-1.6.2]# make install

[root@localhost nginx-1.6.2]# vim /usr/local/nginx/conf/nginx.conf


    #其次设定缓存参数

    proxy_connect_timeout 5;

    proxy_read_timeout 60;

    proxy_send_timeout 5;

    proxy_buffer_size 16k;

    proxy_buffers 4 64k;

    proxy_busy_buffers_size 128k;

    proxy_temp_file_write_size 128k;


    #注:temp_path和cache_path 指定的路径必须在同一分区

    proxy_temp_path  /fastfds/cache/temp_dir;

    #设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。

    #levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符,即/app/proxy_cache_dir/cache1/a/1b这种形式

    proxy_cache_path /fastfds/cache/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;


    upstream group1{

      server 192.168.3.102:8888;

      server 192.168.3.103:8888;

    }


    upstream group2{

      server 192.168.3.105:8888;

      server 192.168.3.106:8888;

    }


    server {

        listen       80;

        server_name  localhost;


        #charset koi8-r;


        #access_log  logs/host.access.log  main;


        location / {

            root   html;

            index  index.html index.htm;

        }


        location /group1/M00{

            proxy_pass http://group1;

            proxy_redirect off;

            #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内

            proxy_cache_key $host$uri$is_args$args;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

            proxy_cache cache_one;

            #对不同的HTTP状态码设置不同的缓存时间

            proxy_cache_valid 200 302 1h;

            proxy_cache_valid 301 1d;

            proxy_cache_valid any 1m;

            expires 30d;

        }



      location  /group2/M00{

            proxy_pass http://group2;

            proxy_redirect off;

    

            proxy_cache_key $host$uri$is_args$args;

            proxy_set_header Host  $host;

            proxy_set_header X-Forwarded-For $remote_addr;

            proxy_cache cache_one;

    

            proxy_cache_valid 200 302 1h;

            proxy_cache_valid 301 1d;

            proxy_cache_valid any 1m;

            expires 30d;

      }

      

       #清空缓存

      location ~ /purge(/.*){

        allow  127.0.0.1;

        allow  192.168.3.107;

        deny   all;

        #cache_one  和上面定义的命名保持一致

        proxy_cache_purge cache_one  $host$1$is_args$args;

      }

}


[root@localhost sbin]# mkdir -p  /fastfds/cache/temp

[root@localhost sbin]# mkdir -p  /fastfds/cache/cache


-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT


测试哦

http://192.168.3.107/group2/M00/00/00/wKgDaVreBAyASnAzAAA2j-z2qsA785.jpg


这样既可以使用一个路径进行访问了。但是如果还想保证高可用性,还需要一台服务器,使用KeepAlive保证高可用性。