LVS+keepalived高可用

简介:

LVS+Keepalived负载均衡

  • LVS简介及工作原理

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

LVS 简单工作原理:用户请求LVS VIP,LVS根据转发方式和算法,将请求转发给后端服务器,后端服务器接受到请求,返回给用户。对于用户来说,看不到WEB后端具体的应用。

LVS转发方式有三种,分别是NAT、DR、TUN模式,常用算法:RR、LC、WRR、WLC模式等(RR为轮询模式,LC为最少连接模式)

LVS NAT原理:用户请求LVS到达director,director将请求的报文的目标地址改成后端的realserver地址,同时将报文的目标端口也改成后端选定的realserver相应端口,最后将报文发送到realserver,realserver将数据返给director,director再把数据发送给用户。(两次请求都经过director,所以访问大的话,director会成为瓶颈)

LVS DR原理:用户请求LVS到达director,director将请求的报文的目标MAC地址改成后端的realserver MAC地址,目标IP为VIP(不变),源IP为用户IP地址(保持不变),然后Director将报文发送到realserver,realserver检测到目标为自己本地IP,如果在同一个网段,然后将请求直接返给用户。如果用户跟realserver不在一个网段,则通过网关返回用户。(此种转发效率最高)

LVS TUN原理:跟LVS DR类似,也是改变封装MAC地址,多了一层隧道加密。实施环境复杂,比LVS DR模式效率略低。

安装实验架构图:wKiom1XV5s3gUHHAAAGdQd1_ivM898.jpg

  • LVS环境安装配置

下载LVS所需软件ipvsadm-1.2.4.tar.gz软件,编译安装:

1
2
3
4
5
6
7
wget -c http: //www .linuxvirtualserver.org /software/kernel-2 .6 /ipvsadm-1 .24. tar .gz
ln  -s  /usr/src/kernels/2 .6.*  /usr/src/linux   //IPVS 模块编译进内核里,需要做软连接
tar  xzvf ipvsadm-1.24. tar .gz &&cdipvsadm-1.24 &&  make  && make  install
 
 
查看LVS转发列表命令为:ipvsadm–Ln
清空lvs转发            ipvsadm -C


  • Keepalived安装配置

1
2
3
4
5
wget    
 
tar  -xzvf  keepalived-1.2.12. tar .gz; cd   keepalived-1.2.12;
 
. /configure  && make  &&  make  install

安装完毕,配置keepalived服务为系统服务。

1
2
3
4
5
DIR= /usr/local/ 
cp  $DIR /etc/rc .d /init .d /keepalived
/etc/rc .d /init .d/ &&  cp  $DIR /etc/sysconfig/keepalived  /etc/sysconfig/
&&  mkdir  -p  /etc/keepalived  &&  cp  $DIR /sbin/keepalived
/usr/sbin/

MASTER上即192.168.77.188上的/etc/keepalived/目录创建keepalived.conf配置文件,并写入如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
! Configuration File  for  keepalived
global_defs {
    notification_email {
        752840649@qq.com
    }
    notification_email_from wgkgood@163.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
     state MASTER
     interface eth0
     lvs_sync_daemon_inteface eth0
     virtual_router_id 51
     priority 100
     advert_int 5
     nopreempt
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.77.223
     }
}
virtual_server 192.168.77.223 80 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
  #REAL_SERVER_1
     real_server 192.168.77.133 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
     }
#REAL_SERVER_2
     real_server 192.168.77.166 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
     }
}


LVS BACKUP即192.168.77.199服务器/etc/keepalived/目录创建keepalived.conf配置文件如下配置,需要注意的是客户端的配置要修改优先级及状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
! Configuration File  for  keepalived
global_defs {
    notification_email {
        752840649@qq.com
    }
    notification_email_from wgkgood@163.com
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
     state BACKUP
     interface eth0
     lvs_sync_daemon_inteface eth0
     virtual_router_id 51
     priority 90
     advert_int 5
     nopreempt
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.77.223
     }
}
virtual_server 192.168.77.223 80 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     persistence_timeout 60
     protocol TCP
  #REAL_SERVER_1
     real_server 192.168.77.133 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
     }
#REAL_SERVER_2
     real_server 192.168.77.166 80 {
         weight 100
         TCP_CHECK {
         connect_timeout 10
         nb_get_retry 3
         delay_before_retry 3
         connect_port 80
         }
     }
}

配置完成后分别重启keepalived服务并tail -f /var/log/message 查看日志,若果报错请执行以下加载模块:

1
2
3
modprobe ip_vs
modprobe ip_vs_wrr
modprobe ip_vs_rr

之后重启在查看日志是否正常加载vip




LVS 主备配置完毕,接下来需要在realserver配置LVS VIP,为什么要在realserver绑定VIP呢?

客户端访问directorVIPdirector接收请求,将通过相应的算法将请求转发给相应的realserver。在转发的过程中,会修改请求包的目的mac地址,目的ip地址不变。

Realserver接收请求,并直接响应客户端。这时便出现一个问题,director此时与realserver位于同一个网络中,当director直接将请求转发给realserver时,realserver检测到该请求包的目的ipvip而并非自己,便会丢弃,而不会响应。为了解决这个问题,所以需要在所有Realserver上都配上VIP

为什么一定要配置在lo接口上呢?

realserver上的lo口配置VIP,这样限制了VIP不会在物理交换机上产生MAC地址表,从而避免IP冲突。

客户端启动Realserver.sh脚本内容:

  分别在后端机器192.168.77.133和192.168.77.166的data目录下创建个脚本并分别启动,脚本内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
#LVS Client Server
VIP=192.168.77.223
case   $1   in
 
start)
     ifconfig  lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
     /sbin/route  add -host $VIP dev lo:0
     echo  "1"  > /proc/sys/net/ipv4/conf/lo/arp_ignore
     echo  "2"  > /proc/sys/net/ipv4/conf/lo/arp_announce
     echo  "1"  > /proc/sys/net/ipv4/conf/all/arp_ignore
     echo  "2"  > /proc/sys/net/ipv4/conf/all/arp_announce
     sysctl -p > /dev/null  2>&1
     echo  "RealServer Start OK"
     exit  0
;;
stop)
     ifconfig  lo:0 down
     route del $VIP > /dev/null  2>&1
     echo  "0"  > /proc/sys/net/ipv4/conf/lo/arp_ignore
     echo  "0"  > /proc/sys/net/ipv4/conf/lo/arp_announce
     echo  "0"  > /proc/sys/net/ipv4/conf/all/arp_ignore
     echo  "0"  > /proc/sys/net/ipv4/conf/all/arp_announce
     echo  "RealServer Stoped OK"
     exit  1
;;
*)
     echo  "Usage: $0 {start|stop}"
;;
esac

启动后用ifconfig可以查看到lo上的vip绑定成功。就可以用vip直接访问网站了。


后端LAMP在之前blog中写过,,这里省略,以上是全部lvs和keepalived配置安装



本文转自 Anonymous123 51CTO博客,原文链接:http://blog.51cto.com/woshitieren/1686686



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
8月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
336 11
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1751 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
387 8
LVS+Keepalived 负载均衡
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
272 5
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
324 1
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
411 2
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
775 1
|
负载均衡 网络协议 Linux
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
330 0
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
3805 0