背景
假设启动了两个Filer服务:
- 192.168.56.101:8888
- 192.168.56.102.8888
Nginx安装在192.168.56.103,希望通过Nginx实现Filer服务的负载均衡,可参考以下配置。
配置nginx.conf
vi /etc/nginx/nginx.conf
在配置文件http项中加入如下配置:
upstream seaweedfs {
server 192.168.56.101:8888;
server 192.168.56.102:8888;
}
server {
listen 38888;
server_name 192.168.56.103;
#charset koi8-r;
add_header backendCode $upstream_status;
add_header BackendIP "$upstream_addr;" always;
#access_log logs/host.access.log main;
location / {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 300;
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_ignore_client_abort on;
proxy_pass http://seaweedfs;
root html;
index index.html index.htm;
}
}
Nginx会监控192.168.56.103:38888的请求,并把请求转发到两个Filer服务。
测试配置并重启
/usr/sbin/nginx -t # 测试配置
/etc/init.d/nginx stop
/etc/init.d/nginx start
注意
有多个Filer服务时,应使用同一个Filer Store服务(如: Redis/MySQL等)提供集中的元数据存储,否则会出现不一致的情况,例如刚上传的文件,刷新页面之后却不见了,原因是Filer服务默认情况下有各自的Filer Store(如:leveldb),并且Filer Store之间没有及时同步,当Nginx把请求转发到不同的Filer服务时就会发生不一致的情况。