keepalived 简介
keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。使用keepalived构建LVS群集更加简便易用,主要优势体现在:
对LVS负载调度器实现热备切换,提高可用性;
对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入;
keepalived可以实现服务的高可用或热备,用来防止单点故障的问题。Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余,Keepalived就是使用VRRP协议来实现高可用的。
keepalived作用
如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Keepalived的代码结构和工作图示:
虚拟路由器冗余协议(VRRP)是一种选择协议,VRRP通过优先级来确定由谁当master,谁当backup。
LVS是一个开源的软件,可以实现LINUX平台下的简单负载均衡。
当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。
NAT(Network Address Translation)模式、IP隧道(IP Tunneling)模式 、DR(Direct Routing)模式,其中最常见、使用最多的是DR模式。
1、proxy和proxy2节点时间必须同步;建议使用ntp协议进行。
2、节点之间必须要通过主机名互相通信;建议使用hosts文件;
注意:通信中使用的名字必须与其节点为上“uname -n”命令展示出的名字保持一致。
# ssh-copy-id -i .ssh/id_rsa.pub proxy2
# ssh-copy-id -i .ssh/id_rsa.pub proxy
123 [root@proxy ~]# date ; ssh proxy2 date
root@example:~# apt-get install libssl-dev libpopt-dev \\安装openssl及popt
root@example:~# apt-get install keepalived
root@example:~# vim /etc/keepalived/keepalived.conf \\创建keepalived的配置文件进行编写
!Configuration File for keepalived
root@example.com #当出现问题时,发送的收件人地址,可以设置多个
notification_email_from sysadmin@163.com #设置邮件的发送地址
smtp_server 127.0.0.1 #设置smtp server的地址,该地址必须是存在的
smtp_connect_timeout 30 #设置连接smtp server的超时时间
router_id LVS_DEVEL # 运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息
vrrp_instance VI_1 { # #定义VRRP实例,实例名自定义
state MASTER #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器
virtual_router_id 51 #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样,与整个vrrp中也是一致的
priority 100 #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器
advert_int 1 #设置主备之间同步检查的时间间隔,单位秒
auth_type PASS #类型主要有PASS、AH两种,通常使用的类型为PASS
auth_pass 1111 #设置验证密码,在一个实例中主备密码保持一样
virtual_ipaddress { #定义虚拟IP地址,可以有多个,每行一个
virtual_server 172.16.31.188 80 {#设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔
lb_kind DR #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种
persistence_timeout 60 #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案
protocol TCP #指定转发协议类型可以设置{TCP|UDP}两种
real_server 172.16.31.50 80 { #后端服务器节点,需要指定RS的IP与端口,用空格分隔
TCP_CHECK { #设置检测Realserver的方式为Tcp检查,还可以是 HTTP_GET
delay_before_retry 3 #设置超时后重试间隔
HTTP_GET { #设置检测Realserver的方式为http协议
status_code 200 #设定返回状态码为200表示Realserver是存活的
}
delay_before_retry 3 #设置超时后重试间隔
HTTP_GET { #设置检测Realserver的方式为http协议
status_code 200 #设定返回状态码为200表示Realserver是存活的
}
delay_before_retry 3 #设置超时后重试间隔
root@example1:~# apt-get install libssl-dev libpopt-dev
root@example1:~# apt-get install keepalived
######修改如下两项
[root@proxy2 ~]# vim /etc/keepalived/keepalived.conf
state BACKUP #备份服务器
启动服务:
# service keepalived start; ssh proxy2 "service keepalived start"
观察各节点的服务启动后的日志:
MASTER节点的日志;
[root@proxy keepalived]# tail -f /var/log/messages
BACKUP节点的日志:
[root@proxy2 keepalived]# tail -f /var/log/messages
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-1824310/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9399028/viewspace-1824310/