Nginx+Keepalived实现web服务高可靠/高可用

一般情况下,为了提升后台服务性能扩充及高可用,前端用一个nginx做反向代理即可_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlb25zdTIwMTk=,size_16,color_FFFFFF,t_70)

但是,作为互联网项目,纯2C的话必然需要做整体的高可用,不仅后台服务有N个,Nginx同样需要有N个,一主N备,当有一个服务器挂掉的时候,服务能瞬间切换到其他服务器,保证前台服务的高可用
在这里插入图片描述

下面就以上图为例,说明一下如何实现server的高可用。

1、准备

虚拟机两台,同样安装nginx,keepalived
在这里插入图片描述

2、修改nginx首页,启动nginx

简单起见,我们认为每个nginx都是代理一个服务,只用静态页作为测试

页面内容为”Welcome to 192.168.70.71″和“Welcome to 192.168.70.72”

/opt/web/index.html

<DOCTYPE html>
<html>
<head>
<title>页面标题</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
    box-sizing: border-box;
}

/* body 样式 */
body {
    font-family: Arial;
    margin: 0;
    font-size: 60px;
}

/* 标题 */
.header {
    padding: 30px;
    text-align: left;
    background: #1abc9c;
    color: white;
	
}

/* 标题字体加大 */
.header h1 {
    font-size: 60px;
}
</style>
</head>
<body>
<div class="header">
  <h1>keepalived负载均衡测试</h1>
  <p> welcome to 192.168.70.71</p>
</div>
</body>
</html>
/etc/nginx/nginx.conf

server {
  
      listen 80;
      server_name 192.168.70.75;
      location / {
      root /opt/web;
      index index.html;
      autoindex on;
     }

启动nginx

systemctl start nginx

3、修改keepalived的配置文件

主配置如下(默认配置文件:/etc/keepalived/keepalived.conf):

! Configuration File for keepalived

global_defs {
#   notification_email {
#     acassen@firewall.loc
#     failover@firewall.loc
#     sysadmin@firewall.loc
#   }
#   notification_email_from Alexandre.Cassen@firewall.loc
#   smtp_server 192.168.200.1
#   smtp_connect_timeout 30
   router_id LVS_DEVEL
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" 
interval 2    ## 检测时间间隔
weight -20
}


vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    chk_nginx ## 执行 Nginx 监控的服务
    }


    virtual_ipaddress {
        192.168.70.75
    }
}

从机配置(默认配置文件:/etc/keepalived/keepalived.conf)

! Configuration File for keepalived

global_defs {
#   smtp_connect_timeout 30
   router_id LVS_BAK
#   vrrp_skip_check_adv_addr
#   vrrp_strict
#   vrrp_garp_interval 0
#   vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2    ## 检测时间间隔
weight -20
}


vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
    chk_nginx ## 执行 Nginx 监控的服务
    }


    virtual_ipaddress {
        192.168.70.75
    }
}

3、编写监测心跳脚本

上面配置中可以看到有一个脚本文件:/etc/keepalived/nginx_check.sh
查看nginx是否启动,如果没启动则启动,如果启动不起来,停掉keepalived服务,此时心跳断掉,服务转向另一个nginx。

counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl start nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
/etc/init.d/keepalived stop
fi

fi
4、测试

启动192.168.70.71上的nginx和keepalive
启动192.168.70.72上的nginx和keepalive
访问虚拟IP:http://192.168.70.75
在这里插入图片描述

停掉192.168.70.71上的keepalive
在这里插入图片描述
rk,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlb25zdTIwMTk=,size_16,color_FFFFFF,t_70)

重新启动192.168.136.2上的keepalive,又会回到 Welcome to 192.168.70.71

此图像的alt属性为空;文件名为image-13.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值