标签:protocol 工作原理 配置文件 ip地址 路由器 keepalived
Keepalived
主要目的是为lvs提供高可用功能,并为lvs提供规则检查后端服务器健康状态.工作原理是通过软件方式模拟实现vrrp---virtual redundent route protocol协议
将多个路由器配置成一个虚拟路由器,此虚拟路由器有vip和vmac每个时刻只能被主路由捕获,每个路由都有优先级,优先级最高的才能获得此地址的使用权,并且主路由在一定时间内广播自己的存活消息,当某一时刻,一旦各从路由收不到消息是会根据优先级选取另一个作为主路由,若优先级相等,则比较IP地址大的获取资源使用权限.可以配置多个vip和vmac每个组都有自己的标识.虚拟路由标识(vrid) vmac格式为00-00-5E-00-01-{vrid},前面的5段是固定的vrid为8位
Keepalived为了实现虚拟路由协议内部设有许多组件
软件结构为
适用的场景:lvs ngnix haproxy
配置文件介绍
全局段
global_defs {
notification_email { ------------------------ 邮件发送到的地址
sysadmin@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 { ---------------- 实体的名称
state MASTER ---------------- 状态MASTER或是BACKUP
interface eth0 ---------------- 配置在哪个接口上
virtual_router_id 51-------------- -- VRRID
priority 100 - --------------- 优先级
advert_int 1 --------------- 发送心跳的间隔时间
authentication { --------------- 认证
auth_type PASS ------------------认证算法 PASS||AH
auth_pass 1111 密码
}
virtual_ipaddress { ------------------- VIP
格式为 <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE>
例如 192.168.200.18/24 dev eth2 label eth2:1
192.168.200.16
192.168.200.17
192.168.200.18
}
notify_master 当变为MASTER时执行的脚本
notify_backup 当变为BACKUP时执行的脚本
notify_fault 当故障时执行的脚本例如: notify_master “/etc/init.d/nginx start”
}
虚拟服务器段
virtual_server 192.168.200.100 443 { ------------- 定义一个lvs
delay_loop 6
lb_algo rr ----------------- lvs的调度算法 lb_algo rr|wrr|lc|wlc|lblc|sh|dh
lb_kind NAT ------------------lvs模型lb_kind NAT|DR|TUN
nat_mask 255.255.255.0 ------------ 掩码网络
persistence_timeout 50 ------------- 持久连接的超时时间
protocol TCP ------------- 协议类型
sorry_server <IPADDR> <PORT> ------------- 所有realserver不可用时使用的服务器地址
real_server 192.168.201.100 443 { ----------------- realserver 定义段 地址
weight 1 -------------权重
SSL_GET { 健康状态检测时使用的方法
url { 检测哪个url
path /
digest ff20ad2481f97b1754ef3e12ecd3a9cc 此页面的特征码
}
url {
path /mrtg/
digest 9b3a0c85a887a256d6939da88aabd8cd
}
connect_timeout 3 连接超时时间
nb_get_retry 3 重试时间
delay_before_retry 3 重试前的时间间隔
}
}
}
下面通过实验说明问题
利用keepalived创建lvs-dr的高可用方案
实验拓扑图为
配置realserver
Httpd server1 Yum install httpd Vim /var/www/html/index.html <h1> Server2 172.16.101.202 </h1> [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [root@localhost ~]# ifconfig lo:0 172.16.101.22 netmask 255.255.255.255 broadcast 172.16.101.22 [root@localhost ~]# route add -host 172.16.101.22 dev lo:0
Httpd server 2
Yum install httpd Vim /var/www/html/index.html <h1> Server2 172.16.101.201 </h1> [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce [root@localhost ~]# ifconfig lo:0 172.16.101.22 netmask 255.255.255.255 broadcast 172.16.101.22 [root@localhost ~]# route add -host 172.16.101.22 dev lo:0
Keepalived server 配置文件
! Configuration File for keepalived
global_defs {
notification_email {
root@centod.com
}
notification_email_from keepalived@centod.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance lvs-dr {
state MASTER
interface eth0
virtual_router_id 100
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass hzm132
}
virtual_ipaddress {
172.16.101.22
}
}
virtual_server 172.16.101.22 80 {
lb_algo rr
lb_kind DR
nat_mask 255.255.0.0
protocol TCP
real_server 172.16.101.201 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.101.202 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}启动keepalived测试结果
产看master keepalived IP地址
[root@node2 keepalived]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:ce:12:9b brd ff:ff:ff:ff:ff:ff
inet 172.16.101.200/16 brd 172.16.255.255 scope global eth0
inet 172.16.101.22/32 scope global eth0
inet6 fe80::a00:27ff:fece:129b/64 scope link
valid_lft forever preferred_lft forever
打开网页测试
标签:protocol 工作原理 配置文件 ip地址 路由器 keepalived
原文地址:http://centod.blog.51cto.com/9108378/1557173