1 介绍
1.1 fastdfs概述
FastDFS 是余庆老师开发的一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
1.2 模块介绍
Tracker Server: 跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的storage server和group,每个storage在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。多个Tracker之间是对等关系,不存在单点故障。
Storage Server: 存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,组内的storage server上的数据互为备份。
Client:客户端,上传下载数据的服务器
模块关系:
下图是实现统一的对外下载访问入口的高可用架构,其中所有的Nginx只做下载用途,上传通过tracker进行上传
2 fastdfs集群部署
2.1 部署架构设计
2.2 部署环境规划
操作系统centos7.7
软件版本:
fastdfs-5.12.tar.gz
libfastcommon-1.0.43.tar.gz
fastdfs-nginx-module-1.20.tar.gz
nginx-1.12.2.tar.gz
PS 同一个group里面的两台服务器互为冗余备份,水平扩展group的数量就可以增加整个fastdfs集群的容量
建议架构如下,机器数量不够可以复用。
2.3 公共模块libfastcommon 安装
在所有的tracker以及storage的机器都需要安装
2.3.1 安装依赖包
yum -y install gcc \
automake \
autoconf \
libtool \
make \
gcc-c++ \
pcre* \
zlib \
openssl \
openssl-devel
2.3.2 编译安装
上传并解压tar -zxvf libfastcommon-1.0.43.tar.gz
在每一台服务器上,解压libfastcommon,进入libfastcommon目录执行
./make.sh
./make.sh install
安装成功后,可以看到libfastcommon.so安装到了/usr/lib64/libfastcommon.so
2.3.2 创建软连接
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
注:此时libfdfsclient.so文件还未生成,先创建软
2.4 tracker集群安装
两台tracker配置完全一样
2.4.1 安装tracker
在 192.168.2.52,192.168.2.53上面安装FastDFS使用FastDFS_V5.X.tar.gz
tar -zxvf fastdfs-5.12.tar.gz
运行make.sh,确认make成功。期间如果有错误,可能会是缺少依赖的软件包,需安装后再次make。
运行make.sh install,确认install成功。
至此tracker安装完成
2.4.2 修改配置文件
编辑/etc/fdfs目录下的tracker.conf,设置相关信息并保存。
cp tracker.conf.sample tracker.conf
一般只需改动以下几个参数即可:
disabled=false #false表示有效启用配置文件
port=22122 #设置tracker的端口号
后面为绑定的IP地址 (经常使用于服务器有多个IP但仅仅希望一个IP提供服务)。
假设不填则表示全部的(一般不填就OK)
bind_addr=
#base_path 文件夹地址(根文件夹必须存在,子文件夹会自己主动创建)
base_path=/data/fastdfs/tracker #设置tracker的数据文件和日志目录根目录
(需预先创建)
#0: round robin 轮询的上传,交替上传数据
#1: specify group 指定group进行上传
#2: load balance, select the max free space
group to upload file平衡的去上传,尽量平衡各个节点的容量,默认就是2
store_lookup=2
#which group to upload file
#when store_lookup set to 1, must set store_group to the group name
store_group=group2 #当store_lookup设置成1的时候,这个参数才有效
http.server_port=8080 #设置http端口号
如需要进行性能调优,可以参照附录的配置文件的详细说明
2.4.3 配置启动
在运行tracker之前,先把防火墙对应的端口打开
firewall-cmd --zone=public --add-port=22122/tcp --permanent
firewall-cmd --reload
vim /usr/lib/systemd/system/fastdfs-tracker.service
[Unit]
Description=The FastDFS File server
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
ExecStop=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf stop
ExecRestart=/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable fastdfs-tracker.service
systemctl start fastdfs-tracker.service
netstat -unltp | grep fdfs #查看服务是否启动,端口是否打开
2.4.4 验证
netstat -tulnp #查看服务是否启动,端口是否打开
查看日志有误报错信息
cat /data/fastdfs/tracker/logs/trackerd.log
2.5 storage集群安装
2.5.1 storage安装
首先再fastdfs5 fastdfs6 fastdfs7,fastdfs8 安装FastDFS storage,使用FastDFS_V5.X.tar.gz源代码包。
运行make.sh,确认make成功。期间如果有错误,可能会是缺少依赖的软件包,需安装后再次make。
运行make.sh install,确认install成功。
其实就是上面安装tracker 一样的,两个是在一起的。同时都会安装完成。只是扮演角色
2.5.2 配置group1
vim /etc/fdfs/storage.conf
#在192.168.2.54 以及192.168.2.55上配置
#一般只需改动以下几个参数即可:
disabled=false #启用配置文件
group_name=group1 #第一组为group1,第二组为group2
port=23000 #设置storage的端口号
base_path=/data/fastdfs/storage #设置storage的日志目录(需预先创建)
store_path_count=1 #存储路径个数,需要和store_path个数匹配
#存储路径,如果不存在的话他就会使用base_path,生产建议分开
store_path0=/data/fastdfs/storage
tracker_server=192.168.2.52:22122 #tracker1服务器的IP地址和端口号
tracker_server=192.168.2.53:22122 #tracker2服务器的IP地址和端口号
http.server_port=8888 #设置http端口号
#nginx的端口也要设置成这个
如需要进行性能调优,可以参照附录的配置文件的详细说明。
2.5.3 配置group2
两组配置就group_name不一致
vim /etc/fdfs/storage.conf
在192.168.2.56 以及192.168.2.57上配置
一般只需改动以下几个参数即可:
disabled=false #启用配置文件
group_name=group2 #第一组为group1,第二组为group2
port=23000 #设置storage的端口号
base_path=/data/fastdfs/storage #设置storage的日志目录(需预先创建)
store_path_count=1 #存储路径个数,需要和store_path个数匹配
#存储路径,如果不存在的话他就会使用base_path,生产建议分开
store_path0=/data/fastdfs/storage
tracker_server=192.168.2.52:22122 #tracker1服务器的IP地址和端口号
tracker_server=192.168.2.53:22122 #tracker2服务器的IP地址和端口号
http.server_port=8888 #设置http端口号
#nginx的端口也要设置成这个
如需要进行性能调优,可以参照附录的配置文件的详细说明。
2.5.4 配置防火墙
firewall-cmd --zone=public --add-port=23000/tcp --permanent
firewall-cmd --reload
2.5.5 配置启动
vim /usr/lib/systemd/system/fastdfs-storage.service
[Unit]
Description=The FastDFS File server
After=network.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
ExecStart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
ExecStop=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop
ExecRestart=/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable fastdfs-storage.service
systemctl start fastdfs-storage.service
2.5.6 验证启动
查看端口
netstat -unltp | grep fdfs #查看服务是否启动,端口是否打开
查看日志
cat /data/fastdfs/storage/logs/storaged.log
在任意节点查看日志。在节点192.168.2.55上查看日志
可以看到该节点以及找到了tracker两个,并且有trackerleader,同时也找到了同组的另一个storage
***注意:
- tracker默认是主从模式,一个节点挂了,会自动设置另一个为leader
- storage在启动的时候会在数据目录创建256256个文件夹用于存储数据**
查看集群状态
fdfs_monitor /etc/fdfs/storage.conf list
2.5.7 配置client
找一个安装了fastdfs的机器进行配置
此处我们选择tracker1的192.168.2.52
vim /etc/fdfs/client.conf
#需要修改的内容如下
base_path=/data/fastdfs/client
tracker_server=192.168.2.51:22122 # tracker1服务器IP和端口
tracker_server=192.168.2.52:22122 # tracker2服务器IP和端口
#保存退出配置文件
上传测试
[root@dfs3 ~]# fdfs_upload_file /etc/fdfs/client.conf /root/set.sh
group1/M00/00/00/wKgCNl4_ezCAYf2HAAACAah8Kv06166.sh
可以看到上传到了group1的00/00下面 我们可以到group1的两个storage进行查看
2.6 安装nginx和fastdfs-nginx-module
FastDFS和nginx的关联模块,解决组内同步延迟问题
在所有的storage节点进行安装
在这里我们要在group1-storage1,group1-storage2,group2-storage1,group2-storage2上面进行安装
2.6.1 下载nginx module
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
解压 tar -zxvf V1.20.tar.gz
解压后进入src目录修改config cd fastdfs-nginx-module-1.20/src
#原来的内容是
CORE_INCS="$CORE_INCS /usr/local/include"
#修改为
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon"
主要就是去除local因为local下没有文件
拷贝fastdfs-nginx-module-1.20/src配置文件到/etc/fdfs
所有节点操作
复制fastdfs-nginx-module-master中src目录下的mod_fastdfs.conf到/etc/fdfs
cp mod_fastdfs.conf /etc/fdfs/
2.6.2 编译安装nginx添加fastdfs_nginx模块
wget http://nginx.org/download/nginx-1.12.2.tar.gz
解压 tar -zxvf nginx-1.12.2.tar.gz
./configure --prefix=/usr/share/nginx-1.12.2 --sbin-path=/usr/share/nginx-1.12.2/sbin/nginx --conf-path=/usr/share/nginx-1.12.2/nginx.conf --pid-path=/usr/share/nginx-1.12.2/nginx.pid --with-http_ssl_module --add-module=/opt/softs/fastdfs-nginx-module-1.20/src
注:(nginx-1.12.2、fastdfs-nginx-module-master路径改成自己的)
#没有报错信息,就进行下一步
make
#没报错进行下一步
make install
2.6.3 配置nginx访问
修改第一组group1
192.168.2.54/192.168.2.55
修改/etc/fdfs/mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.conf
base_path=/data/fastdfs/storage #storage日志目录和storage.conf一样
tracker_server=192.168.2.52:22122 #tracker1服务器信息
tracker_server=192.168.2.53:22122 #tracker2服务器信息
group_name=group1 #组名,根据实际情况修改
(例如:192.168.2.54/55为group1,则此处设置为group1)
url_have_group_name = true #从文件扩展名查找文件类型
#url里面包含group_name
store_path0=/data/fastdfs/storage #storage存储路径storage.conf一样
如果fastdfs为多group安装,还需设置以下配置:
group_count = 2 #group个数
在末尾添加如下:
[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
第二组
192.168.2.56/192.168.2.57
base_path=/data/fastdfs/storage #storage日志目录和storage.conf一样
tracker_server=192.168.2.52:22122 #tracker1服务器信息
tracker_server=192.168.2.53:22122 #tracker2服务器信息
group_name=group2 #组名,根据实际情况修改
(例如:192.168.2.56/57为group2,则此处设置为group2)
url_have_group_name = true #从文件扩展名查找文件类型
#url里面包含group_name
store_path0=/data/fastdfs/storage #storage存储路径storage.conf一样
如果fastdfs为多group安装,还需设置以下配置:
group_count = 2 #group个数
在末尾添加如下:
[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
四个节点都创建软连接
由于url里面有M00
ln -s /data/fastdfs/storage/data/ /data/fastdfs/storage/M00
将fastdfs下conf配置文件拷贝到/etc/fdfs
[root@dfs5 fastdfs-5.12]# cd /opt/softs/fastdfs-5.12/conf/
[root@dfs5 conf]# cp http.conf mime.types /etc/fdfs
配置nginx.conf
4个storage的nginx均配置如下
cd /usr/share/nginx-1.12.2/
vim nginx.conf
server {
listen 8888;#该端口为storage.conf中的http.server_port相同
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~/group[1-9]/M00 {
root /data/fastdfs/storage;
ngx_fastdfs_module;
}
location / {
root html;
index index.html index.htm;
}
}
可以对配置文件进行一些优化如:
user root;
worker_processes auto;
四个节点启动nginx
打开防火墙
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --reload
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/share/nginx-1.12.2/nginx.pid
ExecStartPre=/usr/share/nginx-1.12.2/sbin/nginx -t
ExecStart=/usr/share/nginx-1.12.2/sbin/nginx
ExecReload=/usr/share/nginx-1.12.2/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#重载systemd配置文件
systemctl daemon-reload
#启动服务
systemctl start nginx.service
#开机启动
systemctl enable nginx.service
#更多命令
systemctl reload nginx.service #重新加载nginx服务
systemctl stop nginx.service #停止nginx服务
2.6.4 通过nginx访问fastdfs文件
通过两个文件上传实验进行验证,由于我们storage配置轮询,两个文件会分别在group1和group2
上传第一个测试文件
[root@dfs3 ~]# fdfs_upload_file /etc/fdfs/client.conf /root/1.html
group1/M00/00/00/wKgCN14_oPKAfqYlAAAAC_TbMN863.html
看到返回的url 是在group1上,
group1的两个节点是192.168.2.54 192.168.2.55
那么我们可以通过这两个节点的8888端口,加上返回的url就可以访问到该文件
查看group1的第一个节点
查看group2的第二个节点
上传第二个测试文件
[root@dfs3 ~]# fdfs_upload_file /etc/fdfs/client.conf /root/2.html
group2/M00/00/00/wKgCOV4_rWOAQP01AAAADORy_4I59.html
看到返回的url 是在group2上,
group1的两个节点是192.168.2.56 192.168.2.57
那么我们可以通过这两个节点的8888端口,加上返回的url就可以访问到该文件
在group2的第一个节点查看
在group2的第二个节点查看
3 storage上层Nginx负载集群
此处我们选择tracker的两台机器192.168.2.52 192.168.2.53两台机器做为上层nginx负载
提供代理服务,目的是使用同一IP地址对外提供服务。
不需要缓存使用rpm包安装nginx即可
两台nginx配置文件如下
如此就把每个group1的访问路径同一了。为了做高可用,就需要两台
vim /etc/nginx/conf.d/fastdfs.conf
upstream fdfs_group1 {
server 192.168.2.54:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.2.55:8888 weight=1 max_fails=2 fail_timeout=30s;
}
upstream fdfs_group2 {
server 192.168.2.56:8888 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.2.57:8888 weight=1 max_fails=2 fail_timeout=30s;
}
server {
listen 80;
server_name _;
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;
}
}
这样做完了之后,所有的group 的访问url都进行了统一,但是没有起到分担负载均衡的效果。有可能都访问某一台nginx服务器
4 keepalived+haproxy负载层
在两台高可用nginx的基础上在来一层负载均衡配置。
这里选用keepalived+haproxy
4.1 安装keepalived+haproxy
yum -y install keepalived haproxy
4.2 配置keepalived
[root@dfs1 softs]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak
[root@dfs1 softs]# vim /etc/keepalived/keepalived.conf
#开启vrrp 协议
主备都运行下面的命令
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
firewall-cmd --reload
在192.168.2.52 主keepalived配置
! Configuration File for keepalived #全局定义
global_defs {
notification_email { #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱
[email protected] #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
[email protected]
[email protected]
}
notification_email_from [email protected] #keepalived在发生诸如切换操作时需要发送email通知地址
smtp_server 127.0.0.1 #指定发送email的smtp服务器
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id master-node #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port { #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等
script "killall -0 haproxy" #这里通过脚本监测,exsit为0就表示进程A存在,否则表示不存在。
#script "/opt/chk_nginx.sh"#如果选用此方式,复制下面的chk_nginx.sh即可
interval 2 #脚本执行间隔,每2s检测一次
#weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5(最好不打开)
fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
rise 1 #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 { #keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
state MASTER#指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。注意这里的state指定instance(Initial)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER
nopreempt #当master恢复之后不抢占vip
interface eth0 #指定HA监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码。主从必须一样
auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress { #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
192.168.2.60
}
#notify_master "/etc/keepalived/master.sh "#当处于master状态时执行的脚本
#notify_backup "/etc/keepalived/backup.sh"#当处于备份状态下执行的脚本
#notify_fault "/etc/keepalived/fault.sh"#当处于不可用状态下执行的脚本
track_script { #执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
chk_http_port #引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
}
}
}
在192.168.2.53 从keepalived配置
! Configuration File for keepalived #全局定义
global_defs {
notification_email { #指定keepalived在发生事件时(比如切换)发送通知邮件的邮箱
[email protected] #设置报警邮件地址,可以设置多个,每行一个。 需开启本机的sendmail服务
[email protected]
[email protected]
}
notification_email_from [email protected] #keepalived在发生诸如切换操作时需要发送email通知地址
smtp_server 127.0.0.1 #指定发送email的smtp服务器
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id master-node #运行keepalived的机器的一个标识,通常可设为hostname。故障发生时,发邮件时显示在邮件主题中的信息。
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_script chk_http_port { #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等
script "killall -0 haproxy" #这里通过脚本监测,exsit为0就表示进程A存在,否则表示不存在。
#script "/opt/chk_nginx.sh"#如果选用此方式,复制下面的chk_nginx.sh即可
interval 2 #脚本执行间隔,每2s检测一次
#weight -5 #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5(最好不打开)
fall 2 #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
rise 1 #检测1次成功就算成功。但不修改优先级
}
vrrp_instance VI_1 { #keepalived在同一virtual_router_id中priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管
state BACKUP#指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。注意这里的state指定instance(Initial)的初始状态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会就回抢占为MASTER
nopreempt #当master恢复之后不抢占vip
interface eth0 #指定HA监测网络的接口。实例绑定的网卡,因为在配置虚拟IP的时候必须是在已有的网卡上添加的
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字,同一个vrrp实例使用唯一的标识。即同一vrrp_instance下,MASTER和BACKUP必须是一致的
priority 100 #定义优先级,数字越大,优先级越高,在同一个vrrp_instance下,MASTER的优先级必须大于BACKUP的优先级
advert_int 1 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication { #设置验证类型和密码。主从必须一样
auth_type PASS #设置vrrp验证类型,主要有PASS和AH两种
auth_pass 1111 #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
}
virtual_ipaddress { #VRRP HA 虚拟地址 如果有多个VIP,继续换行填写
192.168.2.60
}
notify_master "/etc/keepalived/master.sh "#当处于master状态时执行的脚本
notify_backup "/etc/keepalived/backup.sh"#当处于备份状态下执行的脚本
notify_fault "/etc/keepalived/fault.sh"#当处于不可用状态下执行的脚本
track_script { #执行监控的服务。注意这个设置不能紧挨着写在vrrp_script配置块的后面(实验中碰过的坑),否则nginx监控失效!!
chk_http_port #引用VRRP脚本,即在 vrrp_script 部分指定的名字。定期运行它们来改变优先级,并最终引发主备切换。
}
}
}
systemctl enable keepalived
systemctl start keepalived
4.3 配置haproxy
#配置web控制台
listen stats :1080
mode http
transparent
stats realm Haproxy \ statistic
stats uri /admin#打开web监控
stats hide-version #隐藏统计页面上HAProxy的版本信息
stats auth admin:admin //认证用户名和密码
#配置nginx负载均衡
listen webcluster 0.0.0.0:80 #定义一个webcluster的应用
# option httpchk GET /test.html #访问服务器的test.html文件
balance roundrobin
server node1 192.168.2.52:80 check inter 2000 fall 3 #定义nginx节点服务器
server node2 192.168.2.53:80 check inter 2000 fall 3
systemctl restart haproxy
systemctl enable haproxy