暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

FASTDFS双机房容灾测试

程序员小邹 2021-07-20
1047

搭建双机房架构如下(资源有限,最小架构测试):

验证

场景一:双机房同步验证

场景说明:

APP连接B机房的tracker2进行文件上传,文件是否会同步到A机房的 storage1中。

目的:

如果能同步,则在双机房容灾演练操作中,无需进行提权和降权的操作

测试步骤:

步骤一:判断单独在A机房上传的文件,是否可以在B机房配置A机房的tracker1之后,自动同步到B机房。

  1. 单独搭建A机房和B机房,分开为两个独立的集群,即B机房的storage2 不配置 A机房的tracker1的地址;

  2. 在A机房上传文件。

  1. 停掉B机房的storage2,并修改storage2的配置,添加tracker1的地址,修改完成后启动storage2。

  2. 观察storage中的binlog日志文件,发现A机房中上传的文件无法同步到B机房。

  3. 此时在B机房中上传文件

  4. 观察两边机房的binlog日志文件,发现A机房中的binlog日志文件中存在同步操作的记录(即表示B机房上传的文件同步到了A机房),而在B机房中的binlog日志不存在同步操作的记录(即表示A机房中上传的文件无法同步到B机房)

A机房中的binlog日志文件内容:

B机房中的binlog日志文件内容:

  1. 将A机房中的storage1添加tracker2的地址,并重启storage1。

  2. 观察B机房中binlog日志文件内容的变化,发现B机房中的binlog日志文件中,发现了同步操作的记录

测试结论:

需要集群中的文件能够相互同步,则storage配置的tracker地址,必须要配全集群中所有的tracker,否则将会出现某些storage上传的文件无法同步到组内其他storage上,架构需要修改为如下图所示(即A机房中的storage也需要添加B机房中所有的tracker地址):


场景二:提权与降权操作

场景说明:

对双机房中的storage进行提权和降权操作,双机房中tracker的配置项store_server
需要配置为2

目的:

验证对storage进行提权和降权,如何才能使权限生效?

操作步骤:

前提:

storage的配置想

upload_priority

#func:上传优先级。只有tracker.conf中store_server=2时,才有效。

#valu:值越小,优先级越高。默认为10.

upload_priority=10


tracker 的配置项:

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  

#同组推送方式0.轮询方式,1.根据ip地址进行排序选择第一个服务器,2.根据优先级进行排序(优先级由storeServer的配置文件中upload_priority属性设置)  

前提条件:确保tracker是按照storage的优先级进行选择的,主要检查tracker中的配置项store_server
的值是否为 2

配置说明:

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  

#同组推送方式0.轮询方式,1.根据ip地址进行排序选择第一个服务器,2.根据优先级进行排序(优先级由storeServer的配置文件中upload_priority属性设置)  

以下的操作步骤,都是在上图双机房架构下进行的:

storage优先级配置项说明:

upload_priority

#func:上传优先级。只有tracker.conf中store_server=2时,才有效。

#valu:值越小,优先级越高。默认为10.

upload_priority=10

对B机房进行降权操作步骤:

  1. 设置B机房中storage2的配置项upload_priority
    的值 小于 A机房中storage1该项配置的值;(测试中A机房中storage1配置的值为10 , B机房中配置的值为 15)

  2. 重启B机房中storage2(使用stop 和 start 命令,确保真正进行了重启操作,否则会导致对storage2修改的配置不生效)

  3. 在集群中进行文件上传操作,发现文件始终会上传到A机房中的storage1上,说明B机房降权成功。


对B机房进行提权操作步骤:

  1. 设置B机房中storage2的配置项upload_priority
    的值 大于 A机房中storage1该项配置的值;(测试中A机房中storage1配置的值为10 , B机房中配置的值为 5)

  2. 重启B机房中storage2(使用stop 和 start 命令,确保真正进行了重启操作,否则会导致对storage2修改的配置不生效)

  3. 在集群中进行文件上传操作,发现文件始终会上传到B机房的storage2上,说明B机房提权成功。


提权降权的过程中遇到的问题:

  1. 当双机房中storage的优先级相同时,tracker会根据服务器进行排序,选择第一台服务器进行上传。(因此在使用优先级的同一个机房中一个分组下的多个storage也会出现相同的这种问题)

  2. 优先级值越小,表示优先级越高。


文章转载自程序员小邹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论