keepalive+nginx高可用架构

keepalive+nginx架构

一.配置真实服务器web1和web2

1.关闭防火墙,并在真实服务器下载http服务

复制代码
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install  httpd  -y

2.分别在web1和web2上制作网页,并开启http服务

复制代码
web1
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# echo  zxy13 >  /var/www/html/index.html
[root@localhost html]# systemctl  start  httpd

web2
[root@localhost ~]# cd /var/www/html
[root@localhost html]# ls
[root@localhost html]# echo  zxy14 >  /var/www/html/index.html
[root@localhost html]# systemctl  start  httpd

web1

web2

二.配置代理服务器

代理服务器:主192.168.240.11

备192.168.240.12

1.关闭防火墙,并安装epel源和nginx

复制代码
[root@localhost ~]# systemctl stop firewalld.service 
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum  install epel-release.noarch  -y
[root@localhost ~]# yum  install nginx  -y

2.编辑nginx配置文件

在192.168.240.11上

配置文件http语句块下加入组和server语句块下加入location匹配实现负载均衡

3.将192.168.240.11代理服务器上/etc/nginx/nginx.conf文件远程拷贝到192.168.240.12的/etc/nginx/nginx.conf

4.安装下载keepalive服务,编辑配置文件

在192.168.240.11上 vim /etc/keepalived/keepalived.conf

复制代码
! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1      # 修改邮箱地址
   smtp_connect_timeout 30  
   router_id LVS01            # 修改名称
   vrrp_skip_check_adv_addr  
   #vrrp_strict              #关闭严格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"   
        interval 1
        weight -30
        fall  3
        rise 2
        timeout 2
}

vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"   #指明脚本的位置   
        interval 1            #每隔1s 执行一次检测
        weight -30             #如果 脚本执行失败自动减少优先级30
        fall  3                # 3次不成功才标注为失败 
        rise 2                 #nginx  重新起来后检测两次成功 才真的成功  
        timeout 2               #超时时间  2s 
}



vrrp_instance VI_1 {
    state MASTER
    interface ens33    #修改网卡的名称
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
         auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        192.168.240.188  #修改ip
    }
     track_script {
     check_down
 }
    
}

5.在192.168.240.13(由于12机上环境不干净换机做)上 vim /etc/keepalived/keepalived.conf

复制代码
router_id LVS02  #修改为LVS02
   vrrp_skip_check_adv_addr
   #vrrp_strict  #注释关闭严格模式
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
vrrp_script check_down {
        script  "/etc/keepalived/ng.sh"
        interval 1
        weight -30
        fall  3
        rise 2
        timeout 2
}
vrrp_instance VI_1 {
    state BACKUP  #修改为备
    interface ens33  #网卡
    virtual_router_id 51
    priority 80  #优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.240.188 #地址
    }
    track_script {
    check_down
    }
}

6.在客户机上测试

(1)curl 虚拟地址192.168.240.188

tcpdump客户机上抓包主服务器在发送报文

(2)关闭主服务器nginx使用ip a 查看 192.168.240.188 已经不在主服务器上

tcpdump客户机上抓包备服务器在发送报文

使用 ip a 命令查看备服务器192.168.240.13 ,192.168.240.188在备服务器上

启动主服务器

ip a 查看主服务器,192.168.240.188 在主服务器上被主服务器抢占

tcpdump -i ens33 host 224.0.0.18 -nn 在客户机查看

相关推荐
草莓熊Lotso1 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
XR1234567881 小时前
汽车制造园区网络怎么建?柔性产线与 AGV 的选型逻辑
网络·汽车·制造
IT大白鼠1 小时前
Docker 实战 ELKF 日志监控:容器日志全栈收集分析方案
运维·docker·容器
贝锐10 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
IT大白鼠11 小时前
MSF二次开发与自定义模块编写
网络·安全·web安全·msf
Julien200411 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
天远Date Lab12 小时前
零信任架构实战:基于天远双人婚姻评估查询构建自动化房产按揭联合审查网关
运维·人工智能·架构·自动化
kekekzt12 小时前
TCP协议的粘包问题介绍,IP分片,MTU,MSS,滑动窗口的概念及之间的关系
网络·网络协议·tcp/ip
2601_9620746813 小时前
自己编译RustDesk,并将自建ID服务器和key信息写入客户端
运维·服务器
小张同学a.13 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器