Nginx合集-高可用(Keepalived)

createh52周前 (06-04)技术教程8

Keepalived简介

Keepalived是Linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。

它与HeartBeat实现类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供HA软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。

Keepalive服务的两大用途:healthcheck和failover

ha failover功能:实现LB Master主机和Backup主机之间故障转移和自动切换

这是针对有两个负载均衡器Direator同时工作而采取的故障转移措施,当主负载均衡器失效或者出现故障时,备份的负载均衡器(BACKUP)将自动接管主负载均衡器的所有工作(vip资源以及相关服务):一旦主负载均衡器故障恢复,MASTER又会接管回它原来的工作,二备份复杂均衡器(BACKUP)会释放master是小事它接管的工作,此时两者将恢复到最初各自的角色

工作原理:

编辑

环境准备

主机1: 192.168.133.131

主机2: 192.168.133.132

VIP: 192.168.133.130

操作系统

IP

角色


备注

centos7 7.9.2009

192.168.133.130

vip(虚拟ip)




192.168.133.131

keepalived+nginx1




192.168.133.132

keepalived+nginx2



安装nginx

安装keepalived

服务安装

yum方式直接安装即可,该方式会自动安装依赖:

yum -y install keepalived

yum方式安装的会生产配置文件在/etc/keepalived下:

keepalived.conf

两台服务器均需要安装keepalived

服务配置

  1. 先准备nginx的检测脚本

cat
/etc/keepalived/check_nginx.sh 内容如下

#bin/bash
counter=$(ps -C nginx |grep -v PID |wc -l) #取命令结果赋值给变量
if [ $counter==0 ];then   #判断变量里的值如果等于0
    systemctl start nginx   #尝试启动nginx  
    sleep 5
    counter=$(ps -C nginx |grep -v PID |wc -l)
    if [ $counter==0 ];then #在判断变量里的值如果还等于0
        systemctl stop keepalived  
    fi
fi

脚本授权 chmod +x
/etc/keepalived/check_nginx.sh

2 .准备keepalived的配置

192.168.133.131配置如下:

配置前先备份原有配置,原有配置项较多,有些不需要。

cp /etc/keepalived/keepalived.conf   /etc/keepalived/keepalived.conf.bak

vim /etc/keepalived/keepalived.conf

输入如下配置:

! Configuration File for keepalived

#检测脚本定义
vrrp_script check_nginx {     #脚本模块
    script  "/etc/keepalived/check_nginx.sh"    #脚本路径
interval 2    #检测脚本时间2秒
weight 10     #优先级
}

global_defs {
   router_id master-ip   
   vrrp_skip_check_adv_addr
   script_user root
   enable_script_security

   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER         # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33      # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 51 # 虚拟路由编号,主从要一致
    priority 100         # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1         # 检查间隔,默认为1s(vrrp组播周期秒数)
    authentication {     #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_type PASS  
        auth_pass 1111
    }

    track_script { 
        check_nginx      #(调用检测脚本)
    }

    virtual_ipaddress {
        192.168.133.130  # 定义虚拟ip(VIP),可多设,每行一个
    }
}

192.168.133.132 配置如下:

! Configuration File for keepalived

vrrp_script check_nginx {     #脚本模块
    script  "/etc/keepalived/check_nginx.sh"    #脚本路径
interval 2    #检测脚本时间2秒
weight 10    #优先级
}

global_defs {
  router_id slave-ip
   vrrp_skip_check_adv_addr
   script_user root
   enable_script_security

   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }

    track_script {
        check_nginx
    }

    virtual_ipaddress {
        192.168.133.130
    }
}

启动keepalived

systemctl start keepalived

启动完成不报错即可

验证是否绑定虚拟ip

通过命令 ip a s 查看

[root@mytest ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:cb:60:2d brd ff:ff:ff:ff:ff:ff
    inet 192.168.133.131/24 brd 192.168.133.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.133.130/32 scope global ens33
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:31:8e:87:f1 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

发现存在ip 为192.168.133.130的ip,配置到此完成

验证

停止keepalived服务,或者shutdown主机,发现ip漂移至备节点

[root@mytest ~]# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a6:72:c0 brd ff:ff:ff:ff:ff:ff
    inet 192.168.133.132/24 brd 192.168.133.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.133.130/32 scope global ens33
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:34:ac:b9:31 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

相关文章

CentOS Nginx安装及配置

安装在 CentOS 上,可直接使用 yum 来安装 Nginxyum install nginx -y扩展: 卸载用 yum remove nginx启动安装完成后,使用 nginx 命令启动 Ng...

windows下安装nginx,并注册为系统服务,开机自启动

1.官网地址:http://nginx.org/en/download.html选择windows版的最新稳定版,如下图2.下载:点击下载链接得到:nginx-1.20.1.zip;使用解压工具进行解...

后端开发必看!没网也能在 Linux 服务器上安装 Nginx 的神操作

在互联网大厂后端开发的日常工作里,不少人都遇到过 “紧急时刻”—— 需要在没有网络的 Linux 服务器上安装 Nginx 服务。望着空白的网络连接状态,一时间不知道从何下手?别着急!今天就手把手教你...

nginx如何安装使用

nginx是什么?Nginx,简称为"engine x",是一个高性能的HTTP和反向代理web服务器,同时也Nginx,简称为"engine x",是一个高性能的HT...

一步步教你使用 docker 快速安装实用的 nginx 服务器

nginx 是一款高性能的 web 服务器,支持反向代理、负载均衡、静态资源管理,非常实用。使用 docker 安装 nginx 非常简便,不仅可以快速启动服务,因为容器特性,有良好的隔离性,还方便管...

windows下将nginx做成服务

注意:本例子拿Nginx作为演示,其余的windows程序也可以通过此方式做成服务windows下安装Nginx后,只能通过双击进行来启动,通过任务管理器来停止进程,如果要通过命令行启动Nginx,可...