高可用笔记(6)keepalived+nginx

简介: 前面讲到了部署多个tomcat和多个rabbitmq用nginx做代理服务器,这种情况,tomcat和rabbitmq既实现了高可用又实现了负载均衡。但是,nginx确成了单点。在一个HA环境中,任何一个点都必须实现高可用,这里就需要借助keepalived来实现nginx的高可用。

前面讲到了部署多个tomcat和多个rabbitmq用nginx做代理服务器,这种情况,tomcat和rabbitmq既实现了高可用又实现了负载均衡。但是,nginx确成了单点。在一个HA环境中,任何一个点都必须实现高可用,这里就需要借助keepalived来实现nginx的高可用。

测试环境

  • host1 192.168.30.1 (nginx, keepalived/master)
  • host2 192.168.30.2 (nginx, keepalived/backup)

安装keepalived

host1和host2分别安装keepalived, host2安装nginx(过程略)

$ yum install keepalived
AI 代码解读

准备nginx状态检测脚本

/etc/keepalived/check_nginx.sh

#!/bin/bash
if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
then
 /usr/local/nginx/sbin/nginx
 sleep 5
 if [ "$(ps -ef | grep "nginx: master process"| grep -v grep )" == "" ]
 then
 killall keepalived
 fi
fi
AI 代码解读

拷贝到host2

$ scp /etc/keepalived/check_nginx.sh root@192.168.30.2:/etc/keepalived/check_nginx.sh 
AI 代码解读

修改host1的keepalived配置

 ! Configuration File for keepalived

global_defs {
   notification_email {
     test@sanlogic.com             
   }
   notification_email_from  test@test.com 
   smtp_server 127.0.0.1                             
   smtp_connect_timeout 30                  
   router_id LVS_DEVEL      
}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.30.30
     }
}
AI 代码解读

修改host2的keepalived配置文件

 ! Configuration File for keepalived

global_defs {
   notification_email {
     test@sanlogic.com
   }
   notification_email_from  test@test.com
   smtp_server 127.0.0.1 
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.30.30
     }
}
AI 代码解读

启动keepalived

$ systemctl enable keepalived
$ systemctl start keepalived
AI 代码解读

测试

用浏览器访问http://192.168.30.30/hellonginx,出现如下界面
screenshot

这时关闭host1

$ halt -p
AI 代码解读

用浏览器访问http://192.168.30.30/hellonginx,仍然是如下界面
screenshot

Done !

相关文章
Nginx+Keepalived+Tomcat 实现Web高可用集群
Nginx+Keepalived+Tomcat 实现Web高可用集群
200 0
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
技术笔记:Ubuntu:一个部署好的tomcat应用(war包)怎么用Nginx实现动静分离?
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
这篇文章讨论了在使用nginx-rtmp-module进行RTMP推流时遇到的“Server error: Already publishing”错误,分析了错误原因,并提供了详细的解决办法,包括修改nginx配置文件和终止异常的TCP连接。
376 0
FFmpeg错误笔记(一):nginx-rtmp-module推流出现 Server error: Already publishing
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
175 1
(三)Nginx一网打尽:动静分离、压缩、缓存、黑白名单、跨域、高可用、性能优化...想要的这都有!
早期的业务都是基于单体节点部署,由于前期访问流量不大,因此单体结构也可满足需求,但随着业务增长,流量也越来越大,那么最终单台服务器受到的访问压力也会逐步增高。时间一长,单台服务器性能无法跟上业务增长,就会造成线上频繁宕机的现象发生,最终导致系统瘫痪无法继续处理用户的请求。
248 1
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
《FFmpeg开发实战》书中介绍了如何使用FFmpeg向网络推流,简单流媒体服务器MediaMTX不适用于复杂业务。nginx-rtmp是Nginx的RTMP模块,提供基本流媒体服务。要在Linux上集成rtmp,需从官方下载nginx和nginx-rtmp-module源码,解压后在nginx目录配置并添加rtmp模块,编译安装。配置nginx.conf启用RTMP服务,监听1935端口。使用ffmpeg推流测试,如能通过VLC播放,表明nginx-rtmp运行正常。更多详情见书本。
216 0
FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流
服务搭建篇(四) 搭建基于Nginx + keepalived的高可用服务
比如我这里虚拟IP+nginx端口是 : 192.168.154.10:80 , 我直接访问 , 出来的是192.168.154.134服务器上的nginx , 因为我刚刚做了区分 , 所以这个时候就可以知道访问的是哪个机器的Nginx , 然后我们把134的Nginx停掉 , 然后再次访问 , 仍然可以使用 , 此时 ,出现的135的页面 , 也就是访问的是192.168.154.135的Nginx
167 0