本文的最终目标是将集群搭建完成
准备的服务器:192.168.1.111 192.168.1.112 192.168.1.113 192.168.1.114
以四台服务器做集群,其中两台即为tracker又为storage 另外两台为单纯的storage节点
192.168.1.111 tracker group1 storage1
192.168.1.112 tracker group1 storage2
192.168.1.113 group2 storage1
192.168.1.114 group2 storage2
以上是集群的最终配置!!!
1.首先,在所有的服务器上安装FastDFS与Nginx
可以参考之前的文章:部署FastDFS
切记,四台服务器全部按照文章安装完成,全部一样!!!
#### 2.设置两台tracker服务器的配置文件
因为先要配置tracker所以以111机器先启动tracker为例启动第一个tracker节点
base_path=/home/FastDFS #tracker的日志路径 我这里是举例 按照自己想保存的路径即可
store_lookup=0 #一般不用配置,因为这里是为了做集群上传测试能看到分别上传到其他节点,所以设置为0,表示循环上传到goup 节点中,那么如果集群中有2个节点,则会依次上传到group1,group2,group1,group2...以此循环
store_group=group1 #因为是store_lookup设置为0,则表示集群中你想分配几个group 目前我们是设置为两个,即为goup1与group2,所以这里设置为goup1,另外112的tracker配置文件的这里则设置为group2,store_lookup也设置为0
tracker其他地方不要修改,按照上面修改完成之后启动111服务器的tracker,如果已经开启就重启
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
netstat -unltp | grep fdfs
# 如果tracker出错一定要看日志:日志的地方在:cd /home/FastDFS/logs
111上面的tracker启动完成,再配置112上面的tracker.conf,配置完并启动
base_path=/home/FastDFS
store_lookup=0
store_group=group2
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
netstat -unltp | grep fdfs
ok,现在启动了两个tracker,但是还没有关联起来,也就是说还没有集群效果,下面开始则配置storage,FastDFS 的核心
3.配置所有服务器的storage
先配置111的storage
group_name=group1 #配置当前storage节点属于哪个group
port=23000 #配置当前group的端口号
base_path=/home/FastDFS #设置storage 存放日志的路径
store_path=/home/fdfs_storage #设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件
tracker_server=192.168.1.111:22122
tracker_server=192.168.1.112:22122 #配置两个tracker服务器地址,两个这直接写在下面即可,三个依次添加
配置112的storage
group_name=group1 #因为112的storage隶属于group1下面,所以我们把它归属到group1下
port=23000 #配置当前group的端口号
base_path=/home/FastDFS #设置storage 存放日志的路径
store_path=/home/fdfs_storage #设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件
tracker_server=192.168.1.111:22122
tracker_server=192.168.1.112:22122
分别启动111服务器和112服务器的storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
netstat -unltp | grep fdfs
配置113服务器的storage.conf
因为113跟114只作为单纯的storage节点,所以就不配置tracker,但是storage.conf的配置则跟111与112的不一致,下面请看配置:
group_name=group2 #配置当前storage节点属于哪个group,这里把它归属于group2
port=23001 #配置当前group的端口号,可以继续使用23000,我这里是为了方便区分所以改成23001
base_path=/home/FastDFS #设置storage 存放日志的路径
store_path=/home/fdfs_storage #设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件
tracker_server=192.168.1.111:22122
tracker_server=192.168.1.112:22122 #配置两个tracker服务器地址
配置114服务器的storage.conf
group_name=group2 #配置当前storage节点属于哪个group,这里把它归属于group2
port=23001 #配置当前group的端口号,可以继续使用23000,我这里是为了方便区分所以改成23001
base_path=/home/FastDFS #设置storage 存放日志的路径
store_path=/home/fdfs_storage #设置storage 存储路径,如果没有设置,则使用base_path,这里的路径是指文件存储的地址,而不是日志存放的路径,因为为了区分日志的data和存储文件的data所以文件路径初始化的时候就做不同的文件
tracker_server=192.168.1.111:22122
tracker_server=192.168.1.112:22122 #配置两个tracker服务器地址
分别启动113服务器和114服务器的storage
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
netstat -unltp | grep fdfs
ok,我们现在启动了 111 的tracker,112的tracker,111的storage,112的storage,113的storage,114的storage
现在我们来查看集群状态:
在启动stroage的任意一台机器上都可以查看集群状态:
在启动stroage的任意一台机器上都可以查看集群状态:
例如:在111上查看:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
这里说明了启动2个tracker由server_count=2表示,启动了2个group由group count:2表示
写明group1的配置,disk total space,则为总容量,disk free space 为可用容量
主要看后面这个ACTIVE
这里列出几个常见的状态:
ACTIVE表示可用状态,也就是正常的,成功的
WAIT_SYNC:等待同步,一般出现这个状态基本上是由于添加了新存储节点造成,一般正常情况下一会就会同步完成
SYNCING:同步中,添加新节点一般会在新添加的storage节点显示该状态,说明正在同步
DELETE:删除storage节点,一般删除后会显示该状态,重启tracker服务器则不再看见该状态的storage节点,删除指令为:/etc/fdfs/client.conf delete groupxx 192.168.xx.xx 这里的client.conf配置很简单,只需要配置上base_path=/opt/fastdfs_storage 与tracker_server 既可,当然tracker_server如果是集群,则写集群的所有tracker服务器
OFFLINE:离线,不能提供服务,一般是由于先启动两个tracer节点,没有启动任何节点是storage造成,解决原因就是启动storage就可以了,但是这个一般是由于配置成功过一次后关机再启动tracker没有启动storage造成的。
INIT:初始化
到这里纯集群就配置完成了,因为要涉及到上传下载,下一步就是个个服务器的nginx的配置
4.配置所有服务器的mod_fastdfds.conf设置
我们将192.168.1.111作为上传文件与下载文件的主机,配置所有服务器的client.conf
base_path=/home/FastDFS #日志路径
tracker_server=192.168.1.111:22122 #两个tracker地址
tracker_server=192.168.1.112:22122
配置四台服务器的mod_fastdfs.conf
**四台配置除了storage_server_port与group_name 不同,其他全部一致 **
base_store=/home/FastDFS #存储日志目录
tracker_server=192.168.1.111:22122
tracker_server=192.168.1.112:22122
storage_server_port=23000 #表示当前机器的storage的端口,因为是111的机器,111的storage端口为23000,所以这里设置为23000
# 112为 storage_server_port=23000
# 113为 storage_server_port=23001
# 114为 storage_server_port=23001
group_name=group1 #这里也表示当前机器storage的group名称,因为111的storage的group名称为group1,所以这里设置为group1
# 112为 group_name=group1
# 113为 group_name=group2
# 114为 group_name=group2
store_path0=/home/fdfs_storage #这里表示存储路径
url_have_group_name=true
group_count=2 #这里表示集群中group的数量,因为我们只开辟了2个,所以设置为2,那么以下的设置就要写2个,分别表示2个group的信息:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fdfs_storage
[group2]
group_name=group2
storage_server_port=23001
store_path_count=1 #这里表示一台机器有几个存储的路径,每台机器上都是1个存储路径
store_path0=/home/fdfs_storage
5.配置所有服务器Nginx
192.168.1.111的nginx
proxy_ignore_client_abort on;
server {
listen 80; #这里必须和你storage的http.server端口一样
server_name 192.168.1.111; # 这里改成你IP
location ~/group1/M00/{
root /home/FastDFS/fdfs_storage/data; #读取存放数据的路径
ngx_fastdfs_module;
}
location ~/group1/M00/{
proxy_pass http://192.168.1.112:80; #读取存放数据的路径
}
location ~/group2/M00/{
proxy_pass http://192.168.1.113:80; #读取存放数据的路径
}
location ~/group2/M00/{
proxy_pass http://192.168.1.114:80; #读取存放数据的路径
}
}
192.168.1.112的nginx
proxy_ignore_client_abort on;
server {
listen 80; #这里必须和你storage的http.server端口一样
server_name 192.168.1.112; # 这里改成你IP
location ~/group1/M00/{
root /home/FastDFS/fdfs_storage/data; #读取存放数据的路径
ngx_fastdfs_module;
}
}
192.168.1.113的nginx
proxy_ignore_client_abort on;
server {
listen 80; #这里必须和你storage的http.server端口一样
server_name 192.168.1.113; # 这里改成你IP
location ~/group2/M00/{
root /home/FastDFS/fdfs_storage/data; #读取存放数据的路径
ngx_fastdfs_module;
}
}
192.168.1.114的nginx
proxy_ignore_client_abort on;
server {
listen 80; #这里必须和你storage的http.server端口一样
server_name 192.168.1.114; # 这里改成你IP
location ~/group2/M00/{
root /home/FastDFS/fdfs_storage/data; #读取存放数据的路径
ngx_fastdfs_module;
}
}
6.总结
所有的机器的防火墙全部关闭,如果是阿里云的话把该用到的端口全部设置安全组
如果日志文件遇到status 2!=0的报错那就关闭那台机器的防火墙
上传文件成功访问不了的,先检查配置文件,如果还不行就在nginx.conf的第一行写上user root;