Nginx+keepliaved+fastdfs集群安装手册

Nginx+keepliaved+fastdfs集群安装手册

fastDFS架构图

集群安装
 

192.168.52.201 tarcker-group1
192.168.52.202 tarcker-group2
192.168.52.203 storage-group1-1
192.168.52.204 storage-group1-2
192.168.52.205 storage-group2-1
192.168.52.206 storage-group2-2
在需要安装的节点上拷贝以下文件,到 /opt/soft 下

Nginx+keepliaved+fastdfs集群安装手册_第1张图片

第一部分 六台机机器同时进行

a、 安装 gcc。命令: yum install make cmake gcc gcc-c++

b、 安装 libfastcommon

1 上传 libfastcommon-master.zip 到/opt/soft 下 进行解压 libfastcommon-master.zip: 命令: unzip libfastcommon-master.zip -d /usr/local/fast/

2. 进入目录: cd /usr/local/fast/libfastcommon-master/ 进行编译和安装:

命令: ./make.sh

命令: ./make.sh install


注意安装的路径:也就是说,我们的 libfastcommon 默认安装到了
/usr/lib64/这个位置。

3. 进行软件创建。 FastDFS 主程序设置的目录为/usr/local/lib/,所以我们 需要创建/usr/lib64/下的一些核心执行程序的软连接文件。

命令: mkdir /usr/local/lib/

命令: ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so

命令: ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

命令: ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so

命令: ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

c、 安装 FastDFS

1.进入到 cd /opt/soft 下,解压 FastDFS_v5.08.tar.gz 文件

命令: cd /opt/soft 命令: tar -zxvf FastDFS_v5.08.tar.gz -C /usr/local/fast/

2 . 安装编译 命令: cd /usr/local/fast/FastDFS/

编译命令: ./make.sh

安装命令: ./make.sh install

3.因为 FastDFS 服务脚本设置的 bin 目录为/usr/local/bin/下,但是实际我们 安装在了 /usr/bin/下面。所以我们需要修改 FastDFS 配置文件中的路径,也就是需要修改俩个配置文件:

命令: vim /etc/init.d/fdfs_storaged

进行全局替换命令: %s+/usr/local/bin+/usr/bin 命令: vim /etc/init.d/fdfs_trackerd 进行全局替换命令: %s+/usr/local/bin+/usr/bin

第二部分 两台节点配置跟踪器( 192.168.52.201 、 192.168.52.202 节点)

 

1 、进入 cd/etc/fdfs/目录配置跟踪器文件(注意是 192.168.52.201 192.168.52.202节点),把 tracker.conf.sample 文件进行 cope 一份:去修改 tracker.conf 文件

命令: cp tracker.conf.sample tracker.conf

2、 修改 tracker.conf 文件 命令: vim /etc/fdfs/tracker.conf

修改为自己的路径地址: base_path=/fastdfs/tracker

修改上传文件的模式: store_lookup=0

一定要创建之前定义好的目录(/fastdfs/tracker):

命令: mkdir -p /fastdfs/tracker


3、 关闭防火墙:(我们在学习时可以不用考虑防火墙的问题)
vim /etc/sysconfig/iptables
添加: -A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEP
重启: service iptables restart

4、 启动跟踪器

目录命令: cd /fastdfs/tracker/ && ll

启动 tracker 命令: /etc/init.d/fdfs_trackerd start

查看进程命令: ps -ef | grep fdfs

查看启动日志: tail – n 100 – f /fastdfs/tracker/logs/trackerd.log

停止 tracker 命令: /etc/init.d/fdfs_trackerd stop


5、可以设置开机启动跟踪器:(一般生产环境需要开机启动一些服务,如
keepalived、 linux、 tomcat 等等)

命令: vim /etc/rc.d/rc.local
加入配置: /etc/init.d/fdfs_trackerd start

 

第三部分 配置 FastDFS 存储节点( 192.168.52.203 ~192.168.52.206 节点)


四个节点, 同一组配置要相同, 203 204 一组(group1) , 205 206 一组(group2)

1、进入文件目录: cd /etc/fdfs/,进行 copy storage 文件一份

命令: cd /etc/fdfs/

命令: cp storage.conf.sample storage.conf

2、修改 storage.conf 文件

命令: vim /etc/fdfs/storage.conf

修改内容: 203 204 一组(group1) 205 206 一组(group2) disabled=false

group_name=group1 #组名,第一组为 group1 第二组为

group2 port=23000 #storage 端口号,同组的端口号必须相同

base_path=/fastdfs/storage store_path_count=1 #存储路径个数 需要和 store_path 个数匹配 store_path0=/fastdfs/storage #设置存储路径

tracker_server=192.168.52.201:22122 #tracker 服务器的 ip 和端口 tracker_server=192.168.52.202:22122  #多个 tracker 直接添加多条记录 http.server_port=8888 #设置 http 端口号

3、 创建存储目录(需要和 base_path=/fastdfs/storage 保持一致)

四个节点都建立: 命令: mkdir -p /fastdfs/storage


4、 打开防火墙:
命令: vim /etc/sysconfig/iptables
添加: -A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -
j ACCEPT
重启: service iptables restart

5、 启动存储( storage) 需要保证 tracker 已启动

命令: /etc/init.d/fdfs_storaged start

关闭: /etc/init.d/fdfs_storaged stop

查看日志命令: tail -n 100 -f /fastdfs/storage/logs/storaged.log

(初次启动成功后会在/fastdbf/storage/ 目录下创建 data、 logs 俩个目录) 当集群环境能互相知道对方存在的时候,启动成功。

6、 查看 FastDFS storage 是否启动成功

命令: ps -ef | grep fdfs 并且我们进入到/fastdfs/storage/data/文件夹下会看到一些目录文件 命令: cd /fastdfs/storage/data/ && ls
7、 同理,也可以设置开机启动存储器:(一般生产环境需要开机启动一些服
务,如 keepalived、 linux、 tomcat 等等)
命令: vim /etc/rc.d/rc.local
加入配置: /etc/init.d/fdfs_storaged start

8、可以测试一下:如上图, 202 是 leader,我们在 202 上执行
命令: /etc/init.d/fdfs_trackerd stop 查看日志文件: 4 台存储机器节点 都会显示 leader 变更为 201

启动 202 上的 tracker 查看日志 会发现又能连上 202 了。不会报 error
命令: /etc/init.d/fdfs_trackerd start

9、当所有的 tracker 和 storage 节点都启动成功后,我们可以在任意的一 个存储节点上查看存储集群的信息:
命令: /usr/bin/fdfs_monitor /etc/fdfs/storage.conf 集群信息: group1 storage 信息 Group2 storage 信息 到此为止我们的 FastDFS 集群环境已经搭建完成。

 

第四部分 测试文件上传 需要修改配置跟踪器的客户端

 

1 、任意一个跟踪器节点 如 201, 在跟踪器( 192.168.52.201)里 copy 一份 client.conf 文件。

命令: cd /etc/fdfs/

命令: cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf

2、 编辑 client.conf 文件

命令: vim /etc/fdfs/client.conf

修改内容:

base_path=/fastdfs/tracker

tracker_server=192.168.52.201:22122

tracker_server=192.168.52.202:22122

 

3、我们找到命令的脚本位置,并且使用命令,进行文件的上传:

命令: cd /usr/bin/

命令: ls | grep fdfs

4、使用命令 fdfs_upload_file 进行上传操作:

首先,我们先看一下存储器( 192.168.52.203),进入到 data 下,在进入 00 文 件夹 下,发现 00 文件夹下还有一堆文件夹,然后继续进入 00 文件夹下,最终我们所 进入的文件夹为: /fastdfs/storage/data/00/00 里面什么文件都没有。 然后,我们进行上传操作,比如把之前的/opt/soft/文件夹下的某一 个文件上传到 FastDFS 系统中去,在跟踪器( 192.168.52.201)中上传文件,命 令如下:

命 令 : /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/soft/FastDFS_v5.08.tar.gz 最后我们发现,命令执行完毕后,返回一个 group1/M00/00/00/... 的 ID,其实 就 是返回当前所上传的文件在存储器( 192.168.52.203)中的哪一个组、哪一个目 录位置,所以我们查看存储器中的/fastdfs/storage/data/00/00 文件夹位置, 发现已经存在了刚才上传的文件,( 203 204 都能看到这个文件,但是 205 206 肯 定是看不到的,它们是 group2)

 再次上传一个文件,返回的是 group2/… ( 205 206 都能看到这个文件,但 是 203 204 肯定是看不到的,它们是 group1) 是由这个 lookup=0 决定的
测试: 203 宕机后,如果还有文件上传,就上传到 204 上,再启动 203, 204 的
数据会自动同步到 203 上。
到此为止,我们的测试上传文件已经 OK 了。

 

第五部分 配置 nginx,首先 4 个存储节点配置 nginx,然后 2 个跟踪器节点配置 nginx

 

1、首先 4 个存储节点下安装 fastdfs-nginx-module_v1.16.tar.gz 包

进入目录

命令: cd /opt/soft/

解压命令: tar -zxvf /opt/soft/fastdfs-nginx-module_v1.16.tar.gz -C /usr/local/fast/

进入目录: cd /usr/local/fast/fastdfs-nginx-module/src/

编辑配置文件命令: vim /usr/local/fast/fastdfs-nginx-module/src/config

修改内容:去掉下图中的 local 文件层次

  1. 四个存储节点安装 nginx 依赖包 和 nginx,并添加 fastdfs 和 nginx 整合 模块下载需要的依赖库文件:

yum install pcre pcre-devel zlib zlib-devel

解压并安装 nginx,加入 fastdfs-nginx-module

命令: cd /opt/soft/

命令: tar -zxvf nginx-1.12.2.tar.gz -C /usr/local

进入到 nginx目录命令: cd /usr/local/nginx-1.12.2
加入模块命令: ./configure --add-module=/usr/local/fast/fastdfs-nginx-module/src/

重新编译命令: make && make install
复制 fastdfs-ngin-module 中的配置文件,到/etc/fdfs 目录中,如图所示:
命令: cp /usr/local/fast/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/ 进行修改 /etc/fdfs/ 目录下,我们刚刚 copy 过来的 mod_fastdfs.conf 文 件。

命令: vim /etc/fdfs/mod_fastdfs.conf

修改内容:比如连接超时时间、跟踪器路径配置、 url 的 group 配置等

注意:第一组(203 204) 和第二组(205 206) 节点修改内容,只有组名不同

connect_timeout=10

tracker_server=192.168.52.201:22122

tracker_server=192.168.52.202:22122

storage_server_port=23000

url_have_group_name = true

store_path0=/fastdfs/storage

group_name=group1 #第一组为 group1 第二组为 group2

group_count = 2

#追加以下内容

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage

[group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/fastdfs/storage

 

复制 FastDFS 里的 2 个文件,到/etc/fdfs 目录中, 4 个节点 如图所示:

目录命令: cd /usr/local/fast/FastDFS/conf/ Copy

命令: cp http.conf mime.types /etc/fdfs/

创建一个软连接,在/fastdfs/storage 文件存储目录下创建软连接,将其链 接到实际存放数据的目录。

命令: ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00


修改 Nginx 配置文件 4 个节点
命令: cd /usr/local/nginx/conf
命令: vim nginx.conf 修改内容为:

 

listen 8888;

server_name localhost;
location ~/group([0-9])/M00

{ #alias /fastdfs/storage/data;
ngx_fastdfs_module;

 }


注意: nginx 里的端口要和第五步配置 FastDFS 存储中的 storage.conf 文件配
置一致,也就是( http.server_port=8888)

最后检查防火墙,然后我们启动 nginx 服务 4 个节点 启动命令: /usr/local/nginx/sbin/nginx

刚才上传了一个文件, 根据返回的 ID,可以使用这个 ID 用浏览器访问地址:
http://192.168.52.203:8888/group1/M00/00/00/wKgBrVaSvM6AddWWAAVFOL7FJU4.tar.gz就可以下载这个文件。

测试 203 204 如果都可以, 表示 group1 没问题
然后使用 group2 的 id 地址,如果 205 206 都可以访问, 那么安装完成。

运维注意:我们在使用 FastDFS 的时候,需要正常关机,不要使用 kill -9
强杀 FastDFS 进程,不然会在文件上传时出现丢数据的情况。
到此,我们的 FastDFS 与 Nginx 整合完毕!!

第六部分 需要在两个跟踪器上安装 nginx 配置也就是 201 202 节点。以提供反向代理服务,目的是使用统一 的一个 ip 地址对外提供服务


1、 上传 nginx 缓存模块, ngx_cache_purge-2.3.tar.gz 并进行解压:
tar -zxvf ngx_cache_purge-2.3.tar.gz – C /usr/local/fast/

2、 下载依赖库文件: yum install pcre pcre-devel zlib zlib-devel

3、 解压并安装 nginx,加入 ngx_cache_purge (加入缓存模块)

命令: cd /opt/soft/

命令: tar -zxvf nginx-1.12.2.tar.gz -C /usr/local

进入到 nginx

目录命令: cd /usr/local/nginx-1.12.2

加入模块命令: ./configure --add-module=/usr/local/fast/ngx_cache_purge-2.3/src/

重新编译命令: make && make install

 

4、 修改 Nginx 配置文件 配置负载均衡和缓存 2 个跟踪器节点配置一致

命令: cd /usr/local/nginx/conf

命令: vim nginx.conf

events {

worker_connections 1024;

use epoll;

}

http {

include mime.types;

default_type application/octet-stream;

sendfile on;

tcp_nopush on;

keepalive_timeout 65;

#设置缓存

server_names_hash_bucket_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 Cookie $http_cookie;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 90;

proxy_read_timeout 90;

proxy_send_timeout 90;

proxy_buffer_size 16k;

proxy_buffers 4 64k;

proxy_busy_buffers_size 128k;

proxy_temp_file_write_size 128k;

#设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限

proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2

keys_zone=http-chche:200m max_size=1g inactive=30d;

proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp;

# weight 权重 max_fails 失败重试次数 fail_timeout 连接失败超时时间

#设置 group1 的服务器

upstream fdfs_group1 {

server 192.168.52.203:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.52.204:8888 weight=1 max_fails=2 fail_timeout=30s;

}

#设置 group2 的服务器

upstream fdfs_group2 {

server 192.168.52.205:8888 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.52.206:8888 weight=1 max_fails=2 fail_timeout=30s;

}

server {

listen 8000;

server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

#设置 group 的负载均衡参数

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 192.168.1.0/24;

deny all;

proxy_cache_purge http-cache $1$is_args$args;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

}

 

 

 

5、 按以上 nginx 配置文件的要求,创建对应的缓存目录 2 个跟踪器节点都需要:
mkdir -p /fastdfs/cache/nginx/proxy_cache
mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp

 

6、检查防火墙,启动 nginx 即可(注意 nginx 端口号为 8000)
vim /etc/sysconfig/iptables
## 添加如下配置
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
service iptables restart # 重新启动防火墙
/usr/local/nginx/sbin/nginx
ps -ef|grep nginx

 

7、测试,用命令上传文件,使用 http 访问,看是否能访问打开 或者 下载
访问 201 或 202 的地址,都能访问 group1 和 group2 上的文件,那么最
后,我们需要 keepalived,虚拟出一个 vip,对 2 台跟踪器节点做高可用配置


1、 最后我们使用 Keepalived + Nginx 组成的高可用负载均衡集群,做两个 Tracker
节点(201 202)中 Nginx 的负载均衡,从而实现了 分布式高可用文件系统。
修改 2 个节点(可以在 201 202 上接着加 service 模块的配置 也可以另开 2 台机器(假设是 201/202 节点)的 nginx.conf 配置文件:
命令: cd /usr/local/nginx/conf
命令: vim nginx.conf

 

## FastDFS Tracker Proxy 2 台跟踪器的 nginx 代理服务

upstream fastdfs_tracker {

server 192.168.52.201:8000 weight=1 max_fails=2 fail_timeout=30s;

server 192.168.52.202:8000 weight=1 max_fails=2 fail_timeout=30s;

}

server {

listen 80;

server_name localhost;

location / {

root html;

index index.html index.htm;

}

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root html;

}

## FastDFS Proxy 代理路径设置为 /fastdfs

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_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

client_max_body_size 300m;

}

}

 

注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失。
通过虚拟 IP 访问文件测试,测试没问题的话,整个集群环境搭建完成,整体架构图如下:
为了节约服务器 跟踪器 tracker 和 存储器 storage 节点可以放在一个服务器上
关闭集群步骤:
1、 201.202 两台一级负载节点

关闭 keepalived 命令: service keepalived stop

关闭 nginx命令: /usr/local/nginx/sbin/nginx –s stop
2、 201 202 两台二级负载节点,跟踪器节点

关闭 nginx 命令: /usr/local/nginx/sbin/nginx –s stop

关闭 trackerd 跟踪器命令: /etc/init.d/fdfs_trackerd stop
3、 203 204 205 206 四台三季负载节点,存储节点

关闭 nginx 命令: /usr/local/nginx/sbin/nginx –s stop
关闭 storage 存储器命令: /etc/init.d/fdfs_storaged stop


注意:千万不要使用 kill -9 命令强杀 FastDFS 进程,否则可能会导致 binlog 数据丢失
启动命令:
启动 tracker 命令: /etc/init.d/fdfs_trackerd start
查看进程命令: ps -el | grep fdfs
启动 storage 命令: /etc/init.d/fdfs_storaged start
查看进程命令: ps -el | grep fdfs
启动 nginx 命令: /usr/local/nginx/sbin/nginx
停止命令:
停止 tracker 命令: /etc/init.d/fdfs_trackerd stop
关闭 storage 命令: /etc/init.d/fdfs_storaged stop
关闭 nginx 命令: /usr/local/nginx/sbin/nginx -s stop

你可能感兴趣的:(Linux高可用)