概念简单认知:

Keepalived:它的诞生最初是为ipvs(一些服务,内核中的一些规则)提供高可用性的,最初最主要目的是能够自主调用ipvsadm来生成规则,并且能够自动实现将用户访问的地址转移到其他节点上进行实现的。

Keepalived:核心包含两个ckeckers和VRRP协议。

ckeckers:检查服务检查reserved的健康状况的,基于脚本也可检查服务本身的健康状况。这里是实现ipvs后端健康状况的检测的。

VRRP:是一种容错协议,它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。VRRP中每个节点之间都有优先级的一般为0-255(0,255有特殊用法)数字越大优先级越高。

相关术语解析:

虚拟路由器:由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关。

VRID:虚拟路由器的标识。有相同VRID的一组路由器构成一个虚拟路由器。

Master路由器:虚拟路由器中承担报文转发任务的路由器。

Backup路由器:Master路由器出现故障时,能够代替Master路由器工作的路由器。

虚拟IP 地址:虚拟路由器的IP 地址。一个虚拟路由器可以拥有一个或多个IP地址。

IP地址拥有者:接口IP地址与虚拟IP地址相同的路由器被称为IP地址拥有者。

虚拟MAC地址:一个虚拟路由器拥有一个虚拟MAC地址。虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。

优先级:VRRP根据优先级来确定虚拟路由器中每台路由器的地位。

非抢占方式:如果Backup路由器工作在非抢占方式下,则只要Master路由器没有出现故障Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器。

抢占方式:如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态。


平台信息介绍:

Master:172.16.18.7

backup:172.16.18.9

系统版本:centosx86_64

keepalived版本:1.2.7

主配置文件:/etc/keepalived/keepalived.conf

服务脚本:/etc/rc.d/init,d/keepalived


应用实践:

将两个节点的时间同步

##############实现双机互信#######
#########node1#######
ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.9
#########node2#######
ssh-keygen -t rsa -P ''
ssh-copy-id -i .ssh/id_rsa.pub root@172.16.18.7
##############查看时间###########
[root@node1 ~]# date;ssh node2 'date'
#####为实现同步可使用下面同步#####
crontab -e
*/5 * * * * /usr/sbin/ntpdate 172.16.0.1 &> /dev/null

安装:

[root@node1 ~]# yum -y install keepalived

查看编辑配置文件:

vim /etc/keepalived/keepalived.conf

解析配置文件:

配置文件有三部分组成:

(1):GLOBAL CONFIGURATION        全局配置段有两个字段:Global definitions              #全局定义Static routes                   #静态路由
(2):VRRPD CONFIGURATION         配置VRRP子进程协议段又称定义虚拟路由的有两个字段:VRRP synchronization group(s)   #VRRP的同步组(一般不用)什么是同步组?就是一台机器上有配置两个VIP,为了实现两个VIP要同步工作同时转移出去,所以必须要定义成同步组从而当成一个资源来转移。VRRP instance(s)                #VRRP的实例任何一个虚拟路由定义好之后在任何一个节点上都应该定义一个keepalived运行实例,这两个节点上的实例要匹配。keepalived最令人头疼的是两个节点上的初始实例是不一样的,因为每一个节点都有初始状态而且它有默认的优先级,高的为Master低的为Backup所以导致了两个节点上的虚拟路由的实例配置是不一样的。
(3):LVS CONFIGURATION            LVS配置段有两个字段:Virtual server group(s)         #虚拟服务器组Virtual server(s)               #虚拟服务器(ipvs规则)

详细解析:

keepalived.conf

global_defs {    #全局配置,这里额外的静态路由并未添加因为它是非必要的,除非我们在当前或特定的主机上生成特殊的静态路由等notification_email {                #收件人信息acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc   #发件人信息(可以随意伪装)smtp_server 192.168.200.1      #发邮件的服务器(一定不可为外部地址)smtp_connect_timeout 30      #连接超时时间router_id LVS_DEVEL          #路由器的标识(可以随便改动)
}
vrrp_instance VI_1 {            #配置虚拟路由器的(VI_1是实例名称)state MASTER               #初始状态,master|backup,当state指定的instance的初始化状态,在两台服务器都启动以后,马上发生竞选,优先级高的成为MASTER,所以这里的MASTER并不是表示此台服务器一直是MASTERinterface eth0              #通告选举所用端口virtual_router_id 51        #虚拟路由的ID号(一般不可大于255)priority 100                #优先级信息advert_int 1                #初始化通告几个authentication {            #认证auth_type PASS          #认证机制auth_pass 1111          #密码(尽量使用随机)}virtual_ipaddress {         #虚拟地址(VIP地址)192.168.200.16192.168.200.17192.168.200.18}
}

编辑设置配置信息:

[root@node1 ~]# vim /etc/keepalived/keepalived.conf     #主节点
global_defs {notification_email {root@localhost}notification_email_from keadmin@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 55priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.18.100}
}
[root@node1 ~]# scp /etc/keepalived/keepalived.conf 172.16.18.9:/etc/keepalived/             #复制至备节点
[root@node2 keepalived]# vim keepalived.conf     #备节点
global_defs {notification_email {root@localhost}notification_email_from keadmin@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_instance VI_1 {state BACKUP                         #状态interface eth0virtual_router_id 55                 #一定要和主节点一致priority 90                          #优先级别一定低于主节点advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.18.100}
}

启动主节点:

[root@node1 ~]# service keepalived start

启动备节点:

[root@node2 ~]# service keepalived start

查看状态:

###############节点一############
[root@node1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:06:a6:49 brd ff:ff:ff:ff:ff:ffinet 172.16.18.7/16 brd 172.16.255.255 scope global eth0inet 172.16.18.100/32 scope global eth0    #此时VIP在node1节点上inet6 fe80::20c:29ff:fe06:a649/64 scope linkvalid_lft forever preferred_lft forever
###############节点二############
[root@node2 keepalived]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:c8:b5 brd ff:ff:ff:ff:ff:ffinet 172.16.18.9/16 brd 172.16.255.255 scope global eth0inet6 fe80::20c:29ff:fe12:c8b5/64 scope linkvalid_lft forever preferred_lft forever

查看主节点启动日志信息:

##############主节点#############
[root@node1 ~]# tail -20 /var/log/messages
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Netlink reflector reports IP 172.16.18.7 added
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Netlink reflector reports IP fe80::20c:29ff:fe06:a649 added
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Registering Kernel netlink reflector
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Registering Kernel netlink command channel
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 25 17:32:17 node1 Keepalived_healthcheckers[16628]: Configuration is using : 6832 Bytes
Sep 25 17:32:18 node1 kernel: IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
Sep 25 17:32:18 node1 kernel: IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
Sep 25 17:32:18 node1 kernel: IPVS: ipvs loaded.
Sep 25 17:32:18 node1 Keepalived_healthcheckers[16628]: Using LinkWatch kernel netlink reflector...
Sep 25 17:32:18 node1 Keepalived_vrrp[16629]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 25 17:32:18 node1 Keepalived_vrrp[16629]: Configuration is using : 62657 Bytes
Sep 25 17:32:18 node1 Keepalived_vrrp[16629]: Using LinkWatch kernel netlink reflector...
Sep 25 17:32:18 node1 Keepalived_vrrp[16629]: VRRP sockpool: [ifindex(2), proto(112), fd(11,12)]
Sep 25 17:32:19 node1 Keepalived_vrrp[16629]: VRRP_Instance(VI_1) Transition to MASTER STATE       #事务开始转换为Master状态
Sep 25 17:32:20 node1 Keepalived_vrrp[16629]: VRRP_Instance(VI_1) Entering MASTER STATE          #进入master状态
Sep 25 17:32:20 node1 Keepalived_vrrp[16629]: VRRP_Instance(VI_1) setting protocol VIPs.
Sep 25 17:32:20 node1 Keepalived_vrrp[16629]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 172.16.18.100
Sep 25 17:32:20 node1 Keepalived_healthcheckers[16628]: Netlink reflector reports IP 172.16.18.100 added             #添加IP172.16.18.100
Sep 25 17:32:25 node1 Keepalived_vrrp[16629]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 172.16.18.100
###############备节点##########
[root@node2 keepalived]# tail -20 /var/log/messages
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Interface queue is empty
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Interface queue is empty
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Netlink reflector reports IP 172.16.18.9 added
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Netlink reflector reports IP 172.16.18.9 added
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Netlink reflector reports IP fe80::20c:29ff:fe12:c8b5 added
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Netlink reflector reports IP fe80::20c:29ff:fe12:c8b5 added
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Registering Kernel netlink reflector
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Registering Kernel netlink reflector
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Registering Kernel netlink command channel
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Registering Kernel netlink command channel
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Registering gratuitous ARP shared channel
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Configuration is using : 6985 Bytes
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Opening file '/etc/keepalived/keepalived.conf'.
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Configuration is using : 62678 Bytes
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: Using LinkWatch kernel netlink reflector...
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: VRRP_Instance(VI_1) Entering BACKUP STATE              #进入BACKUP状态
Sep 25 17:32:23 node2 Keepalived_vrrp[20358]: VRRP sockpool: [ifindex(2), proto(112), fd(10,11)]
Sep 25 17:32:23 node2 Keepalived_healthcheckers[20357]: Using LinkWatch kernel netlink reflector...

测试:将node1关闭,node2会不会将地址取走??

##############主节点############
[root@node1 ~]# service keepalived stop
Stopping keepalived:                                       [  OK  ]
[root@node1 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:06:a6:49 brd ff:ff:ff:ff:ff:ffinet 172.16.18.7/16 brd 172.16.255.255 scope global eth0inet6 fe80::20c:29ff:fe06:a649/64 scope linkvalid_lft forever preferred_lft forever
###############备节点##########
[root@node2 keepalived]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:c8:b5 brd ff:ff:ff:ff:ff:ffinet 172.16.18.9/16 brd 172.16.255.255 scope global eth0inet 172.16.18.100/32 scope global eth0inet6 fe80::20c:29ff:fe12:c8b5/64 scope linkvalid_lft forever preferred_lft forever

测试结果:这样是成立的,若node1重新上线会立即将VIP获取走。

如何使用keepalived调用外部脚本或手动执行命令实现VIP转移??

思路:通过addr_script(脚本)定义检测机制;然后通过track_script在实例中追踪这个脚本。

如:下面这个检测机制

vrrp_script chk_mantaince_down {             # chk_mantaince_down定义脚本的名称,可随意取script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"   #命令(其实这里可以是自己定义好的脚本路径也可以是判断命令)#这里的意思是如果在这个文件下有down这个文件就表示期望这 个节点为备用状态。interval 1           #每隔1秒钟执行一次weight -2            #一旦命令执行失败,权重降低2个
}

(1)将此此检查机制应用到我们的示例中测试实现过程:

#############主节点###########
[root@node1 keepalived]# vim keepalived.confrouter_id LVS_DEVEL
}vrrp_script chk_main {      脚本script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 1weight -2
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 157       #如果环境中操作者比较多,尽量在每次更改配置文件之后改变一下这个值,从而实现ARPs快速转接。priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.18.100}track_script {        #追踪脚本chk_main}
}
##############备节点############
[root@node2 keepalived]# vim keepalived.conf
smtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_script chk_main {script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"interval 1weight -2
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 157priority 99advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.18.100}track_script {chk_main}
}

(2)测试

#######未添加文件之前:节点一########
[root@node1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:06:a6:49 brd ff:ff:ff:ff:ff:ffinet 172.16.18.7/16 brd 172.16.255.255 scope global eth0inet 172.16.18.100/32 scope global eth0inet6 fe80::20c:29ff:fe06:a649/64 scope linkvalid_lft forever preferred_lft forever
#######未添加文件之前:节点二########
[root@node2 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:c8:b5 brd ff:ff:ff:ff:ff:ffinet 172.16.18.9/16 brd 172.16.255.255 scope global eth0inet6 fe80::20c:29ff:fe12:c8b5/64 scope linkvalid_lft forever preferred_lft forever
############添加文件########
[root@node1 keepalived]# touch down
###########查看状态#########
[root@node1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:06:a6:49 brd ff:ff:ff:ff:ff:ffinet 172.16.18.7/16 brd 172.16.255.255 scope global eth0inet6 fe80::20c:29ff:fe06:a649/64 scope linkvalid_lft forever preferred_lft forever
[root@node2 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:12:c8:b5 brd ff:ff:ff:ff:ff:ffinet 172.16.18.9/16 brd 172.16.255.255 scope global eth0inet 172.16.18.100/32 scope global eth0inet6 fe80::20c:29ff:fe12:c8b5/64 scope linkvalid_lft forever preferred_lft forever

如何在状态转换时进行通知??

(1)keepalive内部提供了两个配置指令详细参考man keepalived.conf,一般在vrrp_instance或者vrrp_sync_group中使用中使用:

第一类指令:

# to MASTER transition
notify_master /path/to_master.sh     #转换为master状态时使用此脚本通知
# to BACKUP transition
notify_backup /path/to_backup.sh     #转换为backup状态时使用此脚本通知
# FAULT transition
notify_fault "/path/fault.sh VG_1"   #如果变成了fault就是用此脚本通知,如果脚本带有参数也就是有空格必须使用引号

第二类指令:使用notify直接引用

# $1 = "GROUP"|"INSTANCE"            #参数1:必须能够指定接受组或实例
# $2 = name of group or instance     #这个组或实例的名称
# $3 = target state of transition    #指定转换成哪个状态进行通知的
#     ("MASTER"|"BACKUP"|"FAULT")
notify /path/notify.sh     notify    #脚本的路径(自行写)

(2)通知脚本定义:

[root@node1 keepalived]# vim notify.sh
#!/bin/bash
#
vip=172.16.18.100           #指定VIP
contact='root@localhost'    #通知给谁
thisip=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F: '{print $2}'`                       #获取当前节点IP地址
notify() {mailsubject="$thisip to be $1: $vip floating"mailbody="`date '+%F %H:%M:%S'`: vrrp transition, $thisip changed to be $1"echo $mailbody | mail -s "$mailsubject" $contact
}
case "$1" inmaster)notify masterexit 0;;backup)notify backupexit 0;;fault)notify faultexit 0;;*)echo 'Usage: `basename $0` {master|backup|fault}'exit 1;;
esac
##########赋予此脚本执行权限###########
[root@node1 keepalived]# chmod +x notify.sh
###########测试脚本####################
[root@node1 keepalived]# ./notify.sh master
###########查看邮件信息################
[root@node1 keepalived]# mail
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 1 message 1 new
>N  1 root                  Wed Sep 25 22:24  18/693   "172.16.18.7 to be master: 172.16.18.100 flo"
& 1        #第一封邮件
Message  1:
From root@node1.magedu.com  Wed Sep 25 22:24:40 2013
Return-Path: <root@node1.magedu.com>
X-Original-To: root@localhost
Delivered-To: root@localhost.magedu.com
Date: Wed, 25 Sep 2013 22:24:39 +0800
To: root@localhost.magedu.com
Subject: 172.16.18.7 to be master: 172.16.18.100 floating
User-Agent: Heirloom mailx 12.4 7/29/08
Content-Type: text/plain; charset=us-ascii
From: root@node1.magedu.com (root)
Status: R
2013-09-25 22:24:39: vrrp transition, 172.16.18.7 changed to be master #内容
###########使用quit退出邮件##############
#############配置测试状态转换##############
[root@node1 keepalived]# vim keepalived.conf
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 157priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {172.16.18.100}track_script {chk_main}notify_master "/etc/keepalived/notify.sh master" #指定切换到Master状态时执行的脚本notify_backup "/etc/keepalived/notify.sh backup" #指定切换到Backup状态时执行的脚本notify_fault "/etc/keepalived/notify.sh fault" #指定切换到Mfault状态时执行的脚本
}
##########注意将上面此代码写入备节点中############
notify_master "/etc/keepalived/notify.sh master" #指定切换到Master状态时执行的脚本
notify_backup "/etc/keepalived/notify.sh backup" #指定切换到Backup状态时执行的脚本
notify_fault "/etc/keepalived/notify.sh fault"   #指定切换到Mfault状态时执行的脚本
##########脚本同样在备节点中存在##################
[root@node1 keepalived]# scp notify.sh 172.16.18.9:/etc/keepalived/

(3)测试

[root@node1 keepalived]# touch down
[root@node1 keepalived]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWNlink/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host loinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 00:0c:29:06:a6:49 brd ff:ff:ff:ff:ff:ffinet 172.16.18.7/16 brd 172.16.255.255 scope global eth0inet6 fe80::20c:29ff:fe06:a649/64 scope linkvalid_lft forever preferred_lft forever
[root@node1 keepalived]# mail       #节点1上
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 3 messages 2 unread1 root                  Wed Sep 25 22:24  19/704   "172.16.18.7 to be master: 172.16.18.100 flo"
>U  2 root                  Wed Sep 25 22:47  19/703   "172.16.18.7 to be master: 172.16.18.100 flo"U  3 root                  Wed Sep 25 22:47  19/703   "172.16.18.7 to be backup: 172.16.18.100 flo"
&
[root@node2 keepalived]# mail      #节点2上
Heirloom Mail version 12.4 7/29/08.  Type ? for help.
"/var/spool/mail/root": 3 messages 3 new
>N  1 root                  Wed Sep 25 22:46  18/693   "172.16.18.9 to be backup: 172.16.18.100 flo"N  2 root                  Wed Sep 25 22:47  18/693   "172.16.18.9 to be backup: 172.16.18.100 flo"N  3 root                  Wed Sep 25 22:47  18/693   "172.16.18.9 to be master: 172.16.18.100 flo"
&

关于ipvs配置生成规则实现负载均衡和web服务器实现高可用等更多关于keepalived高级应用将在后续博客中持续更新,请继续关注!!谢谢!!

转载于:https://blog.51cto.com/pangge/1301878

keepalived基本应用解析相关推荐

  1. keepalived源码解析 —— master 是如何实现定时发送 vrrp 通告

    1.vrrp 线程在创建 IPV4(224.0.0.18)或 IPV6(ff02::12) vrrp 组播接收 socket 后,首先会初始化 vrrp instances 超时时间,并根据超时时间将 ...

  2. 高性能集群软件Keepalived之基础知识篇

    一.Keepalived介绍 Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又有差别:Heart ...

  3. keepalived配置文件详解   ​

    keepalived配置文件详解 keepalived配置文件分为三个部分:全局配置(Globals configurations).vrrp配置(VRRP configuration). LVS配置 ...

  4. 一文带你浅入浅出Keepalived

    目录 前言 初识keepalived 1.vrrp协议 2.工作原理 3.安装&配置 Nginx+keepalived 前言 假设你搭建了一个电商网站,一开始你只有一台服务器对用户提供服务,用 ...

  5. Keepalived权威指南中文(Keepalived:The Definitive Guide)

    Keepalived 权威指南 The Definitive Guide 第一章 VRRP 1.1 VRRP协议简介 VRRP路由器 VRRP虚拟路由器 MASTER和BACKUP 1.2 工作机制 ...

  6. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  7. 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群

    Table of Contents 目录 基于Kubeadm部署Kubernetes1.13.3 HA 高可用集群 01. 部署目的 1.1 Kubernetes的特性 1.2 贴微服务,开发环境快速 ...

  8. Keepalive基础和配置

    文章目录 一.vrrp 1.1 vrrp相关术语 1.2 VRRP相关技术 二.Keepalive 2.1 keepalived介绍 2.2 Keepalived 架构 2.3 Keepalived ...

  9. Keepalived实现LVS的高可用全解析

    Keepalived实现LVS的高可用 一.概念引入: keepalived作用:为lvs提供高可用集群 Keepalived的功能:1.将IP地址转移到另一个节点上:2.转移lvs规则:3.健康状况 ...

  10. lvs服务器需要开启web服务么_Nginx+Keepalived实现web服务器高可用

    1.Nginx 业务背景 现公司需求快速搭建web服务器,对外提供给用户web服务. 需求拆分 需要基于http协议的软件,搭建服务实现 介绍 常见用法: 1) web服务器软件 httpd http ...

最新文章

  1. 微型计算机广告牌实验报告,微机原理课程设计报告
  2. 曹原25岁,今天第8篇Nature
  3. colpick-jQuery颜色选择器使用说明
  4. 疯狂涨知识!「高并发秒杀」微信抢红包实战案例帮你突破瓶颈
  5. 约瑟夫问题的几种实现
  6. JVM01---简介
  7. 20复变函数的积分(六)
  8. linux常用知识命令
  9. 系统集成项目管理工程师计算题(成本管理计算)
  10. C语言 逻辑运算符及其优先级
  11. c语言程序函数由什么两部分组成,C语言中一个函数由函数首部和_____两部分组成. 答案:函数体...
  12. 一网打尽!所有PMP的计算公式都在这里啦,赶紧学起来(1)
  13. python爬取百度百科获取中国高校信息
  14. CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器)
  15. miui11可用的位置模拟器_MIUI11内测体验包
  16. 使用Autoit3 自动登录163邮箱
  17. 基于java个人空间博客网站系统
  18. web大学生个人网站作业模板——上海旅游景点介绍网页代码 家乡旅游网页制作模板 大学生静态HTML网页源码...
  19. 【附源码】计算机毕业设计SSM天气预报系统
  20. 机器学习性能评价指标汇总

热门文章

  1. ASP.NET MVC3 RenderPartial 传入空Model时出现字典类型错误
  2. HDOJ-2095 Find your present (2) / NYOJ-528 找球号(三)
  3. html页面简单访问限制
  4. day23 python学习 类 人狗大战
  5. Java克隆--深克隆与浅克隆的区别
  6. Java开发笔记(一百三十六)JavaFX的窗格
  7. linux中安装typecho的pathinfo配置
  8. python数据处理:数据合并和Reshaping
  9. 关于Javascript, php的web公开课笔记
  10. 百度同步盘无法登陆,报错155010,对策