基于【 centos7】四 || FastDFS集群+Nginx负载均衡
1. 架构设计
1.1 架构图
FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

1.2 服务器配置
192.168.22.173 tracker-group1
192.168.22.174 tracker-group2
192.168.22.175 storage-group1-1
192.168.22.176 storage-group1-2
192.168.22.177 storage-group2-1
192.168.22.178 storage-group2-2
2. FastDFS安装和配置
2.1. 安装libfastcommon
上述所有服务器均进行安装。
参照《fastDFS分布式文件系统安装教程》
2.2. 安装FastDFS
上述所有服务器均进行安装。
参照《fastDFS分布式文件系统安装教程》
2.3. 配置跟踪器
2.3.1. 配置(192.168.22.173 tracker-group1)tracker.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/tracker #设置tracker的数据文件和日记目录(预先创建)
store_lookup=0 #0:轮询,1:指定组,2:负载均衡(测试效果,改为0)
port=22122 #设置tracker的端口号,一般使用默认的
2.3.2. 配置(192.168.22.174 tracker-group2)tracker.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/tracker #设置tracker的数据文件和日记目录(预先创建)
store_lookup=0 #0:轮询,1:指定组,2:负载均衡(测试效果,改为0)
port=22122 #设置tracker的端口号,一般使用默认的
2.4. 配置存储器
2.4.1. 配置(192.168.22.175 storage-group1-1)storage.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):
port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同
group_name=group1 #组名,第一组group1,第二组group2
store_path0=/home/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号
tracker_server=192.168.22.174:22122 #多个tracker添加多条配置
Http_server_port=8888 #设置http端口号
2.4.2. 配置(192.168.22.176 storage-group1-2)storage.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):
port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同
group_name=group1 #组名,第一组group1,第二组group2
store_path0=/home/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号
tracker_server=192.168.22.174:22122 #多个tracker添加多条配置
Http_server_port=8888 #设置http端口号
2.4.3. 配置(192.168.22.177 storage-group2-1)storage.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):
port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同
group_name=group2 #组名,第一组group1,第二组group2
store_path0=/home/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号
tracker_server=192.168.22.174:22122 #多个tracker添加多条配置
Http_server_port=8888 #设置http端口号
2.4.4. 配置(192.168.22.178 storage-group2-2)storage.conf
disabled=false #启用配置文件
base_path=/home/fastdfs/storage#设置storage的数据文件和日记目录(预先创建):
port=23000 #设置端口号,默认值23000,同一组的的storage端口号必须相同
group_name=group2 #组名,第一组group1,第二组group2
store_path0=/home/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和store_path个数匹配
tracker_server=192.168.22.173:22122 #tracker服务器的ip地址和端口号
tracker_server=192.168.22.174:22122 #多个tracker添加多条配置
Http_server_port=8888 #设置http端口号
2.5. 测试
2.5.1. 主从自动切换
先启动tracker,在启动storage
查看日志信息:
tail -f /home/fastdfs/storage/logs/storaged.log
自动选举一个leader(tracker节点),同一组是互通的
关闭一个tracker,验证是否自动切换主从leader
2.5.2. 集群信息查看
查看命令:cd /usr/bin/ && ll | grep fdfs
查看存储集群信息:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
2.5.3. 上传文件
修改tracker节点的client.conf配置信息
base_path=/home/fastdfs/tracker #存放路径
tracker_server=192.168.22.173:22122 #tracker服务器ip地址和端口
tracker_server=192.168.22.174:22122 #tracker服务器ip地址和端口
上传:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/1.img
在storage服务器查看/home/fastdfs/storage/data中的数据
75和76服务器数据一致
75.76和77.78根据之前设置的轮询进行数据存储
3. Nginx安装(storage)
3.1. 安装fastdfs-nginx-module包进行整合
上述四个存储节点都进行安装。
参照《fastDFS分布式文件系统安装教程》
3.2. Fastdfs与Nginx进行集成
上述四个存储节点都进行安装。
参照《fastDFS分布式文件系统安装教程》
3.3. nginx-module.conf配置
3.3.1. 配置(192.168.22.175 storage-group1-1)
connect_timeout=10 #连接超时时间
tracker_server=192.168.22.173:22122 #跟踪ip
tracker_server=192.168.22.174:22122 #跟踪ip
storage_server_port=23000
url_have_group_name=true #启用url访问
store_path0=/home/fastdfs/storage #与之前一致
group_name=group1 #第一组
group_count=2 #有多少个组
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
3.3.2. 配置(192.168.22.176 storage-group1-2)
connect_timeout=10 #连接超时时间
tracker_server=192.168.22.173:22122 #跟踪ip
tracker_server=192.168.22.174:22122 #跟踪ip
storage_server_port=23000
url_have_group_name=true #启用url访问
store_path0=/home/fastdfs/storage #与之前一致
group_name=group1 #第一组
group_count=2 #有多少个组
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
3.3.3. 配置(192.168.22.177 storage-group2-1)
connect_timeout=10 #连接超时时间
tracker_server=192.168.22.173:22122 #跟踪ip
tracker_server=192.168.22.174:22122 #跟踪ip
storage_server_port=23000
url_have_group_name=true #启用url访问
store_path0=/home/fastdfs/storage #与之前一致
group_name=group2 #第二组
group_count=2 #有多少个组
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
3.3.4. 配置(192.168.22.178 storage-group2-2)
connect_timeout=10 #连接超时时间
tracker_server=192.168.22.173:22122 #跟踪ip
tracker_server=192.168.22.174:22122 #跟踪ip
storage_server_port=23000
url_have_group_name=true #启用url访问
store_path0=/home/fastdfs/storage #与之前一致
group_name=group2 #第二组
group_count=2 #有多少个组
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/home/fastdfs/storage
3.4. 安装nginx缓存模块
需要在所有跟踪器上安装nginx,以提供反向代理服务,目的是使用统一的一个ip地址对外提供服务。
3.4.1. 安装nginx缓存模块
上传并解压Nginx缓存模块,ngx_cache_purge
安装依赖库文件
yum install pcre
yum install pcre-deve
yum install zlib
yum install zlib-devel
安装Nginx,并加入缓存模块
加入模块:./configure --add-module=/usr/local/fastdfs/ngx_cache_purge
编译:make && make install
3.4.2. 配置nginx负载均衡和缓存(192.168.22.173 tracker-group1)
编辑nginx.conf
# 缓存配置start
server_names_hash_bucker_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
# 缓存文件夹
proxy_cacher_path /home/fastdfs/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:200m max_size=1g inactive=30d;
proxy_temp_path /home/fastdfd/cache/nginx/proxy_cache/tmp;
# group的服务设置
upstream fdfs_group1{
server 192.168.22.175:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.22.176:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2{
server 192.168.22.177:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.22.178:8888 weight=1 max_fails=2 fail_timeout=30s;
}
# 缓存配置end
server {
listen 8000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
#缓存清空权限设置
location ~purge(/.*) {
allow 127.0.0.1;
allow 127.0.0.1;
deny all;
proxy_cache_purge http-cache $1$si_args$args;
}
3.4.3. 配置nginx负载均衡和缓存(192.168.22.174 tracker-group2)
在/fastdfs/storage文件存储目录下创建软连接,将其链接到实际存放数据的目录:
# 缓存配置start
server_names_hash_bucker_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
# 缓存文件夹
proxy_cacher_path /home/fastdfs/cache/nginx/proxy_cache levels=1:2
keys_zone=http-cache:200m max_size=1g inactive=30d;
proxy_temp_path /home/fastdfd/cache/nginx/proxy_cache/tmp;
# group的服务设置
upstream fdfs_group1{
server 192.168.22.175:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.22.176:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2{
server 192.168.22.177:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.22.178:8888 weight=1 max_fails=2 fail_timeout=30s;
}
# 缓存配置end
server {
listen 8000;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2/M00 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $uri$is_args$args;
proxy_pass http://fdfs_group2;
expires 30d;
}
#缓存清空权限设置
location ~purge(/.*) {
allow 127.0.0.1;
allow 127.0.0.1;
deny all;
proxy_cache_purge http-cache $1$si_args$args;
}
3.4.4. 创建缓存文件夹
命令:mkidr -p /home/fastdfs/cache/nginx/proxy_cache
命令:mkidr -p /home/fastdfd/cache/nginx/proxy_cache/tmp
3.4.5. 启动nginx进行测试
命令: /usr/local/nginx/sbin/nginx
3.4.6. 使用keepalive虚拟ip地址(可在173和174上代理)
upstream fastdfs_tracker{
server 192.168.22.173:8000 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.22.174:8000 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /fastdfs {
root html;
index index.html index.htm;
proxy_pass http://fastdfs_tracker;
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarder_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 300m;
}
基于【 centos7】四 || FastDFS集群+Nginx负载均衡的更多相关文章
- Tomcat集群 Nginx负载均衡 shell脚本实时监控Nginx
第一步,安装Tomcat 系统环境:Centos7 第1步:下载tomcat安装包 tomcat官网:https://tomcat.apache.org/ 第2步:安装包上传至linux中 第3步:下 ...
- Graylog+elasticsearch+mongodb集群+nginx负载均衡前端
网上有张图画的很好,搜索有关它的配置文章,google里有几篇英文的,都是依靠haproxy等或别的什么实现,没有纯粹的Graylog+elasticsearch+mongodb集群,项目需要,只有自 ...
- Nginx实现tomcat集群进行负载均衡
一.背景 随着业务量和用户数量的激增,单一的tomcat部署应用已经无法满足性能需求,而且对于每次发布项目期间服务不可用的问题也凸显,既然出现了这个问题,那么我们本文就借助nginx来完美的解决这个问 ...
- 10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑心中会激动一番(或许这是判断是否是一个标准阿猿的标准吧)! 首先自己从宏观把控一下,通过上网科普自 ...
- 架构之路:nginx与IIS服务器搭建集群实现负载均衡(三)
参考网址:https://blog.csdn.net/zhanghan18333611647/article/details/50811980 [前言] 在<架构之路:nginx与IIS服务器搭 ...
- Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
10分钟搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟程序猿无疑 ...
- 搭建服务器集群——Windows7系统中nginx与IIS服务器搭建集群实现负载均衡
转载:https://www.cnblogs.com/xiongze520/p/10308720.html 分布式,集群,云计算机.大数据.负载均衡.高并发······当耳边响起这些词时,做为一个菜鸟 ...
- 注意这几点,轻轻松松配置 Nginx + Tomcat 的集群和负载均衡
Tomcat 集群是当单台服务器达到性能瓶颈,通过横向扩展的方式提高整体系统性能的有效手段.Nginx 是一个高性能的 HTTP 和反向代理 web 服务器,可以通过简单的配置实现 Tomcat 集群 ...
- centos7配置fastdfs集群(5.09)
centos7配置fastdfs集群(5.09) 2017年03月10日 23:34:26 带鱼兄 阅读数 1564 版权声明:本文为博主原创文章,转载请注明出处. https://blog.c ...
随机推荐
- apk增加系统签名的方法
1.命令行方法给apk加系统签名在Linux环境:java -Djava.library.path=. -jar signapk.jar platform.x509.pem platform.pk8 ...
- HTML5 地理位置定位API(3)
HTML5 地理位置定位实例 这篇文章主要为大家介绍了HTML5地理定位的方法,实例讲述了html5获取坐标完整实现过程, 并对比不同浏览器运行效果给出参考结果,需要的朋友可以参考下 本文实例讲述了h ...
- python基础之模块(一)
概述 模块,用一砣代码实现了某个功能的代码集合.一个功能可能由 N 个函数来组成,这些函数写到一个py文件中,那么这个Py文件就是传说中的模块. 模块可将代码归类,让你的代码看着条理清晰,当然还需要你 ...
- react——Table组件列中靠左 靠右对齐解决方案
最近项目中遇到一个需求调整:table中的文字过长居左排列,数字居右排列 然后看了一下官方文档: 先上图展示一下 左边是需要的效果: className: 'column-left', { title ...
- react 生命周期函数的一些心得体会
一.理论 组件本质上是状态机,输入确定,输出一定确定 生命周期的三个阶段,三者时间是不固定的,只是在逻辑上的分类: 二.初始化阶段: getDefaultProps:获取实例的默认属性(即使没有生成实 ...
- 第五章 编码/加密——《跟我学Shiro》
转发地址:https://www.iteye.com/blog/jinnianshilongnian-2021439 目录贴:跟我学Shiro目录贴 在涉及到密码存储问题上,应该加密/生成密码摘要存储 ...
- LSTM改善RNN梯度弥散和梯度爆炸问题
我们给定一个三个时间的RNN单元,如下: 我们假设最左端的输入 为给定值, 且神经元中没有激活函数(便于分析), 则前向过程如下: 在 时刻, 损失函数为 ,那么如果我们要训练RNN时, 实际上 ...
- 单点登录系统(SSO)详细设计说明书(上篇)
1.引言 1.1编写目的 为了单点登录系统(SSO系统)的可行性,完整性,并能按照预期的设想实现该系统,特编写需求说明书. 同时,说明书也发挥与策划和设计人员更好地沟通的作用. 1.2 ...
- list自定义排序工具类
工具类 package sort; import java.lang.reflect.Method; import java.text.Collator; import java.util.Compa ...
- [Python[CV2]] -- 352: error -- 来自截取图片
今天想用CV2 截个ROI ( Region Of Interest ) 的时候, 是这样写的 结果, 发现是截取img 那句出了错 应该为: 先纵后横 这样就OK了 cv2.selectROI 用法 ...