LVS+Keepalived高可用负载均衡集群架构

实验环境:

LVS和keepalived介绍:

1.keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。

使用keepalived构建LVS群集更加简便易用,主要优势体现在:

对LVS负载调度器实现热备切换,提高可用性;

对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

2.在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。

3.通过LVS+Keepalived构建的LVS集群,LVS负载均衡用户请求到后端tomcat服务器,Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Keepalived简介

什么是Keepalived:keepalived可以实现服务的高可用或热备,用来防止单点故障的问题;而Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余;Keepalived就是使用VRRP协议来实现高可用的;下面一起来看一下Keepalived的原理图:

Keepalived启动后会有三个进程:

父进程:内存管理,子进程管理

子进程:VRRP子进程

子进程:healthchecker子进程

由上图可知:

两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让它删除通告,并且去掉虚拟IP,转换为BACKUP状态;

实验架构图:

实验过程:

HA高可用集群构建前提:

1.proxy和proxy2节点时间必须同步;

建议使用ntp协议进行;

参考博客:

2、节点之间必须要通过主机名互相通信;

建议使用hosts文件;

通信中使用的名字必须与其节点为上“uname -n”命令展示出的名字保持一致;

[root@proxy~]#cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain6172.16.0.1server.magelinux.comserver172.16.31.52proxy.stu31.comproxy172.16.31.53proxy2.stu31.comproxy2172.16.31.50tom1.stu31.comtom1172.16.31.51tom2.stu31.comtom2

3、节点之间彼此root用户能基于ssh密钥方式进行通信;

节点proxy:#ssh-keygen-trsa-P””#ssh-copy-id-i.ssh/id_rsa.pubproxy2节点proxy2:#ssh-keygen-trsa-P””#ssh-copy-id-i.ssh/id_rsa.pubproxy

测试ssh无密钥通信:

[root@proxy~]#date;sshproxy2dateSatJan1715:29:26CST2015SatJan1715:29:26CST2015

一.配置安装LVS+keepalived

1.在Master与Backup服务器上分别安装Ipvsadm、Keepalived软件包、这里使用的是yum安装方式

#yuminstall-ykeepalivedipvsadm

注释:这里安装Ipvsadm工具主要是为了查看lvs规则使用,不安装ipvsadm工具也能成功配置规则,但不方便;

2.修改keepalived配置文件

keepalived的文件路径/etc/keepalived/keepalived.conf

修改Master节点proxy的主配置文件

[root@proxy~]#vim/etc/keepalived/keepalived.conf!ConfigurationFileforkeepalivedglobal_defs{notification_email{#设置报警通知邮件地址,可以设置多个root@localhost}notification_email_fromadmin@stu31.com#设置邮件的发送地址smtp_server127.0.0.1#设置smtpserver的地址,该地址必须是存在的smtp_connect_timeout30#设置连接smtpserver的超时时间router_idLVS_DEVEL#运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息}vrrp_instanceVI_1{#定义VRRP实例,实例名自定义stateMASTER#指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器interfaceeth0#指定HA监测的接口virtual_router_id51#虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样priority100#优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器advert_int1#设置主备之间同步检查的时间间隔单位秒authentication{#设置验证类型和密码auth_typePASS#验证类型有两种{PASS|HA}auth_passoracle#设置验证密码,在一个实例中主备密码保持一样}virtual_ipaddress{#定义虚拟IP地址,可以有多个,每行一个172.16.31.188}}virtual_server172.16.31.188{#设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔delay_loop6#设置健康状态检查时间,单位为秒lb_algorr#设置负载高度算法,rr为轮询lb_kindDR#设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种nat_mask255.255.0.0#设置掩码persistence_timeout50#会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案protocolTCP#指定转发协议类型可以设置{TCP|UDP}两种real_server172.16.31.5080{#后端服务器节点,需要指定Real_server的IP与端口,用空格分隔weight1#配置服务节点的权重,数字越大,权重越高HTTP_GET{#设置检测Realserver的方式为http协议url{path/status_code200#设定返回状态码为200表示Realserver是存活的}connect_timeout3#设置响应超时时间nb_get_retry3#设置超时重试次数delay_before_retry3#设置超时后重试间隔}}real_server172.16.31.5180{weight1HTTP_GET{url{path/status_code200}connect_timeout3nb_get_retry3delay_before_retry3}}}

真正的强者,不是流泪的人,而是含泪奔跑的人。

LVS+Keepalived高可用负载均衡集群架构

相关文章:

你感兴趣的文章:

标签云: