基于CentOS 8服务器来搭建FastDFS高可用集群环境
服务器版本
我们在服务器的命令行输入如下命令来查看服务器的内核版本。
[root@localhost lib]# cat /etc/redhat-release
CentOS Linux release 8.1.1911 (Core)
可以看到,集群中每台服务器的内核版本为:release 8.1.1911 (Core)。
服务器规划
这里,我们总共规划了6台服务器,分别为:2台tracker服务器,4台storage服务器,其中2台storage服务器为group1,两台storage服务器为group2。具体如下所示。
tracker服务器
tranker1:192.168.175.101
tracker2:192.168.175.102
storage服务器
storage1:192.168.175.103 group1
storage2:192.168.175.104 group1
storage3:192.168.175.105 group2
storage4:192.168.175.106 group2
环境准备
下载FastDFS
在每台服务器上执行如下命令下载FastDFS。
[root@localhost source]# wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
[root@localhost source]# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
[root@localhost source]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
安装环境依赖
在每台服务器上执行如下命令安装FastDFS所依赖的环境。
[root@localhost dest]# yum install gcc gcc-c++
[root@localhost dest]# yum install libtool zlib zlib-devel openssl openssl-devel
[root@localhost dest]# yum -y install pcre pcre-devel libevent libevent-devel perl unzip net-tools wget
安装FastDFS
安装libfastcommon
在每台服务器上依次执行如下命令。
(1)解压libfastcommon的压缩包
[root@localhost source]# tar -zxvf V1.0.43.tar.gz
(2)编译并安装编译并安装
[root@localhost source]# cd libfastcommon-1.0.43/
[root@localhost libfastcommon-1.0.43]# ./make.sh && ./make.sh install
(3)检查执行的结果,看安装是否成功
[root@localhost libfastcommon-1.0.43]# ls /usr/lib64|grep libfastcommon
libfastcommon.so
[root@localhost libfastcommon-1.0.43]# ls /usr/lib|grep libfastcommon
libfastcommon.so
安装fastdfs
在每台服务器上依次执行如下命令。
(1)解压fastdfs
[root@localhost source]# tar -zxvf V6.06.tar.gz
(2)安装fastdfs
[root@localhost source]# cd fastdfs-6.06/
[root@localhost fastdfs-6.06]# ./make.sh && ./make.sh install
(3)检查fastdfs是否安装成功
[root@localhost fastdfs-6.06]# ls /usr/bin|grep fdfs
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_regenerate_filename
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
安装部署tracker服务
复制tracker的配置文件
在两台tracker服务器上,依次执行如下命令。
[root@localhost fastdfs-6.06]# cd /etc/fdfs/
[root@localhost fdfs]# cp client.conf.sample client.conf
[root@localhost fdfs]# cp tracker.conf.sample tracker.conf
注意:无须生成storage.conf文件,这两台tracker不做为storage。
安装Nginx
在两台tracker服务器上,依次执行如下命令。
注意:tracker上不需要安装fastdfs-nginx-module
(1)解压Nginx
[root@localhost source]# tar -zxvf nginx-1.17.8.tar.gz
(2)nginx配置,http_stub_status_module 模块
[root@localhost fdfs]# cd /usr/local/source/nginx-1.17.8/
[root@localhost nginx-1.17.8]# ./configure --prefix=/usr/local/soft/nginx --with-http_stub_status_module
(3)编译安装Nginx
[root@localhost nginx-1.17.8]# make && make install
(4)检查安装是否成功
[root@localhost nginx-1.17.8]# ls /usr/local/soft/ | grep nginx
nginx
(5)查看指定的编译参数是否起作用
[root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V
nginx version: nginx/1.17.8
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)
configure arguments: --prefix=/usr/local/soft/nginx --with-http_stub_status_module
配置并启动FastDFS
在两台tracker上,配置并启动FastDFS。
(1)创建tracker服务所需的目录
[root@localhost fdfs]# mkdir /data/fastdfs
[root@localhost fdfs]# mkdir /data/fastdfs/tracker
[root@localhost fdfs]# chmod 777 /data/fastdfs/tracker
(2)配置tracker服务,修改 tracker.conf 文件
[root@localhost fdfs]# vi /etc/fdfs/tracker.conf
只修改base_path一项的值为我们在上面所创建的目录即可
base_path = /data/fastdfs/tracker
(3)启动 tracker 服务
[root@localhost fdfs]# /etc/init.d/fdfs_trackerd start
(4)检查tracker服务启动是否成功
[root@localhost fdfs]# ps auxfww | grep fdfs
root 15067 0.0 0.0 12320 964 pts/0 S+ 15:14 0:00 | | \_ grep --color=auto fdfs
root 15026 0.0 0.1 90160 5940 ? Sl 15:13 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
说明:能看到 fdfs_trackerd,表示tracker服务启动成功。
(5)检查tracker服务是否已绑定端口 22122
[root@localhost dest]# netstat -anp | grep 22122
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 15026/fdfs_trackerd
说明: 22122端口是在/etc/fdfs/tracker.conf中定义的,如下所示:
# the tracker server port
port = 22122
配置client.conf
两台tracker上,配置client.conf,配置fastdfs的客户端使用的配置文件。
(1)配置client.conf
[root@localhost fdfs]# vi /etc/fdfs/client.conf
以下两项配置用到的tracker目录和服务器地址端口
base_path = /data/fastdfs/tracker
tracker_server = 192.168.175.101:22122
tracker_server = 192.168.175.102:22122
说明:两台tracker上的client.conf配置相同
(2)从客户端的配置可以看到:客户端只需要了解tracker_server的信息。tracker server作用也正是负载均衡和调度
(3)Storage server作用是文件存储,客户端上传的文件最终存储在 Storage 服务上
测试文件
用client.conf上传文件测试。
(1)从tacker上传一个文件
[root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt group1/M00/00/00/rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
注意返回的是group1,我们可以group1下面的两台机器均找到此txt文件:
storage1上
[root@d5d19e99e782 docker_tmp]# ls /data/fastdfs/storage/data/00/00
rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
storage2上
[root@f201111d0698 docker_tmp]# ls /data/fastdfs/storage/data/00/00
rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
(2)指定group上传文件
如果想指定上传到某个group怎么办?例如:指定上传到group2
[root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt 192.168.175.105:23000
group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
说明:指定group2中任一台的ip和端口即可。
(3)查看效果
storage3上
[root@494ac47d63f8 fdfs]# ls /data/fastdfs/storage/data/00/00
rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
storage4上
[root@59fa1efff362 fdfs]# ls /data/fastdfs/storage/data/00/00
rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
安装部署storage服务
生成默认配置文件
四台storage上:生成启动fastdfs默认的配置文件。
[root@localhost fastdfs-6.06]# cd /etc/fdfs/
[root@localhost fdfs]# cp storage.conf.sample storage.conf
[root@localhost fdfs]# cp client.conf.sample client.conf
说明:不需要生成tracker.conf,因为storage上不再运行tracker服务
安装Nginx
四台storage上:安装nginx及fastdfs-nginx-module
(1)解压nginx
[root@localhost source]# tar -zxvf nginx-1.17.8.tar.gz
(2)解压fastdfs-nginx-module
[root@localhost source]# tar -zxvf V1.22.tar.gz
(3)修改config文件,把/usr/local 替换成 /usr
[root@localhost source]# cd fastdfs-nginx-module-1.22/
[root@localhost fastdfs-nginx-module-1.22]# cd src
[root@localhost src]# vi config
(4)Nginx配置,添加fastdfs-nginx-module和http_stub_status_module 模块
[root@localhost fdfs]# cd /usr/local/source/nginx-1.17.8/
[root@localhost nginx-1.17.8]# ./configure --prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/
(5)编译安装nginx
[root@localhost nginx-1.17.8]# make && make install
(6)检查安装是否成功
[root@localhost nginx-1.17.8]# ls /usr/local/soft/ | grep nginx
nginx
(7)查看指定的编译参数是否起作用
[root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V
nginx version: nginx/1.17.8
built by gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)
configure arguments: --prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/
配置并启动storage服务
四台storage上:配置并启动storage服务
(1)创建storage服务所需的目录
[root@localhost fdfs]# mkdir /data/fastdfs/storage
[root@localhost fdfs]# chmod 777 /data/fastdfs/storage/
(2)配置storage服务
编辑storage的配置文件:
[root@localhost fdfs]# vi /etc/fdfs/storage.conf
各配置项包括:
group_name = group1
#配置base_path为上面所创建的storage目录
base_path = /data/fastdfs/storage
#store_path :存储所在的目录,可以设置多个,注意从0开始
store_path0 = /data/fastdfs/storage
#tracker_server的ip和端口
tracker_server = 192.168.175.101:22122
tracker_server = 192.168.175.102:22122
#指定http服务的端口
http.server_port = 80
配置的不同之处:
192.168.175.103 group_name = group1
192.168.175.104 group_name = group1
192.168.175.105 group_name = group2
192.168.175.106 group_name = group2
(3)启动storage服务
[root@localhost fdfs]# /etc/init.d/fdfs_storaged start
正在启动 fdfs_storaged (via systemctl): [ 确定 ]
(4)检查storage服务启动是否成功
[root@localhost fdfs]# ps auxfww | grep fdfs
root 15630 0.0 0.0 12320 972 pts/0 S+ 15:46 0:00 | | \_ grep --color=auto fdfs
root 15026 0.0 0.1 155696 6964 ? Sl 15:13 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root 15573 2.7 1.7 150736 66292 ? Sl 15:45 0:02 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
说明:看到fdfs_storaged,表示storage服务启动成功
(5)检查storage服务是否已绑定到端口:23000
[root@localhost fdfs]# netstat -anp | grep 23000
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 15573/fdfs_storaged
说明:23000 端口是在配置文件 /etc/fdfs/storage.conf中定义的,如下:
# the storage server port
port = 23000
配置fastdfs-nginx-module
四台存储服务器上:配置fastdfs-nginx-module
(1)生成配置文件
[root@localhost nginx-1.17.8]# cp /usr/local/source/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
(2)编辑配置文件
[root@localhost nginx-1.17.8]# vi /etc/fdfs/mod_fastdfs.conf
配置以下几项
group_name=group1
connect_timeout=10
tracker_server=192.168.175.101:22122
tracker_server=192.168.175.102:22122
url_have_group_name = true
store_path0=/data/fastdfs/storage
group_count = 2
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
说明: 最上面的group_name:当机器属于group1这组时,值为group1;当机器属于group2这组时,值为group2。
说明:url_have_group_name = true。 注意:这一项不要漏掉,会导至nginx不正常工作
(3)复制另两个web访问用到配置文件到fdfs配置目录下:
[root@d5d19e99e782 /]# cp /usr/local/source/fastdfs-6.06/conf/http.conf /etc/fdfs/
[root@d5d19e99e782 /]# cp /usr/local/source/fastdfs-6.06/conf/mime.types /etc/fdfs/
配置Nginx
四台存储服务器上:配置nginx
编辑nginx的配置文件:
[root@localhost conf]# vi /usr/local/soft/nginx/conf/nginx.conf
在server listen 80 的这个server配置下面,
增加一个location
location ~/group([0-9]) {
root /data/fastdfs/storage/data;
ngx_fastdfs_module;
}
启动nginx
(1)启动Nginx
[root@localhost storage]# /usr/local/soft/nginx/sbin/nginx
(2)检查nginx是否已成功启动
[root@localhost storage]# ps auxfww | grep nginx
root 24590 0.0 0.0 12320 980 pts/0 S+ 16:44 0:00 | | \_ grep --color=auto nginx
root 24568 0.0 0.0 41044 428 ? Ss 16:44 0:00 \_ nginx: master process /usr/local/soft/nginx/sbin/nginx
nobody 24569 0.0 0.1 74516 4940 ? S 16:44 0:00 \_ nginx: worker process
配置tracker服务
配置tracker服务
说明:这一步等待四台storage server配置完成后再进行。使用n=Nginx做upstream负载均衡的原因:可以通过一个地址访问后端的多个group
(1)文件上传完成后,从浏览器访问各个storage的Nginx即可:
例如:
http://192.168.175.103/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
http://192.168.175.104/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
http://192.168.175.105/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
http://192.168.175.106/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
说明:各台storage server的ip地址后面跟着上传时所返回的地址。注意:只能访问各台机器所在的group,
如果想通过统一的ip地址进行访问
需要在Nginx中通过upstream访问到后端的机器
此Nginx应运行在tracker上
(2)配置nginx.conf
[root@0268c2dc2bf6 ~]# vi /usr/local/soft/nginx/conf/nginx.conf
内容:
添加 upstream到后端的storage。
upstream fdfs_group1 {
server 192.168.175.103:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.175.104:80 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.175.105:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.175.106:80 weight=1 max_fails=2 fail_timeout=30s;
}
针对带有group的url进行处理
location /group1 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group1;
expires 30d;
}
location /group2 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group2;
expires 30d;
}
(3)重启测试
[root@0268c2dc2bf6 ~]# /usr/local/soft/nginx/sbin/nginx -s stop
[root@0268c2dc2bf6 ~]# /usr/local/soft/nginx/sbin/nginx
在浏览器中访问:
http://192.168.175.101/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
http://192.168.175.101/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
基于CentOS 8服务器来搭建FastDFS高可用集群环境的更多相关文章
- ElasticSearch高可用集群环境搭建和分片原理
1.ES是如何实现分布式高并发全文检索 2.简单介绍ES分片Shards分片技术 3.为什么ES主分片对应的备分片不在同一台节点存放 4.索引的主分片定义好后为什么不能做修改 5.ES如何实现高可用容 ...
- Apache httpd和JBoss构建高可用集群环境
1. 前言 集群是指把不同的服务器集中在一起,组成一个服务器集合,这个集合给客户端提供一个虚拟的平台,使客户端在不知道服务器集合结构的情况下对这一服务器集合进行部署应用.获取服务等操作.集群是企业应用 ...
- Mysql高可用集群环境介绍
MySQL高可用集群环境搭建 01.MySQL高可用环境方案 02.MySQL主从复制原理 03.MySQL主从复制作用 04.在Linux环境上安装MySQL 05.在MySQL集群环境上配置主从复 ...
- Flink的高可用集群环境
Flink的高可用集群环境 Flink简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能. 因现在主要Flink这一块做先关方面的学习, ...
- Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录
一. MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...
- 搭建 Kubernetes 高可用集群
使用 3 台阿里云服务器(k8s-master0, k8s-master1, k8s-master2)作为 master 节点搭建高可用集群,负载均衡用的是阿里云 SLB ,需要注意的是由于阿里云负载 ...
- 阿里云搭建k8s高可用集群(1.17.3)
首先准备5台centos7 ecs实例最低要求2c4G 开启SLB(私网) 这里我们采用堆叠拓扑的方式构建高可用集群,因为k8s 集群etcd采用了raft算法保证集群一致性,所以高可用必须保证至少3 ...
- SpringCloud之Eureka高可用集群环境搭建
注册中心集群 在微服务中,注册中心非常核心,可以实现服务治理,如果一旦注册出现故障的时候,可能会导致整个微服务无法访问,在这时候就需要对注册中心实现高可用集群模式. Eureka集群相当简单:相互注册 ...
- ProxySQL Cluster 高可用集群环境部署记录
ProxySQL在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并不能共通,在主实例上配置后,仍需要在备用节点上进行配置,对管理来说非常不方便.但是Proxy ...
随机推荐
- 如何用车辆违章查询API接口进行快速开发
最近公司项目有一个车辆违章查询显示的小功能,想着如果用现成的API就可以大大提高开发效率,所以在网上的API商店搜索了一番,发现了 APISpace,它里面的车辆违章查询API非常符合我的开发需求. ...
- 如何优雅的升级 Flink Job?
Flink 作为有状态计算的流批一体分布式计算引擎,会在运行过程中保存很多的「状态」数据,并依赖这些数据完成任务的 Failover 以及任务的重启恢复. 那么,请思考一个问题:如果程序升级迭代调整了 ...
- Tomcat服务部署及配置
Tomcat服务部署 1.环境准备 systemctl stop firewalld setenforce 0 2.安装jdk cd /opt 将jdk和tomcat软件包拖入当前目录下进行解压 rp ...
- 关于 java 的动态绑定机制
关于 java 的动态绑定机制 聊一聊动态绑定机制, 相信看完这篇文章,你会对动态绑定机制有所了解. 网上大多一言概括: 当调用对象的时候,该方法会和该对象的内存地址/运行类型绑定. 当调用对象的属性 ...
- meterpreter后期攻击使用方法
Meterpreter是Metasploit框架中的一个扩展模块,作为溢出成功以后的攻击载荷使用,攻击载荷在溢出攻击成功以后给我们返回一个控制通道.使用它作为攻击载荷能够获得目标系统的一个Meterp ...
- Web 前端实战:雷达图
前言 在Canvas 线性图形(五):多边形实现了绘制多边形的函数.本篇文章将记录如何绘制雷达图.最终实现的效果是这样的: 绘制雷达图 雷达图里外层 如动图中所示,雷达图从里到外一共有 6 层,所以, ...
- ASP.NET Core 6框架揭秘实例演示[33]:异常处理高阶用法
NuGet包"Microsoft.AspNetCore.Diagnostics"中提供了几个与异常处理相关的中间件,我们可以利用它们将原生的或者定制的错误信息作为响应内容发送给客户 ...
- 前端知识之CSS(1)-css语法、css选择器(属性、伪类、伪元素、分组与嵌套)、css组合器
目录 前端基础之css 1.关于css的介绍 2.css语法 3.三种编写CSS的方式 3.1.style内部直接编写css代码 3.2.link标签引入外部css文件 3.3.标签内直接书写 4.c ...
- OpenJ_Bailian - 3424 Candies (差分约束)
题面 During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teache ...
- 如何通过C#/VB.NET设置Word文档段落缩进
缩进是指调整文本与页面边界之间的距离.在水平标尺,有四个段落缩进滑块:首行缩进.悬挂缩进.左缩进以及右缩进.在对于word文档的录入时,常常需要注意录入的格式,通过合理地设置段落格式,可以让文稿看起来 ...