nginx+keepalived实现高可用

简介: 如果通过keepalived实现高可用

一、演示环境说明

操作系统:ubuntu 22.04.3 LTS

演示服务器IP地址

主机:192.168.0.19

备机:192.168.0.56

浮动IP:192.168.0.120


注:以下操作均需root权限

安装keepalived

apt install keepalived


配置keepalived

# 主机keepalived配置cd /etc/keepalived
cat keepalived.conf
! Configuration File for keepalived
global_defs {
    router_id balance01       #xx主备id    enable_script_security
    script_user root
}
#加入周期性检测nginx服务脚本的相关配置vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"#心跳执行的脚本,检测nginx是否启动    interval 2#(检测脚本执行的间隔,单位是秒)}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0   #网卡名称    virtual_router_id 51    priority 99#优先级,主不改,备改成比100小就行    advert_int 1    authentication {
        auth_type PASS
        auth_pass NgLMwBmE
    }
    unicast_src_ip 192.168.0.19 #这里是主服务器私网ip    unicast_peer {
192.168.0.56      #备服务器的私网ip,如果有多个,可以换行添加(对端ip,比如主的这里写备的内网ip)    }
    virtual_ipaddress {
192.168.0.120 label eth0:0
    }
#添加跟踪(执行脚本)    track_script {
        check_nginx
    }
}
# 备机keepalived配置! Configuration File for keepalived
global_defs {
    router_id balance01       #xx主备id    enable_script_security
    script_user root
}
#加入周期性检测nginx服务脚本的相关配置vrrp_script check_nginx{
    script "/etc/keepalived/check_nginx.sh"#心跳执行的脚本,检测nginx是否启动    interval 2#(检测脚本执行的间隔,单位是秒)}
vrrp_instance VI_1 {
    state MASTER
    interface eth0   #网卡名称    virtual_router_id 51    priority 100#优先级,主不改,备改成比100小就行    advert_int 1    authentication {
        auth_type PASS
        auth_pass NgLMwBmE
    }
    unicast_src_ip 192.168.0.56 #这里是主服务器私网ip    unicast_peer {
192.168.0.19      #备服务器的私网ip,如果有多个,可以换行添加(对端ip,比如主的这里写备的内网ip)    }
    virtual_ipaddress {
192.168.0.120 label eth0:0
    }
    添加跟踪(执行脚本)
    track_script{
        check_nginx
    }
}
# chech_nginx.sh脚本#!/bin/bash#检查nginx进程是否存在count=$(ps -C nginx --no-heading | wc -l)#进程数等于0的时候if [ "${count}"="0" ]; then#尝试启动一次nginx,停止2秒后再次检测    /home/ops/server/nginx/sbin/nginx
sleep2count=$(ps -C nginx --no-heading | wc -l)if [ "${count}"="0" ]; then#如果启动没成功,就杀掉keepalive触发主备切换        systemctl stop keepalived
fifi

启动及检查

systemctl enable keepalived
systemctl start keepalived

分别在主、备机上启动keepalived,然后用ifconfig -a命令查看,此时主机的eth0:0接口会绑定浮动IP

ifconfig -aeth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.0.56  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe80::f816:3eff:fe76:ce06  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:76:ce:06  txqueuelen 1000  (Ethernet)
        RX packets 423293  bytes 233312508 (233.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 437023  bytes 331280752 (331.2 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 192.168.0.120  netmask 255.255.255.255  broadcast 0.0.0.0
        ether fa:16:3e:76:ce:06  txqueuelen 1000  (Ethernet)
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 78258  bytes 8896394 (8.8 MB)
        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 78258  bytes 8896394 (8.8 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

主机关闭keepalived,从机会接管浮动IP,说明keepalived生效。


相关文章
|
7月前
|
负载均衡 应用服务中间件 Linux
高可用系列文章之三 - NGINX 高可用实施方案
高可用系列文章之三 - NGINX 高可用实施方案
|
7月前
|
运维 应用服务中间件 Linux
keepalived详解(三)——keepalived与Nginx配合实战
keepalived详解(三)——keepalived与Nginx配合实战
240 1
|
4月前
|
Java 应用服务中间件 Shell
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
138 0
|
4月前
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
85 1
|
5月前
|
存储 缓存 前端开发
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
179 1
|
7月前
|
监控 负载均衡 应用服务中间件
Keepalive 解决nginx 的高可用问题
Keepalive 解决nginx 的高可用问题
|
6月前
|
负载均衡 应用服务中间件 开发工具
技术笔记:nginx和keeplive实现负载均衡高可用
技术笔记:nginx和keeplive实现负载均衡高可用
|
7月前
|
存储 运维 负载均衡
Heartbeat+Nginx实现高可用集群
通过Heartbeat与Nginx的结合,您可以建立一个高可用性的负载均衡集群,确保在服务器故障时仍能提供无中断的服务。这种配置需要仔细的计划和测试,以确保系统在故障情况下能够正确运行。
98 2
|
7月前
|
Kubernetes 搜索推荐 应用服务中间件
通过keepalived+nginx实现 k8s apiserver节点高可用
通过keepalived+nginx实现 k8s apiserver节点高可用
456 17
|
7月前
|
负载均衡 网络协议 应用服务中间件
【亮剑】在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。
【4月更文挑战第30天】本文介绍了在Linux中构建高可用性和高性能网络服务的负载均衡工具HAProxy、Nginx和Keepalived。HAProxy是一个高性能的开源TCP和HTTP负载均衡器,适合处理大量并发连接;Nginx是一个多功能Web服务器和反向代理,支持HTTP、HTTPS和TCP负载均衡,同时提供缓存和SSL功能;Keepalived用于监控和故障切换,通过VRRP实现IP热备份,保证服务连续性。文中详细阐述了如何配置这三个工具实现负载均衡,包括安装、配置文件修改和启动服务,为构建可靠的负载均衡系统提供了指导。
187 0