且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

菜鸟学Linux 第093篇笔记 keepalived

更新时间:2022-10-04 14:30:10

菜鸟学Linux 第093篇笔记 keepalived




内容总览

keepalived介绍

配置keepalived的ipvs功能

keepalived的几个问题解决方法




keepalived

它可以实现ipvs的功能,并且还可以实现前端的ipvs-server高可用,以及后台realserver

的健康状态检查,而不像ipvs需要用户自己来写脚本完成后台的realserver健康状态检测


HA的底层功能

ipvs --> ha 为ipvs提供高可用功能ha

ipvs --> 可以使VIP在节点间流转

vrrp 虚拟路由冗余协议

能将多个物理接口虚拟成一个物理接口,用来解决局域网网关的冗余






配置keepalived 使其实现ipvs的功能,可以检测后台realserver的状态


准备工作

两台realserver节点 192.168.11.105 192.168.11.106

/proc/sys/net/ipv4/conf/all/arp_announce=2

/proc/sys/net/ipv4/conf/all/arp_ignore=1

/proc/sys/net/ipv4/conf/lo/arp_announce=2

/proc/sys/net/ipv4/conf/lo/arp_ignore=1

netstat -tunlp 开启80端口 (httpd)


两台keepalived + ipvsadm节点 192.168.11.101 192.168.11.102

虚拟的IP为192.168.11.100



1. 两台keepalived + ipvsadm节点安装

# yum -y install keepalived ipvsadm(安装ipvsadm软件是为了查看规则)


2. 配置节点的keepalived /etc/keepalived/keepalived.conf

# vim /etc/keepalived/keepalived.conf

修改如下

global_defs {

   notification_email {

    root@localhost (此项里是添加email地址,当有信息是将通知到此mail里)

   }

   notification_email_from keepalive@localhost (寄件人)

   smtp_server 127.0.0.1  

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}


vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 101

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass keepaliveps

    }

    virtual_ipaddress {

192.168.11.100/24 dev eth0 label eth0:0  (所虚拟的地址)

    }

}


virtual_server 192.168.11.100 80 {

    delay_loop 6

    lb_algo rr

    lb_kind DR

    nat_mask 255.255.255.0

    #persistence_timeout 50

    protocol TCP


    real_server 192.168.11.105 80 {

        weight 1

        HTTP_GET { (验证http的方式)

            url {

              path /

      status_code 200

            }

            connect_timeout 2

            nb_get_retry 3

            delay_before_retry 1

        }

    }

    real_server 192.168.11.106 80 {

        weight 1

        HTTP_GET {

            url {

              path /

      status_code 200

            }

            connect_timeout 2

            nb_get_retry 3

            delay_before_retry 1

        }

    }

}

备节点里只需要将此配置文件复制过去然后修改state MASTER 为备份节点即可BACKUP



keepalived的几个问题解决

1. 所有realserver都down,如何处理?

在两台前端ipvs服务器安装httpd 并开启此服务 记得要添加html文档

在配置文件/etc/keepalived/keepalived.conf

virtual_server 192.168.11.100 80 括号里添加sorry_server 127.0.0.1 80


2. 自写监测脚本,完成维护模式切换ipvs-server主备切换

# vim /etc/keepalived/keepalived.conf

在vrrp_instance 添加一段

    track_script {

chk_schedown

    }

添加一段在末尾

vrrp_script chk_schedown {

    script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

    interval 1

    weight -2

    fall 2

    rise 1

}

当要测试使其ipvs服务器切换只需要在/etc/keepalived/目录创建一个down文件,查看其是否

会切换


3. 如何在vrrp事务发生时,主备切换时,如何发送警告邮件给指定的管理员?

编写脚本vim /etc/keepalived/notify.sh

#!/bin/bash

#


contact='root@localhost'


Usage() {

  echo "Usage: `basename $0` {master|backup|fault} VIP"

}


Notify() {

  subject="`hostname`'s state changed to $1"

  mailbody="`date "+%F %T"`: `hostname`'s state changed to $1, $VIP floating."

  echo $mailbody | mail -s "$subject" $contact

}


VIP=$2


case $1 in

  master)

    Notify master

    ;;

  backup)

    Notify backup

    ;;

  fault)

    Notify fault

    ;;

  *)

    Usage

    exit 1

    ;;

esac

此脚本可接受参数,当接受到指定的参数时,则会将相应的信息发送给root用户的mailbox里


编辑/etc/keepalived/keepalived.conf

在vrrp_instance 括号里添加

    notify_master "/etc/keepalived/notify.sh master 192.168.11.100"

    notify_backup "/etc/keepalived/notify.sh backup 192.168.11.100"

    notify_fault "/etc/keepalived/notify.sh fault 192.168.11.100"


至此,当主节点和备节点切换时,,则会以邮件形式通知给root

本文转自Winthcloud博客51CTO博客,原文链接http://blog.51cto.com/winthcloud/1895007如需转载请自行联系原作者

Winthcloud