高可用fastdfs集群部署

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

***注意:

  1. tracker默认是主从模式,一个节点挂了,会自动设置另一个为leader
  2. 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

在这里插入图片描述

原创文章 5 获赞 1 访问量 319

猜你喜欢

转载自blog.csdn.net/linux_yyp/article/details/106059910
今日推荐