手把手教你搭建FastDFS集群(下)
2017-06-20 00:00
417 查看
由于博客图片量大,篇幅太长,因此需要分上,中,下三篇博客来写,上篇和中篇我们已经一起学习完了,这篇博客我们一起学习下剩余部分。
一,配置反向代理
我们需要在两个跟踪器上安装的nginx(也就是192.168.156.5和192.168.156.6)以提供反向代理服务,目的是使用统一的一个IP地址对外提供服务。为了避免一些不必要的错误,我们先把其它四台虚拟机的窗口关掉。
1.解压ngx_cache_purge-2.3.tar.gz,解压命令:tar -zxvf ngx_cache_purge-2.3.tar.gz -C / usr / local / fast /,如下图所示(另一台设备就不粘贴图片了)。
解压完之后我们在在/ usr /本地/快/目录下可以看到多了一个ngx_cache_purge-2.3文件夹。如下图所示。
2.下载需要的依赖库,在两台设备上依次执行下面四条命令。
[html] 查看纯文本
yum安装pcre
yum安装pcre-devel
yum安装zlib
yum安装zlib-devel
3.为两台设备都安装nginx,我们在XShell的下方的输入框中输入命令:cd / usr / local / software /并敲回车,两个窗口都会进入/ usr / local / software目录下,然后在下面的输入框再输入 “LL” 来查看在/ usr /本地/软件目录下的文件,如下图所示(只有输入框左边的图标是多窗口的情况下才能一次作用所有窗口,如果当前是单窗口图标,就如下图那样选择全部XSHELL)。
接着,我们在下面的输入框中输入:tar -zxvf nginx-1.6.2.tar.gz -C / usr / local /并按回车,会在两个窗口同时执行解压操作如下图所示。
接下来我们在下面的输入框中输入:cd / usr / local并按回车,两台设备都进入/usr/local/nginx-1.6.2目录下。如下图所示。
接着,在下面的输入框中加入模块命令:./configure --add-module = / usr / local / fast / ngx_cache_purge-2.3,回车就会在两台设备上都执行添加缓存模块并会检查环境。
接着在下面的输入框中输入命令:make && make install,回车就会在两台设备上都执行编译安装如下图所示。
下面我们需要修改下两台设备在/ usr /本地/ nginx的/ conf目录/目录下的nginx.conf文件,大家可以直接把下面代码替换这个目录下的该文件,也可以直接到:HTTP://下载。 csdn .NET / detail / u012453843 / 9803673这个地址下载nginx.conf文件来替换。不过由于我们搭建环境的虚拟机IP可能不一样,因此,我们需要根据实际情况修改下IP等信息(注意192.168.156.5和192.168.156.6这两台设备的在/ usr /本地/ nginx的/ CONF /目录下的nginx.conf都要修改)
[html] 查看纯文本
#user nobody
worker_processes 1;
#error_log logs / error.log;
#error_log logs / error.log notice;
#error_log logs / error.log info;
#pid logs / nginx.pid;
事件{
worker_connections 1024;
使用epoll
}
http {
包括mime.types;
default_type application / octet-stream;
#log_format main'$ remote_addr - $ remote_user [$ time_local]“$ request”'
#'$ status $ body_bytes_sent“$ http_referer”'
#'“$ http_user_agent”“$ http_x_forwarded_for”';
#access_log logs / access.log main;
发送文件;
tcp_nopush on;
#tcp_nopush on
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#设置缓存
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect关闭
proxy_set_header主机$ http_host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_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_cache_path / fastdfs / cache / nginx / proxy_cache levels = 1 :2
keys_zone = http -cache:200m max_size = 1g inactive = 30d ;
proxy_temp_path / fastdfs / cache / nginx / proxy_cache / tmp;
#1组的服务设置
上游fdfs_group1 {
服务器192.168.156.7:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.8:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
#第2组的服务设置
上游fdfs_group2 {
服务器192.168.156.9:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.10:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
服务器{
听8000;
server_name localhost;
#charset koi8-r
#access_log logs / host.access.log main;
#1组的负载均衡配置
位置/ group1 / M00 {
proxy_next_upstream http_502 http_504错误超时invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $ uri $ is_args $ args;
#对应组1的服务设置
proxy_pass http:// fdfs_group1;
到期30d;
}
位置/ group2 / M00 {
proxy_next_upstream http_502 http_504错误超时invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $ uri $ is_args $ args;
#对应组2的服务设置
proxy_pass http:// fdfs_group2;
到期30d;
}
位置〜/ purge(/.*){
允许127.0.0.1;
允许192.168.156.0/24;
拒绝所有
proxy_cache_purge http-cache $ 1 $ is_args $ args;
}
位置 / {
根html;
index index.html index.htm;
}
#error_page 404 /404.html;
#将服务器错误页面重定向到静态页面/50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
根html;
}
#代码PHP脚本到Apache在127.0.0.1:80上监听
#
#location〜\ .php $ {
#proxy_pass http://127.0.0.1;
#}
#将PHP脚本传递给FastCGI服务器,侦听127.0.0.1:9000
#
#location〜\ .php $ {
#root html;
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME / scripts $ fastcgi_script_name;
#include fastcgi_params;
#}
#deny访问.htaccess文件,如果是Apache的文档根
#同意nginx的
#
#location〜/\.ht {
#deny all;
#}
}
#另一个使用IP-,基于名称和端口配置的虚拟主机
#
#server {
#听8000;
#听somename:8080;
#server_name somename alias another.alias;
# 位置 / {
#root html;
#index index.html index.htm;
#}
#}
#HTTPS服务器
#
#server {
#listen 443 ssl;
#server_name localhost;
#ssl_certificate cert.pem;
#ssl_certificate_key cert.key;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
# 位置 / {
#root html;
#index index.html index.htm;
#}
#}
}
修改完nginx.conf文件之后,我们下面需要创建/ fastdfs /缓存/ nginx的/ proxy_cache和/ fastdfs /缓存/ nginx的/ proxy_cache的/ tmp目录,这是因为我们在nginx.conf文件中配置缓存路径时指定了该目录,但是这两个目录目前还不存在,因此我们需要在192.168.156.5和192.168.156.6这两台设备上都创建下这两个目录,由于涉及到多级,因此需要递归创建目录,使用命令:mkdir -p / fastdfs / cache / nginx / proxy_cache和mkdir -p / fastdfs / cache / nginx / proxy_cache / tmp,如下图所示。
由于我们配置了两个跟踪器的访问端口是8000,而我们的防火墙是不允许访问该端口的,因此我们需要修改下防火墙,使其允许访问8000端口,这个操作我在上篇和中篇都介绍过了,这里就不啰嗦了。
下面我们便来启动这两台设备上的nginx。启动所用的命令是/ usr / local / nginx / sbin / nginx。启动完后之后,可以使用ps -ef | grep nginx命令来查看nginx是否正常启动,如果看到根4027 1 0 08:18?00:00:00 nginx:master进程/ usr / local / nginx / sbin / nginx这条信息,说明正常启动了。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / local / nginx / sbin / nginx
[root @ itcast05 conf]#ps -ef | grep nginx
根4027 1 0 08:18?00:00:00 nginx:主进程/ usr / local / nginx / sbin / nginx
没有人4028 4027 0 08:18?00:00:00 nginx:worker进程
没人4029 4027 0 08:18?00:00:00 nginx:缓存管理器进程
没有人4030 4027 0 08:18?00:00:00 nginx:缓存加载器进程
root 4032 1522 0 08:18 pts / 0 00:00:00 grep nginx
两台设备都启动完nginx的之后,我们再在192.168.156.5上上传两次次图片,第一次返回的路径是在组1下,第二次返回的路径是在组2下。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组1 / M00 / 00/00 / wKicCFjkOVGAMlQvAAHk-VzqZ6w757.jpg
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组2 / M00 / 00/00 / wKicCVjkOeaAVb0dAAHk-VzqZ6w123.jpg
[root @ itcast05 conf]#
由于我们在192.168.156.5和192.168.156.6上配置了代理,代理端口是8000,所以我们可以访问这两个IP的8000端口来访问我们刚才上传的图片,如下图所示(我们访问的http:// 192.168.156.5:8000/group1/M00/00/00/wKicCFjkOVGAMlQvAAHk-VzqZ6w757.jpg也能访问到该图片)。这说明我们配置的代理完全没问题。
我们知道,nginx的对外提供服务有可能碰到服务挂掉的时候,这时候高可用就显得异常重要了,因此现在我们搭建一个nginx的和KEEPALIVED结合实现的nginx的集群高可用的环境,大家可以参考的http: //blog.csdn .net / u012453843 / article / details / 69668663这篇博客进行学习。
我们现在要把KEEPALIVED实现的nginx的集群高可用应用到我们的FastDFS集群当中,现在用于搭建nginx的集群高可用的设备是192.168.156.11和192.168.156.12,我们只需要修改下这两台设备的nginx的。的conf文件,配置文件如下
[html] 查看纯文本
#user nobody
worker_processes 1;
#error_log logs / error.log;
#error_log logs / error.log notice;
#error_log logs / error.log info;
#pid logs / nginx.pid;
事件{
worker_connections 1024;
}
http {
包括mime.types;
default_type application / octet-stream;
#log_format main'$ remote_addr - $ remote_user [$ time_local]“$ request”'
#'$ status $ body_bytes_sent“$ http_referer”'
#'“$ http_user_agent”“$ http_x_forwarded_for”';
#access_log logs / access.log main;
发送文件;
#tcp_nopush on
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
上游fastdfs_tracker {
服务器192.168.156.5:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.6:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
服务器{
听80
server_name localhost;
#charset koi8-r
#access_log logs / host.access.log main;
location / fastdfs {
根html;
index index.html index.htm;
proxy_pass http:// fastdfs_tracker /;
proxy_set_header主机$ 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;
}
#error_page 404 /404.html;
#将服务器错误页面重定向到静态页面/50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
根html;
}
}
}
我们对配置文件做了两处修改,一处是添加了负载均衡上游fastdfs_tracker,如下所示我们是把192.168.156.5和192.168.156.6两台设备作为追踪器,现在我们加了一层nginx来代理这两个跟踪器。
[html] 查看纯文本
上游fastdfs_tracker {
服务器192.168.156.5:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.6:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
第二处修改是,添加了一个位置,并且匹配规则是路径当中有fastdfs如下所示。
[html] 查看纯文本
location / fastdfs {
根html;
index index.html index.htm;
proxy_pass http:// fastdfs_tracker /;
proxy_set_header主机$ 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;
}
做好了修改之后,我们只需重新启动192.168.156.11和192.168.156.12这两台设备的nginx的即可。
[html] 查看纯文本
[root @ nginx1 conf]#/ usr / local / nginx / sbin / nginx -s reload
[root @ nginx1 conf]#
[html] 查看纯文本
[root @ nginx2 conf]#/ usr / local / nginx / sbin / nginx -s reload
[root @ nginx2 conf]#
这样我们便配置好了虚拟IP,现在我们从192.168.156.5再上传一张图片,如下所示。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组1 / M00 / 00/00 / wKicB1jqnPqARiT6AAHk-VzqZ6w956.jpg
[root @ itcast05 conf]#
我们现在就用虚拟IP192.168.156.110来访我们刚才上传的图片,只是注意在地址栏中要记得输入fastdfs(这是我们nginx.conf文件中位置/ fastdfs {}规则规定的)如下图所示,发现,我们通过虚拟IP便可以访问我们上传的图片了。这样的好处是,对用户来说,只需要访问这个虚拟IP就可以了,不用关心FastDFS集群内部的转发机制。
这样我们的FastDFS集群便搭建完了,搭建完后的集群图如下图所示。这个集群当中192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10这四台设备以8888端口对外提供服务,我们使用追踪器跟踪器管理这四台存储设备,两个跟踪器的nginx的对外提供的端口号是8000,也就是我们可以使用两台跟踪的任何一台设备的IP并且使用端口8000来访问存储在存储上的资源文件。其实我们完全可以在两台跟踪设备上搭建KEEPALIVED和nginx的相结合的高可用环境并且对外提供虚拟IP192.168.156.110和端口80来访问资源文件。只不过这里为了展示多层nginx的负载均衡所以才在192.168.156.11和192.168.156.12上专门搭建了KEEPALIVED和nginx的相结合的高可用环境,由这两台设备对外提供虚拟IP服务,由于端口使用了默认的80,因此我们在使用虚拟IP192。 168.156.110访问图片的时候才不用输入端口号的。
备注:启动集群步骤
1.启动6台设备(192.168.156.5,192.168.156.6,192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10)的nginx的(其中192.168.156.11和192.168.156.12配置了KEEPALIVED开机自启动,顺带会启动nginx的,因此这两台设备不用启动nginx的)
2.启动跟踪器(192.168.156.5和192.168.156.6,启动命令:/etc/init.d/fdfs_trackerd start)
启动存储(192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10,启动命令:/etc/init.d/fdfs_storaged start)
这样FastDFS集群便都启动完了。
一,配置反向代理
我们需要在两个跟踪器上安装的nginx(也就是192.168.156.5和192.168.156.6)以提供反向代理服务,目的是使用统一的一个IP地址对外提供服务。为了避免一些不必要的错误,我们先把其它四台虚拟机的窗口关掉。
1.解压ngx_cache_purge-2.3.tar.gz,解压命令:tar -zxvf ngx_cache_purge-2.3.tar.gz -C / usr / local / fast /,如下图所示(另一台设备就不粘贴图片了)。
解压完之后我们在在/ usr /本地/快/目录下可以看到多了一个ngx_cache_purge-2.3文件夹。如下图所示。
2.下载需要的依赖库,在两台设备上依次执行下面四条命令。
[html] 查看纯文本
yum安装pcre
yum安装pcre-devel
yum安装zlib
yum安装zlib-devel
3.为两台设备都安装nginx,我们在XShell的下方的输入框中输入命令:cd / usr / local / software /并敲回车,两个窗口都会进入/ usr / local / software目录下,然后在下面的输入框再输入 “LL” 来查看在/ usr /本地/软件目录下的文件,如下图所示(只有输入框左边的图标是多窗口的情况下才能一次作用所有窗口,如果当前是单窗口图标,就如下图那样选择全部XSHELL)。
接着,我们在下面的输入框中输入:tar -zxvf nginx-1.6.2.tar.gz -C / usr / local /并按回车,会在两个窗口同时执行解压操作如下图所示。
接下来我们在下面的输入框中输入:cd / usr / local并按回车,两台设备都进入/usr/local/nginx-1.6.2目录下。如下图所示。
接着,在下面的输入框中加入模块命令:./configure --add-module = / usr / local / fast / ngx_cache_purge-2.3,回车就会在两台设备上都执行添加缓存模块并会检查环境。
接着在下面的输入框中输入命令:make && make install,回车就会在两台设备上都执行编译安装如下图所示。
下面我们需要修改下两台设备在/ usr /本地/ nginx的/ conf目录/目录下的nginx.conf文件,大家可以直接把下面代码替换这个目录下的该文件,也可以直接到:HTTP://下载。 csdn .NET / detail / u012453843 / 9803673这个地址下载nginx.conf文件来替换。不过由于我们搭建环境的虚拟机IP可能不一样,因此,我们需要根据实际情况修改下IP等信息(注意192.168.156.5和192.168.156.6这两台设备的在/ usr /本地/ nginx的/ CONF /目录下的nginx.conf都要修改)
[html] 查看纯文本
#user nobody
worker_processes 1;
#error_log logs / error.log;
#error_log logs / error.log notice;
#error_log logs / error.log info;
#pid logs / nginx.pid;
事件{
worker_connections 1024;
使用epoll
}
http {
包括mime.types;
default_type application / octet-stream;
#log_format main'$ remote_addr - $ remote_user [$ time_local]“$ request”'
#'$ status $ body_bytes_sent“$ http_referer”'
#'“$ http_user_agent”“$ http_x_forwarded_for”';
#access_log logs / access.log main;
发送文件;
tcp_nopush on;
#tcp_nopush on
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#设置缓存
server_names_hash_bucket_size 128;
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 300m;
proxy_redirect关闭
proxy_set_header主机$ http_host;
proxy_set_header X-Real-IP $ remote_addr;
proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_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_cache_path / fastdfs / cache / nginx / proxy_cache levels = 1 :2
keys_zone = http -cache:200m max_size = 1g inactive = 30d ;
proxy_temp_path / fastdfs / cache / nginx / proxy_cache / tmp;
#1组的服务设置
上游fdfs_group1 {
服务器192.168.156.7:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.8:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
#第2组的服务设置
上游fdfs_group2 {
服务器192.168.156.9:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.10:8888 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
服务器{
听8000;
server_name localhost;
#charset koi8-r
#access_log logs / host.access.log main;
#1组的负载均衡配置
位置/ group1 / M00 {
proxy_next_upstream http_502 http_504错误超时invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $ uri $ is_args $ args;
#对应组1的服务设置
proxy_pass http:// fdfs_group1;
到期30d;
}
位置/ group2 / M00 {
proxy_next_upstream http_502 http_504错误超时invalid_header;
proxy_cache http-cache;
proxy_cache_valid 200 304 12h;
proxy_cache_key $ uri $ is_args $ args;
#对应组2的服务设置
proxy_pass http:// fdfs_group2;
到期30d;
}
位置〜/ purge(/.*){
允许127.0.0.1;
允许192.168.156.0/24;
拒绝所有
proxy_cache_purge http-cache $ 1 $ is_args $ args;
}
位置 / {
根html;
index index.html index.htm;
}
#error_page 404 /404.html;
#将服务器错误页面重定向到静态页面/50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
根html;
}
#代码PHP脚本到Apache在127.0.0.1:80上监听
#
#location〜\ .php $ {
#proxy_pass http://127.0.0.1;
#}
#将PHP脚本传递给FastCGI服务器,侦听127.0.0.1:9000
#
#location〜\ .php $ {
#root html;
#fastcgi_pass 127.0.0.1:9000;
#fastcgi_index index.php;
#fastcgi_param SCRIPT_FILENAME / scripts $ fastcgi_script_name;
#include fastcgi_params;
#}
#deny访问.htaccess文件,如果是Apache的文档根
#同意nginx的
#
#location〜/\.ht {
#deny all;
#}
}
#另一个使用IP-,基于名称和端口配置的虚拟主机
#
#server {
#听8000;
#听somename:8080;
#server_name somename alias another.alias;
# 位置 / {
#root html;
#index index.html index.htm;
#}
#}
#HTTPS服务器
#
#server {
#listen 443 ssl;
#server_name localhost;
#ssl_certificate cert.pem;
#ssl_certificate_key cert.key;
#ssl_session_cache shared:SSL:1m;
#ssl_session_timeout 5m;
#ssl_ciphers HIGH:!aNULL:!MD5;
#ssl_prefer_server_ciphers on;
# 位置 / {
#root html;
#index index.html index.htm;
#}
#}
}
修改完nginx.conf文件之后,我们下面需要创建/ fastdfs /缓存/ nginx的/ proxy_cache和/ fastdfs /缓存/ nginx的/ proxy_cache的/ tmp目录,这是因为我们在nginx.conf文件中配置缓存路径时指定了该目录,但是这两个目录目前还不存在,因此我们需要在192.168.156.5和192.168.156.6这两台设备上都创建下这两个目录,由于涉及到多级,因此需要递归创建目录,使用命令:mkdir -p / fastdfs / cache / nginx / proxy_cache和mkdir -p / fastdfs / cache / nginx / proxy_cache / tmp,如下图所示。
由于我们配置了两个跟踪器的访问端口是8000,而我们的防火墙是不允许访问该端口的,因此我们需要修改下防火墙,使其允许访问8000端口,这个操作我在上篇和中篇都介绍过了,这里就不啰嗦了。
下面我们便来启动这两台设备上的nginx。启动所用的命令是/ usr / local / nginx / sbin / nginx。启动完后之后,可以使用ps -ef | grep nginx命令来查看nginx是否正常启动,如果看到根4027 1 0 08:18?00:00:00 nginx:master进程/ usr / local / nginx / sbin / nginx这条信息,说明正常启动了。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / local / nginx / sbin / nginx
[root @ itcast05 conf]#ps -ef | grep nginx
根4027 1 0 08:18?00:00:00 nginx:主进程/ usr / local / nginx / sbin / nginx
没有人4028 4027 0 08:18?00:00:00 nginx:worker进程
没人4029 4027 0 08:18?00:00:00 nginx:缓存管理器进程
没有人4030 4027 0 08:18?00:00:00 nginx:缓存加载器进程
root 4032 1522 0 08:18 pts / 0 00:00:00 grep nginx
两台设备都启动完nginx的之后,我们再在192.168.156.5上上传两次次图片,第一次返回的路径是在组1下,第二次返回的路径是在组2下。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组1 / M00 / 00/00 / wKicCFjkOVGAMlQvAAHk-VzqZ6w757.jpg
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组2 / M00 / 00/00 / wKicCVjkOeaAVb0dAAHk-VzqZ6w123.jpg
[root @ itcast05 conf]#
由于我们在192.168.156.5和192.168.156.6上配置了代理,代理端口是8000,所以我们可以访问这两个IP的8000端口来访问我们刚才上传的图片,如下图所示(我们访问的http:// 192.168.156.5:8000/group1/M00/00/00/wKicCFjkOVGAMlQvAAHk-VzqZ6w757.jpg也能访问到该图片)。这说明我们配置的代理完全没问题。
我们知道,nginx的对外提供服务有可能碰到服务挂掉的时候,这时候高可用就显得异常重要了,因此现在我们搭建一个nginx的和KEEPALIVED结合实现的nginx的集群高可用的环境,大家可以参考的http: //blog.csdn .net / u012453843 / article / details / 69668663这篇博客进行学习。
我们现在要把KEEPALIVED实现的nginx的集群高可用应用到我们的FastDFS集群当中,现在用于搭建nginx的集群高可用的设备是192.168.156.11和192.168.156.12,我们只需要修改下这两台设备的nginx的。的conf文件,配置文件如下
[html] 查看纯文本
#user nobody
worker_processes 1;
#error_log logs / error.log;
#error_log logs / error.log notice;
#error_log logs / error.log info;
#pid logs / nginx.pid;
事件{
worker_connections 1024;
}
http {
包括mime.types;
default_type application / octet-stream;
#log_format main'$ remote_addr - $ remote_user [$ time_local]“$ request”'
#'$ status $ body_bytes_sent“$ http_referer”'
#'“$ http_user_agent”“$ http_x_forwarded_for”';
#access_log logs / access.log main;
发送文件;
#tcp_nopush on
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
上游fastdfs_tracker {
服务器192.168.156.5:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.6:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
服务器{
听80
server_name localhost;
#charset koi8-r
#access_log logs / host.access.log main;
location / fastdfs {
根html;
index index.html index.htm;
proxy_pass http:// fastdfs_tracker /;
proxy_set_header主机$ 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;
}
#error_page 404 /404.html;
#将服务器错误页面重定向到静态页面/50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
根html;
}
}
}
我们对配置文件做了两处修改,一处是添加了负载均衡上游fastdfs_tracker,如下所示我们是把192.168.156.5和192.168.156.6两台设备作为追踪器,现在我们加了一层nginx来代理这两个跟踪器。
[html] 查看纯文本
上游fastdfs_tracker {
服务器192.168.156.5:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
服务器192.168.156.6:8000 weight = 1 max_fails = 2 fail_timeout = 30s ;
}
第二处修改是,添加了一个位置,并且匹配规则是路径当中有fastdfs如下所示。
[html] 查看纯文本
location / fastdfs {
根html;
index index.html index.htm;
proxy_pass http:// fastdfs_tracker /;
proxy_set_header主机$ 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;
}
做好了修改之后,我们只需重新启动192.168.156.11和192.168.156.12这两台设备的nginx的即可。
[html] 查看纯文本
[root @ nginx1 conf]#/ usr / local / nginx / sbin / nginx -s reload
[root @ nginx1 conf]#
[html] 查看纯文本
[root @ nginx2 conf]#/ usr / local / nginx / sbin / nginx -s reload
[root @ nginx2 conf]#
这样我们便配置好了虚拟IP,现在我们从192.168.156.5再上传一张图片,如下所示。
[html] 查看纯文本
[root @ itcast05 conf]#/ usr / bin / fdfs_upload_file /etc/fdfs/client.conf /usr/local/3.jpg
组1 / M00 / 00/00 / wKicB1jqnPqARiT6AAHk-VzqZ6w956.jpg
[root @ itcast05 conf]#
我们现在就用虚拟IP192.168.156.110来访我们刚才上传的图片,只是注意在地址栏中要记得输入fastdfs(这是我们nginx.conf文件中位置/ fastdfs {}规则规定的)如下图所示,发现,我们通过虚拟IP便可以访问我们上传的图片了。这样的好处是,对用户来说,只需要访问这个虚拟IP就可以了,不用关心FastDFS集群内部的转发机制。
这样我们的FastDFS集群便搭建完了,搭建完后的集群图如下图所示。这个集群当中192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10这四台设备以8888端口对外提供服务,我们使用追踪器跟踪器管理这四台存储设备,两个跟踪器的nginx的对外提供的端口号是8000,也就是我们可以使用两台跟踪的任何一台设备的IP并且使用端口8000来访问存储在存储上的资源文件。其实我们完全可以在两台跟踪设备上搭建KEEPALIVED和nginx的相结合的高可用环境并且对外提供虚拟IP192.168.156.110和端口80来访问资源文件。只不过这里为了展示多层nginx的负载均衡所以才在192.168.156.11和192.168.156.12上专门搭建了KEEPALIVED和nginx的相结合的高可用环境,由这两台设备对外提供虚拟IP服务,由于端口使用了默认的80,因此我们在使用虚拟IP192。 168.156.110访问图片的时候才不用输入端口号的。
备注:启动集群步骤
1.启动6台设备(192.168.156.5,192.168.156.6,192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10)的nginx的(其中192.168.156.11和192.168.156.12配置了KEEPALIVED开机自启动,顺带会启动nginx的,因此这两台设备不用启动nginx的)
2.启动跟踪器(192.168.156.5和192.168.156.6,启动命令:/etc/init.d/fdfs_trackerd start)
启动存储(192.168.156.7,192.168.156.8,192.168.156.9,192.168.156.10,启动命令:/etc/init.d/fdfs_storaged start)
这样FastDFS集群便都启动完了。
相关文章推荐
- 手把手教你搭建FastDFS集群(中)
- 手把手搭建集群系列(一)——FastDFS
- 手把手教你搭建FastDFS集群(下)
- FastDFS集群:手把手教你搭建分布式文件系统FastDFS集群(上)
- FastDFS集群:手把手教你搭建分布式文件系统FastDFS集群(中)
- FastDFS集群:手把手教你搭建分布式文件系统FastDFS集群(下)
- 手把手教你搭建FastDFS集群(中)
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
- CentOS 搭建 FastDFS-5.0.5集群
- fastdfs集群搭建
- FastDFS的介绍与相关知识,以及集群搭建
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
- 【redis学习(一)】手把手教你windows下的redis安装以及集群搭建
- 分布式文件存储 搭建FastDFS-5.0.5集群
- 手把手教你搭建FastDFS集群(上)
- fastDFS集群理解+搭建笔记
- FastDFS集群环境搭建
- 手把手教你:Hadoop 2.3.0 分布式集群搭建图文
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群
- 分布式存储 CentOS6.5虚拟机环境搭建FastDFS-5.0.5集群(转载-2)