keepalived安装文档

通告协议:使用IANA所指定的组播地址224.0.0.18进行VRRP通告;

VRRP追踪:基于接口状态来改变其VRRP优先级来确定最佳的VRRP路由器成为master;

配置keepalived为实现haproxy高可用的配置文件示例:

! Configuration File for keepalived

global_defs {

notification_email {

linuxedu@foxmail.com

mageedu@126.com

}

notification_email_from kanotify@magedu.com

smtp_connect_timeout 3

smtp_server 127.0.0.1

router_id LVS_DEVEL

}

vrrp_script chk_haproxy {

script “killall -0 haproxy”

interval 1

weight 2

}

vrrp_script chk_mantaince_down {

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

interval 1

weight 2

}

vrrp_instance VI_1 {

interface eth0

state MASTER # BACKUP for slave routers

priority 101 # 100 for BACKUP

virtual_router_id 51

garp_master_delay 1

authentication {

auth_type PASS

auth_pass password

}

track_interface {

eth0

}

virtual_ipaddress {

172.16.100.1/16 dev eth0 label eth0:0

}

track_script {

chk_haproxy

chk_mantaince_down

}

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

}

注意:

1、上面的state为当前节点的起始状态,通常在master/slave的双节点模型中,其一个默认为MASTER,而别一个默认为BACKUP。

2、priority为当关节点在当前虚拟路由器中的优先级,master的优先级应该大于slave的;

下面是一个notify.sh脚本的简单示例:

#!/bin/bash

# Author: MageEdu linuxedu@foxmail.com

# description: An example of notify script

vip=172.16.100.1

contact=‘root@localhost’

Notify() {

mailsubject=“`hostname` to be $1: $vip floating”

mailbody=“`date ‘+%F %H:%M:%S’`: vrrp transition, `hostname` changed to be $1”

echo m a i l b o d y ∣ m a i l − s " mailbody | mail -s " mailbodymails"mailsubject" $contact

}

case “$1” in

master)

notify master

/etc/rc.d/init.d/haproxy start

exit 0

;;

backup)

notify backup

/etc/rc.d/init.d/haproxy restart

exit 0

;;

fault)

notify fault

exit 0

;;

*)

echo ‘Usage: `basename $0` {master|backup|fault}’

exit 1

;;

esac

配置keepalived为实现haproxy高可用的双主模型配置文件示例:

说明:其基本实现思想为创建两个虚拟路由器,并以两个节点互为主从。

! Configuration File for keepalived

global_defs {

notification_email {

linuxedu@foxmail.com

mageedu@126.com

}

notification_email_from kanotify@magedu.com

smtp_connect_timeout 3

smtp_server 127.0.0.1

router_id LVS_DEVEL

}

vrrp_script chk_haproxy {

script “killall -0 haproxy”

interval 1

weight 2

}

vrrp_script chk_mantaince_down {

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

interval 1

weight 2

}

vrrp_instance VI_1 {

interface eth0

state MASTER # BACKUP for slave routers

priority 101 # 100 for BACKUP

virtual_router_id 51

garp_master_delay 1

authentication {

auth_type PASS

auth_pass password

}

track_interface {

eth0

}

virtual_ipaddress {

172.16.100.1/16 dev eth0 label eth0:0

}

track_script {

chk_haproxy

chk_mantaince_down

}

notify_master “/etc/keepalived/notify.sh master”

notify_backup “/etc/keepalived/notify.sh backup”

notify_fault “/etc/keepalived/notify.sh fault”

}

vrrp_instance VI_2 {

interface eth0

state BACKUP # BACKUP for slave routers

priority 100 # 100 for BACKUP

virtual_router_id 52

garp_master_delay 1

authentication {

auth_type PASS

auth_pass password

}

track_interface {

eth0

}

virtual_ipaddress {

172.16.100.2/16 dev eth0 label eth0:1

}

track_script {

chk_haproxy

chk_mantaince_down

}

}

说明:

1、对于VI_1和VI_2来说,两个节点要互为主从关系;

LVS + keepalived的实现:

! Configuration File for keepalived

global_defs {

notification_email {

linuxedu@foxmail.com

mageedu@126.com

}

notification_email_from kanotify@magedu.com

smtp_connect_timeout 3

smtp_server 127.0.0.1

router_id LVS_DEVEL

}

vrrp_script chk_schedown {

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

interval 2

weight -2

}

vrrp_instance VI_1 {

interface eth0

state MASTER

priority 101

virtual_router_id 51

garp_master_delay 1

authentication {

auth_type PASS

auth_pass password

}

track_interface {

eth0

}

virtual_ipaddress {

172.16.100.1/16 dev eth0 label eth0:0

}

track_script {

chk_schedown

}

}

virtual_server 172.16.100.1 80 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 50

protocol TCP

# sorry_server 192.168.200.200 1358

real_server 172.16.100.11 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.16.100.12 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

如果要使用TCP_CHECK检测各realserver的健康状态,那么,上面关于realserver部分的定义也可以替换为如下内容:

virtual_server 172.16.100.1 80 {

delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 300

protocol TCP

sorry_server 127.0.0.1 80

real_server 172.16.100.11 80 {

weight 1

TCP_CHECK {

tcp_port 80

connect_timeout 3

}

}

real_server 172.16.100.12 80 {

weight 1

TCP_CHECK {

connect_port 80

connect_timeout 3

}

}

}

说明:其中的sorry_server是用于定义所有realserver均出现故障时所用的服务器。

keepalived通知脚本进阶示例:

下面的脚本可以接受选项,其中:

-s, --service SERVICE,…:指定服务脚本名称,当状态切换时可自动启动、重启或关闭此服务;

-a, --address VIP: 指定相关虚拟路由器的VIP地址;

-m, --mode {mm|mb}:指定虚拟路由的模型,mm表示主主,mb表示主备;它们表示相对于同一种服务而方,其VIP的工作类型;

-n, --notify {master|backup|fault}:指定通知的类型,即vrrp角色切换的目标角色;

-h, --help:获取脚本的使用帮助;

#!/bin/bash

# Author: MageEdu linuxedu@foxmail.com

# description: An example of notify script

# Usage: notify.sh -m|–mode {mm|mb} -s|–service SERVICE1,… -a|–address VIP -n|–notify {master|backup|falut} -h|–help

#contact=‘linuxedu@foxmail.com’

helpflag=0

serviceflag=0

modeflag=0

addressflag=0

notifyflag=0

contact=‘root@localhost’

Usage() {

echo “Usage: notify.sh [-m|–mode {mm|mb}] [-s|–service SERVICE1,…] <-a|–address VIP> <-n|–notify {master|backup|falut}>”

echo “Usage: notify.sh -h|–help”

}

ParseOptions() {

local I=1;

if [ $# -gt 0 ]; then

while [ $I -le $# ]; do

case $1 in

-s|–service)

[ $# -lt 2 ] && return 3

serviceflag=1

services=(`echo $2|awk -F"," ‘{for(i=1;i<=NF;i++) print $i}’`)

shift 2 ;;

-h|–help)

helpflag=1

return 0

shift

;;

-a|–address)

[ $# -lt 2 ] && return 3

addressflag=1

vip=$2

shift 2

;;

-m|–mode)

[ $# -lt 2 ] && return 3

mode=$2

shift 2

;;

-n|–notify)

[ $# -lt 2 ] && return 3

notifyflag=1

notify=$2

shift 2

;;

*)

echo “Wrong options…”

Usage

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
vice)

[ $# -lt 2 ] && return 3

serviceflag=1

services=(`echo $2|awk -F"," ‘{for(i=1;i<=NF;i++) print $i}’`)

shift 2 ;;

-h|–help)

helpflag=1

return 0

shift

;;

-a|–address)

[ $# -lt 2 ] && return 3

addressflag=1

vip=$2

shift 2

;;

-m|–mode)

[ $# -lt 2 ] && return 3

mode=$2

shift 2

;;

-n|–notify)

[ $# -lt 2 ] && return 3

notifyflag=1

notify=$2

shift 2

;;

*)

echo “Wrong options…”

Usage

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-JJhxCmUG-1715792951712)]

[外链图片转存中…(img-zt7NAwLw-1715792951712)]

[外链图片转存中…(img-ka744WOE-1715792951712)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值