高可用笔记(6)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

准备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

拷贝到host2

$ scp /etc/keepalived/check_nginx.sh root@192.168.30.2:/etc/keepalived/check_nginx.sh

修改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
     }
}

修改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
     }
}

启动keepalived

$ systemctl enable keepalived
$ systemctl start keepalived

测试

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

这时关闭host1

$ halt -p

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

Done !

时间: 2024-11-03 21:40:04

高可用笔记(6)keepalived+nginx的相关文章

高可用笔记(3)nginx+tomcat+redis

在<高可用笔记(1)nginx>中已经使用过nginx反向代理tomcat的http服务,本文将介绍如何用nginx+tomcat+redis的组合实现负载均衡. 首先来看负载均衡需要解决的2个问题 多个tomcat的部署的web应用怎么实现统一出口? 答:用nginx代理多个tomcat,可以根据实际情况设置不同的权重weight. 多个tomcat的session共享问题怎么解决? 答:将session的数据保存到同一个redis数据库中.将会用到tomcat-redis-session-

高可用笔记(0)前言

上周接到BOSS的order:把我们的产品做一个高可用方案. 于是折腾了一周多,终于差不多试验成功了,好不容易折腾出来的成果记录一下防止时间一长就忘记. 产品的架构有点小小复杂,做HA涉及的方面比较多,先列个提纲,然后慢慢记笔记: 高可用笔记(1)nginx 高可用笔记(2)redis 高可用笔记(3)nginx+tomcat+redis 高可用笔记(4)rabbitmq 高可用笔记(5)mysql 高可用笔记(6)keepalived+nginx 高可用笔记(7)mongodb 高可用笔记(8

高可用笔记(4)rabbitmq

RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现. 它是一个异步消息处理中心,史上最好的.对软件模块间的异步处理和解耦非常有帮助. 当然本笔记的主题不是如何使用,而是高可用. 安装rabbitmq 测试环境: host1 192.168.30.1 (rabbitmq-server/master) host2 192.168.30.2 (rabbitmq-server/slave) host3 192.168.30.3 (rabbitm

Linux高可用(HA)之Heartbeat+Nginx+MySQL+NFS实现WEB+SQL服务高可用

环境说明: node1:ZhongH100.wxjr.com.cn 172.16.6.100 node2:ZhongH101.wxjr.com.cn 172.16.6.101 NFS存储:ZhongH102.wxjr.com.cn 172.16.6.102 VIP:172.16.7.200 node1和node2的主机名.SSH互通 操作系统:都是CentOS 6.6 x86_64 (自己配置好yum源.epel源.关闭SELinux.关闭防火墙) 注意:是[root@ZhongH100 ~]还

高可用开源方案 Keepalived VS Heartbeat对比

最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. 1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat 2.1.4后拆分成3个子项目,安装.配置.使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了:而Keepalived只有1个安装

Linux-HA 高可用开源方案 Keepalived VS Heartbeat 的选择

两款高可用开源方案:Keepalived和Heartbeat.两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考. 1)Keepalived使用更简单:从安装.配置.使用.维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat 2.1.4后拆分成3个子项目,安装.配置.使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了:而Keepalived只有1个安装文件.1个配置文件,配置文件也

高可用笔记(8) CAS集群

测试环境 host1 192.168.30.1 host2 192.168.30.2 准备环境 在host1和host2的tomcat目录下(/var/lib/tomcat/webapps/)部署cas.war 高可用方案 在cas/WEB-INF/classes下新建文件ehcache-replicated.xml: <ehcache name="ehCacheTicketRegistryCache" updateCheck="false" xmlns:xs

高可用笔记(2)redis

Redis是一种key-value型数据库,基于内存,也可持久化,速度非常快.常用于做缓存. 首先安装Redis 安装 # 如果没有gcc,就先安装gcc $ yum install -y gcc gcc-c++ # 下载Redis源码包 $ wget http://download.redis.io/redis-3.2.6.tar.gz # 解压缩 $ tar xvf redis-3.2.6 $ cd redis-3.2.6 # 编译 $ make $ make install 安装完毕,看看

高可用笔记(1) nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的.官网是nginx.org. Nginx是本次HA方案中使用频率最高的,非常好用.感谢战斗民族! 测试环境 host1 192.168.30.1 (本文都在host1下进行) host2 192.168.30.2 host3 192.168.30.3 CentOS7 下yum安装Nginx 添