标签:互联网应用 用户 高可用 默认 负载均衡调度算法 hostname 系统架构 global server
1>keepalived原理及配置介绍一,VRRP协议
学过网络的朋友都知道,网络在设计的时候必须考虑到冗余容灾,包括线路冗余,设备冗余等,防止网络存在单点故障,那在路由器或三层交换机处实现冗余就显得尤为重要,在网络里面有个协议就是来做这事的,这个协议就是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的只需要把服务器当作路由器即可!keepalived完全遵守VRRP协议,包括竞选机制等等
二,Keepalived原理
Keepalived原理
keepalived也是模块化设计,不同模块实现不同的功能,下面是keepalived的组件
core check vrrp libipfwc libipvs-2.4 libipvs-2.6
core:是keepalived的核心,复杂主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析
vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
libipfwc:iptables(ipchains)库,配置LVS会用到
libipvs*:配置LVS会用到
注意,keepalived和LVS完全是两码事,只不过他们各负其责相互配合而已
常用作用: 高可用web架构: LVS+keepalived+nginx+tomcat+php+eaccelerator(+nfs可选 可不选)
keepalived启动后会有三个进程
父进程:内存管理,子进程管理等等
子进程:VRRP子进程
子进程:healthchecker子进程
安装
yum -y install keepalived
systemctl enable keepalived
keepalived.conf配置文件说明
vim /etc/keepalived/keepalived.conf
keepalived服务安装完成之后,后面的主要工作就是在keepalived.conf文件中配置HA和负载均衡。一个功能比较完整的常用的keepalived配置文件,主要包含三块:全局定义块、VRRP实例定义块和虚拟服务器定义块。全局定义块是必须的,如果keepalived只用来做ha,虚拟服务器是可选的。下面是一个功能比较完整的配置文件模板:
全局定义块:global_defs
#email通知(notification_email、smtp_server、smtp_connect_timeout):用于服务有故障时发送邮件报警,可选项,不建议用。需要系统开启sendmail服务,建议用第三独立监控服务,如用nagios全面监控代替。
#vrrp_strict: 在全局配置下使用了vrrp_strict 参数。此参数为严格控制VRRP协议,不支持单播模式, 如果配置了此参数,keepalived 在启动后会在iptables中自动添加一条DROP VIP的规则,会导致vip无法通讯。注释掉此选项,将不会默认添加DROP规则。
router_id:用户标识本节点的名称,通常为hostname
VRRP实例定义块:vrrp_instance VI_1
vrrp_instance vrrp_test {
实例名
state MASTER
实例状态,只有MASTER 和 BACKUP两种状态,并且需要全部大写。抢占模式下,其中MASTER为工作状态,BACKUP为备用状态。当MASTER所在的服务器失效时,BACKUP所在的服务会自动把它的状态由BACKUP切换到MASTER状态。当失效的MASTER所在的服务恢复时,BACKUP从MASTER恢复到BACKUP状态。
interface eth0
对外提供服务的网卡接口,即VIP绑定的网卡接口。如:eth0,eth1。当前主流的服务器都有2个或2个以上的接口(分别对应外网和内网),在选择网卡接口时,一定要核实清楚。
virtual_router_id 66
虚拟路由ID,主备必须为一样,取值在0-255之间,用来区分多个instance的VRRP组播,同一网段内ID不能重复;
priority 100
节点优先级,用来选举master的,取值范围0~254,MASTER要比BACKUP高
advert_int 1
检查间隔默认为1秒,即1秒进行一次master选举(可以认为是健康查检时间间隔)
authentication {
auth_type PASS
auth_pass 1111
}
认证类型和验证密码。类型主要有 PASS、AH 两种,默认使用PASS类型,据说AH使用时有问题。验证密码为明文,同一vrrp 实例MASTER与BACKUP使用相同的密码才能正常通信。
nopreempt
禁止抢占服务。默认情况,当MASTER服务挂掉之后,BACKUP自动升级为MASTER并接替它的任务,当MASTER服务恢复后,升级为MASTER的BACKUP服务又自动降为BACKUP,把工作权交给原MASTER。当配置了nopreempt,MASTER从挂掉到恢复,不再将服务抢占过来。
virtual_ipaddress {
192.168.100.6
192.168.100.7
}
}
虚拟IP地址池,可以有多个IP,每个IP占一行,不需要指定子网掩码。注意:这个IP必须与我们的设定的vip保持一致。虚拟服务器:virtual_server定义块,该部分是用来管理LVS的,是实现keepalive和LVS相结合的模块。ipvsadm命令可以实现的管理在这里都可以通过参数配置实现
virtual_server 192.168.100.6 666 {
定义一个虚拟服务器,这个ip是virtual_ipaddress中定义的其中一个,后面一个空格,然后加上虚拟服务的端口号。
delay_loop 3
健康检查时间间隔,单位:秒
lb_algo rr
负载均衡调度算法,互联网应用常用方式为wlc或rr
lb_kind DR
负载均衡转发规则。包括DR、NAT、TUN 3种,一般使用路由(DR)转发规则
persistence_timeout 50
http服务会话保持时间,单位:秒
protocol tcp
转发协议,分为TCP和UDP两种
real_server 192.168.10.9 666 {
真实服务器IP和端口,可以定义多个
weight 1
负载权重,值越大,转发的优先级越高
notify_down
检测到real_server服务down后执行脚本
notify_up
检测real_server到服务up后执行脚本
TCP_CHECK { #健康检查方式, 健康检查方式一共有HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK这些
connect_timeout 3 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 23 #健康检查的端口
bindto <ip> #健康检查的IP地址
}
}
}
启动服务
systemctl start keepalived
启用ip转发
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
标签:互联网应用 用户 高可用 默认 负载均衡调度算法 hostname 系统架构 global server
原文地址:http://blog.51cto.com/7072753/2135320