应用环境:部分时候,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

最新文章

  1. React学习笔记-2-什么是jsx?如何使用jsx?
  2. 带你玩转JavaWeb开发之五-如何完成响应式开发页面
  3. equals == 比较
  4. 第一代intel核显id:0046的10.9驱动安装详解(转)
  5. PPP(杜撰)
  6. Deep learning:四十七(Stochastic Pooling简单理解)
  7. slim
  8. CSS成长之路----知识点篇
  9. centos 下 Qt Creator 的安装使用
  10. Android -- 获取摄像头帧数据解码
  11. nicehair
  12. java中如何获取系统时间
  13. Certbot为域名申请免费SSL证书
  14. Linux中安装nodejs及插件
  15. BZOJ.3351.[IOI2009]Regions(根号分治 差分)
  16. Docker容器命令
  17. php小数加减精度问题,比特币计算精度问题
  18. layer数据表格换行
  19. Oracle substr() instr() 用法
  20. PHP 操作redis 封装的类 转的

热门文章

  1. symfony框架
  2. [2018.05].NET Core 3 and Support for Windows Desktop Applications
  3. js中获取当前项目名等
  4. Handler主线程子线程之间的互相通信
  5. 【转】使用 lsof 查找打开的文件
  6. include与__autoload与命名空间namespace与PSR4详解
  7. postfix 邮箱设置及常见错误
  8. vscode git設置
  9. idea中Lombok的使用
  10. react使用setstate注意的两点