3天精通nginx第三天-nginx实现高可用

在这里插入图片描述

本篇博客只讲解怎么实现nginx高可用,不会仔细讲解keepalived的详细配置内容

高可靠概念内容

HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。

在这里插入图片描述

keepalive是一款可以实现高可靠的软件,通常部署在2台服务器上,分为一主一备。keepalived会虚拟出一个vip地址,用户访问这个vip地址,Keepalived可以对本机上的进程进行检测,一旦Master检测出某个进程出现问题,将自己切换成Backup状态,然后通知另外一个节点切换成Master状态,这样就保证了系统的高可用。

keepalived安装

现有两台机器安装了nginx分别为:192.168.110.102、192.168.110.103,需要保证系统的高可用,则在两台机器安装keepalive

安装192.168.110.102

1.依赖安装

yum install -y ca-certificates  # 如果安全连接拒接则安装
yum -y install openssl-devel # 安装OpenSSL依赖
yum -y install libnl libnl-devel # 安装支持ipv6
yum install -y libnfnetlink-devel 

2.创建 /usr/local/tool文件夹

mkdir /usr/local/tool/

3.将文件上传到该文件夹下后下载,官网地址为:https://keepalived.org/download.html

wget https://keepalived.org/software/keepalived-2.0.20.tar.gz

4.解压文件

tar -zxvf keepalived-2.0.20.tar.gz

5.进入keepalived-2.0.20文件夹下

cd keepalived-2.0.20

6.检查安装环境,并指定将来要安装的路径

./configure --prefix=/etc/keepalived --sysconf=/etc

7.编译并安装

make && make install

8.keepalived.conf配置文件配置

首先获取到系统网卡的名称
在这里插入图片描述

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33 #系统网卡
    virtual_router_id 51 #主备两机器一致
    priority 100   #值大的机器是master,值小的为BACKUP
    advert_int 1
    authentication { # 认证信息
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress { #可虚拟多个ip
        192.168.110.200
    }
}

9.启动keepalived

/etc/keepalived/sbin/keepalived 
  1. 查看是否启动完成
ps -ef |grep keepalived

在这里插入图片描述

11.查看启动日志

tail -f /var/log/messages

在这里插入图片描述

安装192.168.110.103
  1. 按照192.168.110.103的1到7进行安装
  2. keepalived.conf配置文件配置
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id LVS_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
    }
    virtual_ipaddress {
        192.168.244.200
    }
}


  1. 按照192.168.110.102的9到11步启动并查看日志信息

这样keepalived就搭建完成了,下面我们访问一下,访问http://192.168.110.200/

在这里插入图片描述

访问VIP地址http://192.168.110.200/,访问到了102这台master的nginx,当将102上的keepalived关闭时,再一次访问。

在这里插入图片描述

当102的keepalived被关闭时,自动切换到了103上的nginx上。

在主服务器上添加检测脚本

当主服务器的keepalived启动,但nginx已经停止运行了,keepalived不会自动关闭或指定到备用服务器上,这就需要我们添加检测脚本。

1.创建可执行文件,添加完成后,为chk_nginx_pid.sh 文件授权,便于脚本获得执行权限

/etc/keepalived/sbin/chk_nginx_pid.sh

2.编写检测脚本

#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
      /usr/local/nginx/sbin/nginx                #重启nginx
      if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then    #nginx重启失败,则停掉keepalived服务,进行VIP转移
              killall keepalived    #杀掉,vip就漫游到另一台机器                
      fi
fi

3.修改keepalived脚本,添加nginx检测脚本

! Configuration File for keepalived

global_defs {
   router_id LVS_1
}
vrrp_script chk_http_port {
    script "/data/program/keepalived/sbin/chk_nginx_pid.sh" #心跳执行的脚本
    interval 2                          #(检测脚本执行的间隔,单位是秒)
    weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33   #系统网卡
    virtual_router_id 51 #主备两机器一致
    priority 100   #值大的机器,胜出
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_http_port            #(调用检测脚本)
    }
    virtual_ipaddress { #可虚拟多个ip
        192.168.110.200
    }
}

keepalived抢占模式和非抢占模式

  1. 默认配置为抢占式

如果master挂掉,则跳转到backup,如果master重新启动,则重新指向master。

  1. 非抢占模式

非抢占模式所有节点都为backup,按照配置的优先级来决定哪个是master。如果其中一个挂掉,则另一个变成master。

#Master
    vrrp_instance VI_1 {
        state BACKUP
        priority 150
        nopreempt #非抢占模式 
        .
        .
        .
    }

#Backup
    vrrp_instance VI_1 {
        state BACKUP
        priority 100
        nopreempt #非抢占模式 
        .
        .
        .
    }

如果感觉这篇文章对您有帮助,可以给博主点赞、评论、收藏,这样是对博主最大的鼓励,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孑疋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值