这里使用docker模拟A和B两个机房(使用同网段IP,模拟A和B机房互通)
A机房机器环境
| IP地址 | 用途 |
|---|---|
| 172.33.0.4 | tracker1 |
| 172.33.0.5 | tracker2 |
| 172.33.0.8 | storage11 |
| 172.33.0.9 | storage12 |
B机房机器环境
| IP地址 | 用途 |
|---|---|
| 172.33.0.6 | tracker3 |
| 172.33.0.7 | tracker4 |
| 172.33.0.10 | storage13 |
| 172.33.0.11 | storage14 |
A机房正常运行,B机房新增,是否可以在B机房配置A的Tracker之后,A上传的文件自动同步到B机房?如果在B机房上传文件,是否能自动同步到A机房?

在A机房上传文件,查看binlog文件。C 源操作,c表示同步记录操作
# 在A机房上传文件
$ fdfs_upload_file /etc/fdfs/client.conf /root/rabbitmq.jpeg
group1/M00/00/00/rCEACWJdVZOAc_wVAAA13Pyj5VU04.jpeg
# 查看binlog日志
1650283923 c M00/00/00/rCEACWJdVZOAc_wVAAA13Pyj5VU04.jpeg
在B机房上传文件,查看binlog文件。
# 在B机房上传文件
$ fdfs_upload_file /etc/fdfs/client.conf /root/rabbitmq.jpeg
group1/M00/00/00/rCEACmJdViCAciiCAAA13Pyj5VU34.jpeg
# 查看binlog日志
1650284064 C M00/00/00/rCEACmJdViCAciiCAAA13Pyj5VU34.jpeg
结论:集群中的文件能够相互同步,则storage配置的tracker地址,必须要配全集群中所有的tracker,否则将会出现某些storage上传的文件无法同步到组内其他storage上

在双机房中的storage进行提权和降权操作
**提权:**将B机房中的storage配置的upload_priority值小于A机房storage配置的upload_priority
降权:将B机房中的storage配置的upload_priority值大于A机房storage配置的upload_priority
修改tracker的配置项
# 0: round robin (default)
# 1: the first server order by ip address
# 2: the first server order by priority (the minimal)
store_server=2
修改storage配置,upload_priority越小,优先级越高
upload_priority = 10
提权案例
1. 修改所有的Tracker配置
store_server=2
2. 修改B机房的Storage配置
upload_priority = 2
3. 连接Tracker上传文件
fdfs_upload_file /etc/fdfs/client.conf /root/rabbitmq.jpeg
4. 查看B机房Storage的binlog
1650328950 C M00/00/00/rCEACmJeBXaAZvqaAAA13Pyj5VU67.jpeg
5. 查看A机房Storage的binlog
1650328950 c M00/00/00/rCEACmJeBXaAZvqaAAA13Pyj5VU67.jpeg
6. 上传多次之后,可以看出是优先上传到B机房的Storage,然后同步到A机房发Storage