应用环境:部分时候,WEB访问量一般,或者测试使用,利用Keepalived给Nginx做高可用即可满足要求。

测试环境

         

    

搭建步骤

  1. 安装软件

    在Nginx-A和Nginx-B上:

    ~]# yum install keepalived nmap -y    //nmap提供nmap命令,后面的Nginx检测脚本里会用到

  2. 配置Nginx-A

    [root@nginx-a ~]# vim /etc/keepalived/keepalived.conf    //配置好的内容如下

! Configuration File for keepalived

global_defs {
router_id Nginx-A
} vrrp_script chk_nginx {        ## chk_nginx名字可以自定义,与下面的track_script段中的名字要一致
script "/opt/chk_nginx.sh"    ## chk_nginx.sh的内容下面给出
interval
weight
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
138.138.82.222
}
track_script {
chk_nginx
}
}

    保存,退出;

    [root@nginx-a ~]# vim /opt/chk_nginx.sh      //新建Nginx检测脚本,内容如下

    [root@nginx-a ~]# chmod +x /opt/chk_nginx.sh    //给脚本添加执行权限

#!/bin/sh
# check nginx server status
NGINX=/usr/sbin/nginx
PORT=80 nmap localhost -p $PORT | grep "$PORT/tcp open"
#echo $?
if [ $? -ne 0 ];then
$NGINX -s stop
$NGINX
sleep 3
nmap localhost -p $PORT | grep "$PORT/tcp open"
[ $? -ne 0 ] && /etc/init.d/keepalived stop
fi

    说明:该脚本的意义就是先检测Nginx是否已经开启默认的80端口:

       如果存在80端口,一切正常;

       如果不存在80端口,就执行if段中的语句:先关一下Nginx,在启动Nginx,等待3秒,再次检测80端口,如果还不存在,则杀死keepalived,

       这样一来,访问就走另外一台安装keepalived的上WEB端。(如果两台都出问题,那只能呵呵了)

    [root@nginx-a ~]# service keepalived start  //启动keepalived

    [root@nginx-a ~]# chkconfig keepalived on  //加入开机启动

  3. 配置Nginx-B

    [root@nginx-b ~]# vim /etc/keepalived/keepalived.conf    //配置好的内容如下

! Configuration File for keepalived

global_defs {
router_id Nginx-B
}
vrrp_script chk_nginx {        ## 同Nginx-A
script "/opt/chk_nginx.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
138.138.82.222
}
track_script {          
chk_nginx
}
}

    保存,退出;

    [root@nginx-b ~]# vim /opt/chk_nginx.sh  // 脚本内容同Nginx-A ,见上面

    [root@nginx-b ~]# chmod +x /opt/chk_nginx.sh  //给脚本添加执行权限

    [root@nginx-b ~]# service keepalived start  //启动keepalived

    [root@nginx-b ~]# chkconfig keepalived on  //加入开机启动

  4. 测试

    找一台客户端执行命令:

    ~]# while true; do curl 138.138.82.222 ;sleep 1;done

     

     

     

     

    测试成功,达到了两台nginx高可用,并能够健康检测nginx(这里实际检测80端口,实际意义可作一样)。

  结束.

  

附上另一种检测脚本:

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

Keepalived+Nginx搭建主从高可用并带nginx检测的更多相关文章

  1. nginx+keepalived+tomcat实现主从高可用负载均衡

    设备: 1.准备四台虚拟机,两台tomcat,两台nginx 2.两台tomcat配置相同,测试页不同 两台Tomcat配置完全相同.只有测试页面不同 安装jdk和tomcat [root@local ...

  2. Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建

    Keepalived + Nginx + Tomcat 的高可用负载均衡架构搭建 Nginx 是一个高性能的 HTTP反向代理服务器 Keepalived 是一个基于VRRP协议来实现的LVS服务高可 ...

  3. 搭建 Keepalived + Nginx + Tomcat 的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  4. 搭建Keepalived + Nginx + Tomcat的高可用负载均衡架构

    1 概述 初期的互联网企业由于业务量较小,所以一般单机部署,实现单点访问即可满足业务的需求,这也是最简单的部署方式,但是随着业务的不断扩大,系统的访问量逐渐的上升,单机部署的模式已无法承载现有的业务量 ...

  5. Keepalived+Nginx+Tomcat 实现高可用Web集群

    https://www.jianshu.com/p/bc34f9101c5e Keepalived+Nginx+Tomcat 实现高可用Web集群 0.3912018.01.08 20:28:59字数 ...

  6. 实现基于Keepalived主从高可用集群网站架构

    背景 上一期我们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展 ...

  7. JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备

    1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...

  8. Nginx(haproxy)+keepalived+Tomcat双主高可用负载均衡

    周末的时候一个正在学Linux的朋友问我,高可用怎么玩?我和他微信了将近三个小时,把Nginx和haproxy双主高可用教给他了,今天突然想把这个给写进博客里,供给那些正在学习Linux系统的朋友们, ...

  9. Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

    配置环境说明: KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxy keepalived 2台 192.168.1.10 192 ...

随机推荐

  1. centos ping www.baidu.com ping: unknown host www.baidu.com

    [root@zabbix ~]# cat /etc/resolv.conf ; generated by /sbin/dhclient-script nameserver 219.141.136.10

  2. Azure系列2.1.5 —— BlobOutputStream

    (小弟自学Azure,文中有不正确之处,请路过各位大神指正.) 网上azure的资料较少,尤其是API,全是英文的,中文资料更是少之又少.这次由于公司项目需要使用Azure,所以对Azure的一些学习 ...

  3. [转帖]Docker容器CPU、memory资源限制

    Docker容器CPU.memory资源限制 https://www.cnblogs.com/zhuochong/p/9728383.html 处理事项内容等 这一块内容感觉 不清楚.. 背景 在使用 ...

  4. easyUI定区关联快递员js代码

    easyUI定区关联快递员js代码: <script type="text/javascript"> $.fn.serializeJson=function(){ va ...

  5. Client将数据读写HDFS流程

    HDFS介绍 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的. 什么是分布式文件系统 分布式文件系统(Dist ...

  6. valgrind 检查内存泄露

    https://www.oschina.net/translate/valgrind-memcheck

  7. kubernetes资源类别介绍

    类别 名称 资源对象 Pod.ReplicaSet.ReplicationController.Deployment.StatefulSet.DaemonSet.Job.CronJob.Horizon ...

  8. 一个好玩的小制作,以及在<a/>中的标签href="javascript:;"/href="javascript:void(0);"/href="javascript:"的用法

    一:一个小图标的制作 我们在支付宝.微信等某些地方上传文件时会遇到以下的图标,但是这样的图标其实可以用<a/>标签以及css样式完成, 具体代码如下: <!DOCTYPE html& ...

  9. oracle NVL与Coalesce的区别

    先来说一下用法上的区别 : nvl(COMMISSION_PCT,0)如果第一个参数为null,则返回第二个参数如果第一个参数为非null,则返回第一个参数 COALESCE(EXPR1,EXPR2, ...

  10. Data Science With R In Visual Studio

    R Projects Similar to Python, when we installed the data science tools we get an “R” section in our ...