1、LVS+Keepalived 介绍
LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项 目之一.目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);八种调度算法(rr,wrr,lc,wlc,lblc,lblcr,dh,sh)。
Keepalvied
Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
2、拓扑图
3、地址规划
Master DR: 192.168.122.99 Slave DR: 192.168.122.101 VIP: 192.168.122.100 web server1: 192.168.122.102 web server2: 192.168.122.103 客户端: 192.168.122.1 |
4、实现思路
此实验使用的是DR模式。在两台DR上安装keepalived。使用keepalived配置DR优先级,以起到DR备份作用,当客户端访问web服务器时,数据包首先到达DR上,DR通过调度算法将数据包分发给web server。由web server回复数据包,当master DR宕机时,slave DR可以迅速接管,同样当web server1宕机时,web server2可以迅速提供服务。从而实现负载均衡。 |
5、安装 LVS和Keepalvied软件包
#yum -y install ipvsadm #wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz 安装keepalived前需要先安装依赖包 yum -y install gcc kernel-devel openssl-devel #tar -zxvf keepalived-1.1.15.tar.gz #cd keepalived-1.1.15 #./configure --sysconf=/etc --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ #make && make install 配置keepalived为系统服务 #cp /usr/local/sbin/keepalived /usr/sbin/ #service keepalived start|stop #启动/停止keepalived服务 |
6、 配置LVS实现负载均衡
Keepalived安装完成后,在/etc/keepalived下生成keepalived.conf配置文件,备份编辑此配置文件 #vim keepalived.conf ! Configuration File for keepalived global_defs { notification_email { cnseek@gmail.com #配置邮件接收 } notification_email_from sns-lvs@gmail.com smtp_server 127.0.0.1 # smtp_connect_timeout 30 router_id LVS_DEVEL } # 20081013 written by :netseek # VIP1 vrrp_instance VI_1 { state MASTER #备份服务器上将MASTER改为BACKUP interface eth0 virtual_router_id 51 priority 100 #配置优先级,数值越高优先级越高,将备份服务器设置为80 advert_int 1 authentication { auth_type PASS auth_pass 1111 #设置服务器连接的用户密码,要和备份服务器一直 } virtual_ipaddress { 192.168.122.100 #虚拟IP,既客户端访问地址 #(如果有多个VIP,继续换行填写.) } } virtual_server 192.168.122.100 80 { delay_loop 10 #(每隔10秒查询realserver状态,如果宕机,及时接替服务) lb_algo wrr #(lvs 算法) lb_kind DR #(Direct Route) persistence_timeout 60 #(同一IP的连接60秒内被分配到同一台realserver,如果Master DR宕机,60秒后BDR接替调度) protocol TCP #(用TCP协议检查realserver状态) real_server 192.168.122.102 80 { #实际web server地址 weight 3 #(权重) TCP_CHECK { connect_timeout 10 #(10秒无响应超时) nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.122.103 80 { weight 3 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } |
7、配置完成后可用以下命令检查配置是否正确
ipvsadm -L -n #查看ipvsadm的配置。在这里需要两台web服务器启动服务。否则只能看到VIP的配置 ip addr list #查看是否和VIP绑定 |
8、在两台web server中安装httpd服务,并配置realserver脚本
yum -y install httpd #安装httpd服务。安装后要创建默认页 echo "this is one site" >/var/www/html/index.html #另一台同样创建,修改一下默认页内容,以便分辨访问的网站 service httpd restart 配置realserver脚本 #vi /etc/init.d/realserver.sh #此脚本是为了配置必须的ip选项并生成虚拟IP #!/bin/bash SNS_VIP=192.168.122.100 #虚拟IP地址 . /etc/rc.d/init.d/functions case "$1" in start) 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 创建完脚本后执行 ./realserver.sh start 启动脚本。启动成功使用ifconfig可以看到创建的lo:0的虚拟地址 |
8、在两台keepalived上重启keepalived服务,并使用ipvsadm -L -n查看配置,应有以下结果
-> RemoteAddressort:port Forward Weight ActiveConn InActConn TCP 192.168.122.100:80 rr -> 192.168.122.102:80 Route 2 0 2 -> 192.168.122.103:80 Route 1 0 1 |
9、登陆192.168.122.1,使用浏览器或者curl验证负载结果
[root@localhost ~]# curl 192.168.122.100 this is one site |
10、停掉Master DR,观察Slave DR接管调度任务。停掉一台web服务器,观看另一台web服务是否可继续提供服务。
使用ipvsadm -L -n查看访问效果。
tail -f /var/log/httpd/access.log #查看web日志
本文出自 “余 小 亮” 博客,请务必保留此出处http://yuliangliang.blog.51cto.com/4664834/1567573
原文地址:http://yuliangliang.blog.51cto.com/4664834/1567573