FastDFS 高可用集群部署【转】
该文详细描述了如何在两台服务器上部署FastDFS集群,包括Tracker和Storage节点的配置,Nginx模块设置,以及使用Keepalived实现VIP地址的高可用。
1.环境信息:
服务器
部署服务
192.168.222.11
Tracker(调度工作)、Storage(存储)、Nginx、Keepalived
192.168.222.12
Tracker(调度工作)、Storage(存储)、Nginx、Keepalived
192.168.222.13
以上两台的VIP地址
2.部署 FastDFS(两台机器同步操作,配置一致)
上传 fastdfs_soft.tar.gz 到两台 FastDFS 服务器(比如上传到了 /data 目录)
上传 fastdfs_soft.tar.gz 到两台 FastDFS 服务器(比如上传到了 /data 目录) $ cd /data/ $ tar zxvf fastdfs_soft.tar.gz $ cd fastdfs_soft/yum_dependent/ $ yum -y localinstall ./*rpm $ cd ../git_dependent/ $ cd libfastcommon; git checkout V1.0.67 $ ./make.sh clean && ./make.sh && ./make.sh install $ cd ../libserverframe; git checkout V1.1.26 $ ./make.sh clean && ./make.sh && ./make.sh install $ cd ../fastdfs; git checkout V6.9.5 $ ./make.sh clean && ./make.sh && ./make.sh install $ ./setup.sh /etc/fdfs
3.配置 FastDFS(两台机器同步操作,配置一致)
3.1 配置 tracker 节点
$ cd /data/fastdfs_soft/conf/ # 覆盖原有配置 $ cp /data/fastdfs_soft/conf/tracker.conf /etc/fdfs/ # 需要修改 tracker 配置参数 $ vim /etc/fdfs/tracker.conf base_path=/data/fastdfs/tracker # 存储数据和日志目录 # 创建存储目录 $ mkdir -p /data/fastdfs/tracker
3.2 配置 storage 节点
# 覆盖原有配置 $ cp /data/fastdfs_soft/conf/storage.conf /etc/fdfs/ # 需要修改 storage 配置参数 $ vim /etc/fdfs/storage.conf base_path = /data/fastdfs/storage store_path0 = /data/fastdfs/storage tracker_server = 192.168.222.11:22122 # 修改为第一个 tracker 的IP tracker_server = 192.168.222.12:22122 # 修改为第二个 tracker 的IP # 创建存储目录 $ mkdir /data/fastdfs/storage
3.3 启动 tracker 和 storage
# 启动 tracker 服务(两台机器操作) fdfs_trackerd /etc/fdfs/tracker.conf start # 验证 tracker 端口是否存在 netstat -lantup | grep 22122 # 启动 storage 服务(两台机器操作) fdfs_storaged /etc/fdfs/storage.conf start # 验证 storage 端口是否存在 netstat -lantup | grep 23000 # 查看集群信息 fdfs_monitor /etc/fdfs/storage.conf # Storage 1 和 Storage 2 状态都是“ACTIVE”,则为正常
4.配置fastdfs-nginx-module,编译安装 Nginx(两台机器同步操作,配置一致)
$ cd /data/fastdfs_soft $ tar zxvf nginx-1.24.0.tar.gz $ cp -r git_dependent/fastdfs-nginx-module /usr/local/ $ cd /usr/local/fastdfs-nginx-module; git checkout V1.23 $ cd /data/fastdfs_soft/conf/ # 覆盖 fastdfs-nginx-module/src 目录下的 config 文件 $ cp config /usr/local/fastdfs-nginx-module/src/ $ cp mod_fastdfs.conf /etc/fdfs/ # 修改 mod_fastdfs.conf 配置参数 $ vim /etc/fdfs/mod_fastdfs.conf base_path=/data/fastdfs/storage store_path0=/data/fastdfs/storage # 修改为 Storage 的存储路径 tracker_server=192.168.222.11:22122 # 修改为第一个 tracker 的IP tracker_server=192.168.222.12:22122 # 修改为第二个 tracker 的IP group_name=group1 url_have_group_name = true # 编译安装 Nginx $ cd /data/fastdfs_soft/nginx-1.24.0 $ ./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src $ make && make install # 修改 nginx 配置 # 在 location / 和 location = /50x.html 中间配置“location ~/group[0-9]/” $ vim /usr/local/nginx/conf/nginx.conf location / { root html; index index.html index.htm; } #error_page 404 /404.html; location ~/group[0-9]/ { ngx_fastdfs_module; } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # 验证 Nginx 配置是否正常 $ /usr/local/nginx/sbin/nginx -t # 启动 Nginx $ /usr/local/nginx/sbin/nginx
5.上传文件,访问测试
5.1 修改 client.conf 客户端配置(两台机器同步操作,配置一致)
$ cd /data/fastdfs_soft/conf/ # 覆盖自带的 client.conf 配置文件 $ cp client.conf /etc/fdfs/ # 修改以下配置参数 $ vim /etc/fdfs/client.conf base_path = /data/fastdfs/storage # 修改为 Storage 的存储路径 tracker_server = 192.168.222.11:22122 # 修改为第一个 tracker 的IP tracker_server = 192.168.222.12:22122 # 修改为第二个 tracker 的IP
5.2 client 上传文件,访问测试
# 上传文件(一台机器操作即可) $ echo "testtest" >> /tmp/test.txt $ fdfs_upload_file /etc/fdfs/client.conf /tmp/test.txt group1/M00/00/00/wKjeDWbZJQ2ANRT0AAAACWPlbxI828.txt # 返回的访问路径 # 访问测试(一台机器操作即可) # 如果 curl 都可以返回“testtest”,则无问题。 $ curl http://192.168.222.11/group1/M00/00/00/wKjeDWbZJQ2ANRT0AAAACWPlbxI828.txt $ curl http://192.168.222.12/group1/M00/00/00/wKjeDWbZJQ2ANRT0AAAACWPlbxI828.txt # 两台机器都执行这个操作,查看是否有文件内容存在 # cat /data/fastdfs/storage/data/00/00/wKjeDWbZJQ2ANRT0AAAACWPlbxI828.txt ### 以上测试均无问题,则说明文件同步已无问题 ###
6.部署 Keepalived,用于实现 VIP 漂移
6.1 安装 Keepalived(两台机器同步操作)
$ cd /data/fastdfs_soft/yum_keepalived
$ yum -y localinstall ./*rpm
6.2 配置 Keepalived
# 在 fastdfs1 机器执行 $ vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { test@qq.com } notification_email_from test smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id jjxtslb1 } vrrp_instance jjxt_1 { state MASTER interface ens33 virtual_router_id 51 priority 150 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.222.13 } } # 在 fastdfs2 机器执行 $ vim /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { test@qq.com } notification_email_from test smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id jjxtslb1 } vrrp_instance jjxt_1 { state BACKUP interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.222.13 } } ### interface(指定网卡名称)需要确定网卡名称,要把 vip 绑定到哪个网卡上,我这里用的是 ens33 ### ### 这两个配置有两个不同的参数配置,state(主备标识)和priority(优先级) ###
6.3 启动 keepalived(两台机器同步操作)
$ systemctl start keepalived # 启动 keepalived
1.
6.4 验证 keepalived
# 在 fastdfs1 机器查看网卡配置,查看 vip 是否存在
$ ip a
# 查看 keepalived 服务是否正常
$ systemctl status keepalived
# 多次执行 curl 命令,读取文件
$ curl http://192.168.222.14/group1/M00/00/00/wKjeDWbZJQ2ANRT0AAAACWPlbxI828.txt
6.5 将服务加入开机自启(两台机器同步操作)
$ chmod +x /etc/rc.d/rc.local
$ vi /etc/rc.local
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
/usr/local/nginx/sbin/nginx
$ systemctl enable keepalived
6.6 测试高可用
6.6.1 测试方法1
在 fastdfs1 机器停止 keepalived 服务,查看 vim 是否漂移至 fastdfs2 机器,如果漂移正常,可以测试下上传、下载文件。然后再恢复 fastdfs1 机器的 keepalived 服务,查看
6.6.2 测试方法2
将 fastdfs1 机器关机,然后测试 vip 是否可以正常使用,如正常再启动 fastdfs1 机器,然后查看 fastdfs 服务是否正常启动
-----------------------------------
转自
FastDFS 高可用集群部署_wx645b0963021e1的技术博客_51CTO博客
https://blog.51cto.com/u_16106270/12294746
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2023-12-17 2022年RHCE认证考题解析最新版—RH294环境【转】