标签:monit 端口号 防火 编辑 rtu 客户端 重要 访问权限 smtp
CentOS6.5
FastDFS v5.05
libfastcommon- - master.zip(是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库)
fastdfs- - nginx- - module_v1.16.tar.gz
nginx- - 1.6.2.tar.gz
fastdfs_client_java._v1.25.tar.gz
描述 |
IP地址 |
虚拟机名称 |
用户名 |
分组 |
跟踪服务器1 |
192.168.1.170 |
tracker01_170 |
tracker01 |
|
跟踪服务器2 |
192.168.1.180 |
tracker02_180 |
tracker02 |
|
存储服务器1 |
192.168.1.171 |
storage01_g1_171 |
storage01 |
group1 |
存储服务器2 |
192.168.1.172 |
storage02_g1_172 |
storage02 |
group1 |
存储服务器3 |
192.168.1.173 |
storage03_g2_173 |
storage03 |
group2 |
存储服务器4 |
192.168.1.174 |
storage04_g2_174 |
storage04 |
group2 |
存储服务器5 |
192.168.1.175 |
storage05_g3_175 |
storage05 |
group3 |
存储服务器6 |
192.168.1.176 |
storage06_g3_176 |
storage06 |
group3 |
# yum install make cmake gcc gcc-c++
# cd /usr/local/src/
# unzip libfastcommon-master.zip
# cd libfastcommon-master
# ./make.sh
# ./make.sh install
libfastcommon 默认安装到了
/usr/lib64/libfastcommon.so
/usr/lib64/libfdfsclient.so
# 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
# cd /usr/local/src/
# tar -zxvf FastDFS_v5.05.tar.gz
# cd FastDFS
# ./make.sh
# ./make.sh install
采用默认安装的方式安装,安装后的相应文件与目录:
A、服务脚本在:
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_tracker
B、配置文件在(样例配置文件):
/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample
C、命令工具在/usr/bin/目录下的:
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
stop.sh
restart.sh
# cd /usr/bin/
# ls | grep fdfs
因此需要修改 FastDFS 服务脚本中相应的命令路径,也就是把/etc/init.d/fdfs_storaged和/etc/init.d/fdfs_tracker 两个脚本中的/usr/local/bin 修改成/usr/bin:
# vi /etc/init.d/fdfs_trackerd
使用查找替换命令进统一修改::%s+/usr/local/bin+/usr/bin
# vi /etc/init.d/fdfs_storaged
使用查找替换命令进统一修改::%s+/usr/local/bin+/usr/bin
2. 配置FastDFS跟踪器Tracker(192.168.1.170,192.168.1.180)
# cd /etc/fdfs/
# cp tracker.conf.sample tracker.conf
# vi /etc/fdfs/tracker.conf
修改的内容如下:
disabled=false #启用配置文件
port=22122 #tracker 的端口号,一般采用 22122 这个默认端口
base_path=/fastdfs/tracker #tracker 的数据文件和日志目录
# the method of selecting group to upload files
# 0: round robin
# 1: specify group
# 2: load balance, select the max free space group to upload file
store_lookup=0(采取轮巡方式选择要上传的组进行存储,默认2 选择最大空闲空间的组)
(其它参数保留默认配置,附跟踪器配置文件/conf/tracker.conf)
# mkdir -p /fastdfs/tracker
# vi /etc/sysconfig/iptables
添加如下端口行:
## FastDFS Tracker Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重启防火墙:
# service iptables restart
# /etc/init.d/fdfs_trackerd start
(初次成功启动,会在/fastdfs/tracker 目录下创建 data、logs 两个目录)可以通过以下两个方法查看 tracker 是否启动成功:
# netstat -unltp|grep fdfs
# tail -100f /fastdfs/tracker/logs/trackerd.log
# /etc/init.d/fdfs_trackerd stop
# vi /etc/rc.d/rc.local
添加以下内容:
## FastDFS Tracker
/etc/init.d/fdfs_trackerd start
# cd /etc/fdfs/
# cp storage.conf.sample storage.conf
# vi /etc/fdfs/storage.conf
修改的内容如下:
disabled=false #启用配置文件
group_name=group1 #组名(第一组为 group1,第二组为 group2)
port=23000 #storage 的端口号,同一个组的 storage 端口号必须相同
base_path=/fastdfs/storage #设置 storage 的日志目录
store_path0=/fastdfs/storage #存储路径
store_path_count=1 #存储路径个数,需要和 store_path 个数匹配
tracker_server=192.168.1.170:22122 #tracker 服务器的 IP 地址和端口
tracker_server=192.168.1.180:22122 #多个 tracker 直接添加多条配置
http.server_port=8888 #设置 http 端口号
(其它参数保留默认配置,附存储节点配置文件/conf/storage.conf)
# mkdir -p /fastdfs/storage
# vi /etc/sysconfig/iptables
添加如下端口行:
## FastDFS Storage Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重启防火墙:
# service iptables restart
# /etc/init.d/fdfs_storaged start
(初次成功启动,会在/fastdfs/storage 目录下创建数据目录 data 和日志目录 logs)
各节点启动动,使用 tail -f /fastdfs/storage/logs/storaged.log 命令监听存储节点日志,可以
看到存储节点链接到跟踪器,并提示哪一个为 leader 跟踪器。同时也会看到同一组中的其他节点加入
进来的日志信息。
查看 23000 端口监听情况:
# netstat -unltp|grep fdfs
所有 Storage 节点都启动之后,可以在任一 Storage 节点上使用如下命令查看集群信息:
# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# /etc/init.d/fdfs_storaged stop
# vi /etc/rc.d/rc.local
添加:
## FastDFS Storage
/etc/init.d/fdfs_storaged start
# cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
# vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker
tracker_server=192.168.1.170:22122
tracker_server=192.168.1.180:22122
FastDFS上传命令如下:
# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/test.png
group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
能返回文件ID号,说明上传成功。
在group2下(173和174)的数据目录下可找到刚才上传的文件:
# ll /fastdfs/storage/data/00/00/
FastDFS 通过 Tracker 服务器,将文件放在 Storage 服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设 Tracker 服务器将文件上传到了 192.168.1.135,上传成功后文件 ID已经返回给客户端。此时 FastDFS 存储集群机制会将这个文件同步到同组存储 192.168.1.136,在文件还没有复制完成的情况下,客户端如果用这个文件 ID 在 192.168.1.136 上取文件,就会出现文件无法访问的错误。而 fastdfs-nginx-module 可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。(解压后的 fastdfs-nginx-module 在 nginx 安装时使用)
# cd /usr/local/src/
# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
# vi /usr/local/src/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
修改为:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
(注意:这个路径修改是很重要的,不然在 nginx 编译的时候会报错的)
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
# cd /usr/local/src/
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
# make && make install
# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
# vi /etc/fdfs/mod_fastdfs.conf
connect_timeout=10
base_path=/tmp
tracker_server=192.168.1.170:22122
tracker_server=192.168.1.180:22122
storage_server_port=23000
group_name=group1
url_have_group_name = true
store_path0=/fastdfs/storage
group_count = 3
[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
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/fastdfs/storage
group_name=group2
group_name=group3
(附配置文件/conf/mod_fastdfs.conf)
# cd /usr/local/src/FastDFS/conf
# cp http.conf mime.types /etc/fdfs/
# ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
# vi /usr/local/nginx/conf/nginx.conf
部分配置如下:
user storage01;
server {
listen 8888;
server_name localhost;
location /group1/M00 {
#alias /fastdfs/storage/data;
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
(附配置文件/conf/storage_nginx/nginx.conf)
注意、说明:
A、8888 端口值是要与/etc/fdfs/storage.conf 中的 http.server_port=8888 相对应,
因为 http.server_port 默认为 8888,如果想改成 80,则要对应修改过来。
B、Storage 对应有多个 group 的情况下,访问路径带 group 名,如/group1/M00/00/00/xxx,
对应的 Nginx 配置为:
location ~/group([0-9])/M00 {
ngx_fastdfs_module;
}
C、如查下载时如发现老报 404,将 nginx.conf 第一行 user nobody 修改为 user root 后重新启动。
# vi /etc/sysconfig/iptables
添加:
## Nginx Port
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
重启防火墙: # service iptables restart
# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=xxx
(重启 Nginx 的命令为:/usr/local/nginx/sbin/nginx -s reload)
# vi /etc/rc.local
加入:
## Nginx
/usr/local/nginx/sbin/nginx
http://192.168.1.173:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
http://192.168.1.184:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
# yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
# cd /usr/local/src/
# tar -zxvf ngx_cache_purge-2.3.tar.gz
# cd /usr/local/src/
# tar -zxvf nginx-1.6.2.tar.gz
# cd nginx-1.6.2
# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3
# make && make install
# vi /usr/local/nginx/conf/nginx.conf
部分配置如下:
user tracker01;
events {
worker_connections 1024;
use epoll;
}
http {
#设置缓存
。。。。
#设置缓存存储路径、存储方式、分配内存大小、磁盘最大空间、缓存期限
。。。。
#设置 group1 的服务器
upstream fdfs_group1 {
server 192.168.1.171:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.172:8888 weight=1 max_fails=2 fail_timeout=30s;
}
#group2
#group3
server{
listen 8000;
server_name localhost;
#设置 group 的负载均衡参数
location /group1/M00 {
proxy_pass http://fdfs_group1;
。。。。
}
#group2
#group3
#设置清除缓存的访问权限
location ~/purge(/.*) {
allow 127.0.0.1;
allow 192.168.1.111;
allow 192.168.1.0/24;
deny all;
proxy_cache_purge http-cache $1$is_args$args;
}
}
}
(附配置文件/conf/tracker_nginx/nginx.conf)
# mkdir -p /fastdfs/cache/nginx/proxy_cache
# mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp
# vi /etc/sysconfig/iptables
## Nginx
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
重启防火墙
# service iptables restart
# /usr/local/nginx/sbin/nginx
# /usr/local/nginx/sbin/nginx -s reload
# vi /etc/rc.local
加入:
## Nginx
/usr/local/nginx/sbin/nginx
http://192.168.1.170:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
http://192.168.1.180:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
以上是最间配置,多次测试可以发现,每一个 Tracker 中的 Nginx 都单独对后端的 Storage 组做了负载均衡,但整套 FastDFS 集群如果想对外提供统一的文件访问地址,还需要对两个 Tracker 中的 Nginx 进行 HA 集群。
=======================================Keepalived+Nginx实现高可用Web负载均衡==========================================
keepalived-1.2.18.tar.gz
VIP |
IP |
主机名 |
Nginx端口 |
默认主从 |
192.168.1.77 |
192.168.1.170 |
tracker01 |
8000 |
MASTER |
192.168.1.180 |
tracker02 |
8000 |
BACKUP |
# cd /usr/local/src
# tar -zxvf keepalived-1.2.18.tar.gz
# cd keepalived-1.2.18
# ./configure --prefix=/usr/local/keepalived
# make && make install
备注:编译可能报错
configure: error:
!!! OpenSSL is not properly installed on your system. !!!
!!! Can not include OpenSSL headers files.
解决:yum -y install openssl-devel
因为没有使用 keepalived 的默认路径安装(默认是/usr/local),安装完成之后,需要做一些工作
复制默认配置文件到默认路径
# mkdir /etc/keepalived
# cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
复制 keepalived 服务脚本到默认的地址
# cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
# cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
# ln -s /usr/local/sbin/keepalived /usr/sbin/
# ln -s /usr/local/keepalived/sbin/keepalived /sbin/
设置 keepalived 服务开机启动
# chkconfig keepalived on
# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
router_id tracker01 ## 标识本节点的字条串,通常为 hostname
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state MASTER ## 主节点为 MASTER,对应的备份节点为 BACKUP
interface eth1 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
virtual_router_id 170 ## 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址
mcast_src_ip 192.168.1.170 ## 本机 IP 地址
priority 100 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111 ## 真实生产,按需求对应该过来
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.1.77 ## 虚拟 ip,可以定义多个
}
}
(附配置文件/conf/keepalived/master/keepalived.conf)
! Configuration File for keepalived
global_defs {
## keepalived 自带的邮件提醒需要开启 sendmail 服务。建议用独立的监控或第三方 SMTP
router_id tracker02 ## 标识本节点的字条串,通常为 hostname
}
## keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" ## 检测 nginx 状态的脚本路径
interval 2 ## 检测时间间隔
weight -20 ## 如果条件成立,权重-20
}
## 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
vrrp_instance VI_1 {
state BACKUP ## 主节点为 MASTER,对应的备份节点为 BACKUP
interface eth1 ## 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth1
virtual_router_id 170 ## 虚拟路由的 ID号,两个节点设置必须一样,可选 IP 最后一段使用, 相同的VRID为一个组,他将决定多播的 MAC地址
mcast_src_ip 192.168.1.180 ## 本机IP地址
priority 100 ## 节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
nopreempt ## 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
advert_int 1 ## 组播信息发送间隔,两个节点设置必须一样,默认 1s
## 设置验证信息,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111 ## 真实生产,按需求对应该过来
}
## 将 track_script 块加入 instance 配置块
track_script {
chk_nginx ## 执行 Nginx 监控的服务
}
## 虚拟 IP 池, 两个节点设置必须一样
virtual_ipaddress {
192.168.1.77 ## 虚拟 ip,可以定义多个
}
}
(附配置文件/conf/keepalived/backup/keepalived.conf)
# vi /etc/keepalived/nginx_check.sh
脚本要求:如果 nginx 停止运行,尝试启动,如果无法启动则杀死本机的 keepalived 进程,keepalied将虚拟 ip 绑定到 BACKUP 机器上。内容如下:
#!/bin/bash
A=`ps -C nginx –no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/nginx/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
保存后,给脚本赋执行权限:
# chmod +x /etc/keepalived/nginx_check.sh
# service keepalived start
# /usr/local/nginx/sbin/nginx -s stop
# service keepalived stop
service keepalived start
查看虚拟IP状态 # ip add
Keepalived 服务管理命令:
停止:service keepalived stop
启动:service keepalived start
重启:service keepalived restart
查看状态:service keepalived status
# vi /usr/local/nginx/html/index.html
<hr/>
<b>tracker01_170_master</b>
<hr/>
<hr/>
<b>tracker02_180_backup</b>
<hr/>
http://192.168.1.77:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png
至此配置完毕。
VIP(8000) |
tracker_Nginx(8000) |
storage_Nginx(8888) |
192.168.1.77 |
192.168.1.170 192.168.1.180 |
192.168.1.171 192.168.1.172 192.168.1.173 192.168.1.174 192.168.1.175 192.168.1.176 |
文件访问:
storage |
http://192.168.1.173:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png http://192.168.1.174:8888/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |
tracker |
http://192.168.1.170:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png http://192.168.1.180:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |
VIP |
http://192.168.1.77:8000/group2/M00/00/00/wKgBrlhEbz6ARyVHAAB9W1YdTCY793.png |
标签:monit 端口号 防火 编辑 rtu 客户端 重要 访问权限 smtp
原文地址:https://www.cnblogs.com/zengnansheng/p/10389726.html