mark

今天来总结下FastDFS的动态扩容。前面有说过,FastDFS支持横向扩容和纵向扩容,那到底什么是横向和纵向呢?下面将详细说明。

FastDFS动态扩容简要说明

通过之前对FastDFS原理的研究折腾,相信都会知道,FastDFS的存储节点是以group组为单位。同组内的storage配置相同,每个group存储容量空间以group内容量最小的storage为准。换句话说,同一个组下的所有storage相当于做了Raid 0,其数据数据冗余,相当于多个副本。例如,一个group下有两台storage,容量分别是2T和4T,那么这个group能提供的容量只有2T。即group的容量受到单机存储容量限制。整个集群实际提供的容量是所有group容量的总和。

现在来说横向和纵向就简单多了。横向扩容就相当于增加group,纵向扩容相当于在同一group下增加storage。

基于group的动态调整(横向扩容)

增加G3组,数据目录和G1、G2保持一致。

  • 按前面说的安装步骤,配置好一台Storage服务器。
  • 修改新增的这台服务器的配置文件

/etc/fdfs/storage.conf,修改组名为G3

vim /etc/fdfs/storage.conf
group_name=G3    # 注意这里是G3
store_path_count=1
store_path0=/data2

/etc/fdfs/mod_fastdfs.conf,修改组名为G3,增加G3组配置

vim /etc/fdfs/mod_fastdfs.conf
group_name=G3    # 注意这里是G3
[group1]
group_name=G1
storage_server_port=23000
store_path_count=1
store_path0=/data2
[group2]
group_name=G2
storage_server_port=23000
store_path_count=1
store_path0=/data2
[group3]            # 前面G1、G2保留不变,这下面是增加的内容
group_name=G3
storage_server_port=23000
store_path_count=1
store_path0=/data2
  • 修改本机nginx配置,server{}段新增:
location /G3/M00{        #M00表示该台storage上的第1个虚拟磁盘路径 
    root /data2;         #第1个虚拟磁盘的数据目录
    ngx_fastdfs_module;
}
  • 配置完成以后,重启nginx和fdfs_storaged服务。
  • 客户端测试,查看集群状态(输出仅保留部分重要参数)
[root@localhost ~]# fdfs_monitor /etc/fdfs/client.conf 
tracker server is 172.16.100.212:22122    # 处理本次请求的调度器IP
group count: 3    # 3个storage组

Group 1:
    group name = G1

Group 2:
    group name = G2

Group 3:
    group name = G3
    

现在看到G3组已经能成功识别且storage节点状态正常,即扩容完成。

基于storage的动态调整(纵向扩容)

给G1组内增加一个副本,数据目录与同组保持一致。

以添加SG12(172.16.100.216)做演示

  • 按前面文章的内容,安装好作为storage应有的基本服务。
  • 修改配置文件,同组内的机器配置文件必须一致。

/etc/fdfs/storage.conf,修改所属组(应为G1)。

vim /etc/fdfs/storage.conf
group_name=G1
store_path_count=1
store_path0=/data2

/etc/fdfs/mod_fastdfs.conf,修改所属组(应为G1)

vim /etc/fdfs/mod_fastdfs.conf
group_name=G1
store_path_count=2
store_path0=/data2
  • Nginx的配置,有多少个数据目录,其server段就应设置多少个location,并且按store_path参数的顺序,依次设为/G1/M00,/G1/M01……,以此类推。
location /G1/M01{    #M00表示该台storage上的第一个虚拟磁盘路径 
    root /data2;     #数据目录
    ngx_fastdfs_module;
}
  • 配置完成后重启nginx和fdfs_storaged服务,观察日志(有无ERROR)与集群中新机器的状态。
  • 客户端测试,查看集群状态。
fdfs_monitor /etc/fdfs/client.conf

扩容前:
mark

扩容后:
mark

现在看到G1组下已经有两块storage并且状态都是ACTIVE,即扩容成功了。

​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍​‌​‌‌​‌‌‌‌‌‌​​‌‍​‌​​​​‌‌‌‌‌‌‌​​‍​‌​​​​​‌‌‌‌​​​​‍​‌​​‌​​‌​‌​​‌‌‌‍​‌​‌‌‌‌​‌​‌​‌‌‌‍​‌​​‌​​​‌‌​​​​‌‍​​‌‌‌​‌‌‌‌​​‌‌‌‍​​​​​​​​‌‌‌‌​‌‌‌‍‌‌​​‌‌​​‍​​​​​​​​‌‌‌‌​‌‌​‍​​​​​​​​‌‌‌​​‌​‌‍‌​‌‌‌​​‌‍‌​​‌‌‌‌​‍‌​​​‌‌​​‍‌​​​‌​‌‌‍‌​‌‌‌​‌‌‍‌​‌‌‌​​‌‍‌​‌​‌‌​​‍​‌‌​​​‌‌​‌‌​‌​​‍​‌​‌‌​‌​‌​‌​‌‌‌‍​​‌‌‌‌‌‌‌‌‌‌‌‌​‍​​‌‌‌​‌‌​​‌​‌‌​‍​‌​​‌​​​‌​​​‌‌​‍‌​‌​‌‌​​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​​‌‌​‌‍‌​​‌‌‌‌​‍‌​​‌‌​​​‍‌​​‌‌​‌​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​‌‌‌‌​‍‌​​‌‌​‌‌‍‌​​‌​​‌​‍‌​​‌​‌‌​‍‌​​‌​​​‌‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​​‌​​​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌‌​‌‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌​‌‌‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​​‌​​​‍‌​​​‌​​​‍‌​​​‌​​​‍‌‌​‌​​​‌‍‌​​‌​‌‌​‍‌​​‌​‌​​‍‌​​‌​‌‌​‍‌​​​‌​​​‍‌​​‌​‌‌​‍‌‌​‌​​​‌‍‌​​‌​​‌​‍‌​​‌‌​‌​‍‌​‌​​​‌‌‍‌​​‌‌‌‌​‍‌​​​‌‌​‌‍‌​​‌‌‌​​‍‌​​‌​‌‌‌‍‌​​‌​‌‌​‍‌​​​‌​​‌‍‌​​‌‌​‌​‍‌​​​‌‌​​‍‌​‌​​​‌‌‍‌‌​​‌‌​‌‍‌‌​​​‌‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

The End.