实战 LVS+Keepalived 实现负载均衡和高可用

1.软件介绍

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,可以实现LINUX平台下的简单负载均衡。

LVS负载均衡有4种负载均衡方式

a.DR 模式

b.NAT 模式

c.Tunnel 模式

d.Full NAT 模式

LVS负载均衡8种调度算法

(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)

各个模式的原理在此不再赘述,本文使用DR模式,rr调度算法。

Keepalived 是运行在lvs 之上,它的主要功能是实现真实机的故障隔离及负载均衡器间的失败切换,提高系统的可用性。

2.实战安装

环境配置

[[email protected] ~]# cat /etc/redhat-release

CentOS release 6.8 (Final)

[[email protected] ~]# uname -r

2.6.32-642.6.1.el6.x86_64

软件

ipvsadm-1.26.tar.gz  keepalived-1.1.19.tar.gz

信息列表

服务器名称                                   IP

        LVS            做主(LVS-master) 10.89.3.102
       Keepalived      做备(LVS-backup) 10.89.3.103
        lamp           做web1(real_server) 10.89.3.100
        lnmp           做web2(real_server) 10.89.3.101
         LVS           绑定 vip(VIP) 10.89.3.168

LVS+keepalived的安装和配置-2台电脑(LVS,Keepalived)都要安装。

安装lvs软件

ln -s /usr/src/kernels/2.6.32-642.6.1.el6.x86_64/ /usr/src/linux

yum install libnl* popt* -y

tar zxf ipvsadm-1.26.tar.gz

cd ipvsadm-1.26

make

make install

[[email protected] ipvsadm-1.26]# modprobe ip_vs  #把ip_vs模块加入内核

[[email protected] ipvsadm-1.26]# lsmod|grep ip_vs  #查看是否安装

ip_vs                 126897  0

libcrc32c               1246  1 ip_vs

ipv6                  336282  265 ip_vs

#出现上面的结果,表示安装OK

安装keepalived软件

ln -s /usr/src/kernels/2.6.32-642.6.1.el6.x86_64 /usr/src/linux

yum install openssl openssl-devel -y

tar xf keepalived-1.1.19.tar.gz

cd keepalived-1.1.19

./configure

make

make install

配置keepalived规范启动

/bin/cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

/bin/cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir /etc/keepalived -p

/bin/cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

/bin/cp /usr/local/sbin/keepalived /usr/sbin/

/etc/init.d/keepalived start

ps -ef|grep keep

root       6342      1  0 17:42 ?        00:00:00 keepalived -D

root       6344   6342  0 17:42 ?        00:00:00 keepalived -D

root       6345   6342  0 17:42 ?        00:00:00 keepalived -D

root       6347   3490  0 17:42 pts/0    00:00:00 grep keep

#出现 3个keepalived -D,表示安装OK

3. 配置keepadlived

LVS-Master的配置文件如下:

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_7

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 55

priority 150

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.89.3.168/24

}

}

virtual_server 10.89.3.168 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 300

protocol TCP

real_server 10.89.3.100 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.89.3.101 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

LVS-backup的配置文件如下:

[[email protected] ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_2

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 55

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.89.3.168/24

}

}

virtual_server 10.89.3.168 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.0

persistence_timeout 300

protocol TCP

real_server 10.89.3.100 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

real_server 10.89.3.101 80 {

weight 1

TCP_CHECK {

connect_timeout 8

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

real_server的配置,2台客户端的脚本都一样!

[[email protected]]# cat /server/scripts/ipvs_client.sh

#!/bin/bash

# description: Config realserver lo and apply noarp

SNS_VIP=10.89.3.168

. /etc/rc.d/init.d/functions

case "$1" in

start)

/sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP

/sbin/route add -host $SNS_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"

;;

stop)

ifconfig lo:0 down

route del $SNS_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"

;;

*)

echo "Usage: $0 {start|stop}"

exit 1

esac

exit 0

----------------------------------------------

4.实战测试

4.1 测试VIP漂移

#使用命令 ip add 查看VIP

[[email protected] ~]# /etc/init.d/keepalived start

Starting keepalived:                                       [  OK  ]

[[email protected] ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 00:0c:29:4e:ca:a4 brd ff:ff:ff:ff:ff:ff

inet 10.89.3.102/24 brd 10.89.3.255 scope global eth0

inet 10.89.3.168/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe4e:caa4/64 scope link

valid_lft forever preferred_lft forever

----------------------------------------------------------------

[[email protected] ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 00:0c:29:3f:7c:0b brd ff:ff:ff:ff:ff:ff

inet 10.89.3.103/24 brd 10.89.3.255 scope global eth0

inet6 fe80::20c:29ff:fe3f:7c0b/64 scope link

valid_lft forever preferred_lft forever

------------------------------------------------------------------

#观察发现,此时VIP 在Lvs这台服务器上,现在把这台服务器Keepalived 服务停止

[[email protected] ~]# /etc/init.d/keepalived stop

Stopping keepalived:                                       [  OK  ]

[[email protected] ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 00:0c:29:4e:ca:a4 brd ff:ff:ff:ff:ff:ff

inet 10.89.3.102/24 brd 10.89.3.255 scope global eth0

inet6 fe80::20c:29ff:fe4e:caa4/64 scope link

valid_lft forever preferred_lft forever

#发现VIP已经漂移到另外一台上了,我们去看看

[[email protected] ~]# ip add

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 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 00:0c:29:3f:7c:0b brd ff:ff:ff:ff:ff:ff

inet 10.89.3.103/24 brd 10.89.3.255 scope global eth0

inet 10.89.3.168/24 scope global secondary eth0

inet6 fe80::20c:29ff:fe3f:7c0b/64 scope link

valid_lft forever preferred_lft forever

---------------------------------------------------------------------

4.2 测试web 服务

4.3查看连接情况

[[email protected] ~]# ipvsadm -Lnc

IPVS connection entries

pro expire state       source             virtual            destination

TCP 01:01  FIN_WAIT    10.89.1.158:62899  10.89.3.168:80     10.89.3.101:80

TCP 00:56  FIN_WAIT    10.89.3.1:58996    10.89.3.168:80     10.89.3.100:80

TCP 00:56  FIN_WAIT    10.89.3.1:58997    10.89.3.168:80     10.89.3.100:80

TCP 02:06  NONE        10.89.3.1:0        10.89.3.168:80     10.89.3.100:80

TCP 03:44  NONE        10.89.1.158:0      10.89.3.168:80     10.89.3.101:80

TCP 01:51  FIN_WAIT    10.89.1.158:62603  10.89.3.168:80     10.89.3.101:80

总结:LVS+Keepalived 可以实现负载均衡和高可用,到此我们验证配置结束!

时间: 2025-01-02 14:59:21

实战 LVS+Keepalived 实现负载均衡和高可用的相关文章

HAProxy+Keepalived+PXC负载均衡和高可用的PXC环境

HAProxy介绍 反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入?引入了frontend,backend:frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend. Keepalived介绍Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障.一个WEB服务至少会有2台服务

haproxy+keepalived实现负载均衡及高可用

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高性能性.负载均衡,以及基于TCP和HTTP的应用程序代理.相较与 Nginx,HAProxy 更专注与反向代理,因此它可以支持更多的选项,更精细的控制,更多的健康状态检测机制和负载均衡算法. HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理.HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务

Keepalived负载均衡与高可用

1.keepalived服务介绍Keepalived的项目实现的主要目标是简化LVS项目的配置并增强其稳定性,即Keepalived是对LVS项目的扩展增强.Keepalived为Linux系统和基于Linux 的架构提供了负载均衡和高可用能力,其负载均衡功能主要源自集成在Linux内核中的LVS项目模块IPVS( IP Virtual Server ),基于IPVS提供的4 层TCP/IP协议负载均衡, Keepalived也具备负载均衡的功能,此外, Keepalived还实现了基于多层TC

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

LVS+keepalived实现负载均衡&高可用

一.实验环境需求&准备 我们这次实验要完成的一个架构如下图所示,我们通过LVS-DR-MASTER,LVS-DR-BACKUP作为LVS负载均衡调度器,并且两者之间通过keepalived来两者之间的HA.keepalived本身就是为了LVS为开发的,所以说我们通过keepalived来进行LVS的配置就显得十分的方便.而且keepalived是直接操作ip_vs不用通过ipvsadm,所以更加方便. 1)实验架构图&需求表: 角色 IP地址 备注 主LVS调度器(MASTER) 192

LVS+Keepalived实现负载均衡

一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户

借助LVS+Keepalived实现负载均衡(转)

原文:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一

借助LVS+Keepalived实现负载均衡

一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户

【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务器集群,也可以是数据库服务器集群,还可以是分布式缓存服务器集群等等. 古人有云:当一头牛拉不动车的时候,不要去寻找一头更强壮的牛,而是用两头牛来拉车. 在实际应用中,在Web服务器集群之前总会有一台负载均衡服务器,负载均衡设备的任务就是作为Web服务器流量的入口,挑选最合适的一台Web服务器,将客户