成航先森 成航先森

成都航院计算机系一个学生的个人博客

 

经验杂笔

分段图

最新文章

经验杂笔
当前位置: 首页 » 大学杂谈 » 经验杂笔 » 虚拟机CentOS搭建LVS-DR负载均衡

虚拟机CentOS搭建LVS-DR负载均衡

编辑:狂族晨曦 来源:经验杂笔 日期:2016-07-30 阅读: 1,622 次 10 条评论 » 百度已收录

先森工作三个星期了,从最初的基础命令学习,到基础环境搭建,再到现在的高可用负载均衡集群搭建,都通通过了一遍,下周也要开始接触现网服务器了。在这三周,做的东西都越来越难,越来越麻烦,LVS就是其中之一。

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目。章文嵩博士曾是阿里巴巴副总裁、技术总监等,现任滴滴出行副总裁。LVS有三种负载均衡模式,分别是LVS-DR、LVS-TUN、LVS-NAT。让先森郁闷的是,先森用虚拟机除了LVS-DR模式,LVS-TUN和LVS-NAT先森都没有搭建成功。

LVS体系结构

首先需要普及一下LVS的体系结构。

LVS体系结构图 -1

LVS体系结构图

使用LVS架设的服务器集群系统有三个部分组成:

最前端的负载均衡层,用Load Balancer表示。Load Balancer层:位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,LVS模块就安装在Director Server上,而Director的主要作用类似于一个路由器,它含有完成LVS功能所设定的路由表,通过这些路由表把用户的请求分发给Server Array层的应用服务器(Real Server)上。同时,在Director Server上还要安装对Real Server服务的监控模块Ldirectord,此模块用于监测各个Real Server服务的健康状况。在Real Server不可用时把它从LVS路由表中剔除,恢复时重新加入。

中间的服务器群组层,用Server Array表示。Server Array层:由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个,每个Real Server之间通过高速的LAN或分布在各地的WAN相连接。在实际的应用中,Director Server也可以同时兼任Real Server的角色。

最底端的数据共享存储层,用Shared Storage表示。Shared Storage层:是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等。

在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

LVS三种模式区别

$IPVSADM -a -t 192.168.31.166:80 -r 192.168.21.100:80 -m -w 1  //-a增加一个real server  -m NAT模式 -g dr模式 -t tun模式  -w权重

NAT模式:realserver不需要公网ip,director负责接受请求和返回请求。

DR模式/TUN模式:每个realserver都需要有公网ip,返回请求不需要经过director,director只负责分发接受的请求。

DR模式和TUN模式区别:TUN模式realserver和dr通信使用隧道(修改了ip包头),DR模式不使用隧道(修改MAC地址)。

LVS-DR模式搭建

搭建成功后,其实你会发现LVS-DR是非常简单的。

每个realserver都需要有公网ip,返回请求不需要经过director,director只负责分发接受的请求。

搭建环境

先森是用虚拟机搭建的,准备了三个安装了CentOS的虚拟机。

系统版本:CentOS 6.8

外部IP地址 内部IP地址 角色
192.168.2.27/24 10.10.10.99/24 LVS调度器(虚拟机)

192.168.2.66/24

10.10.10.100/24 RS1(虚拟机)
192.168.2.44/24 10.10.10.101/24 RS2(虚拟机)
192.168.2.233/24 客户机(自己电脑)

本次搭建的拓扑图如下,图中的192.168.2.51实为192.168.2.27

LVS-DR拓扑图 -2

LVS-DR拓扑图

调度器服务器要安装ipvsadm,两台真实服务器要运行Apache或者Nginx等web服务器。

Director上需要安装ipvsadm:

yum install -y ipvsadm

两个real server 上都安装apache:

yum install -y httpd

DR 负载均衡器配置

ipvsadm有自己的命令,但是一般都是用shell脚本把需要做的设置写出来,然后运行shell来完成设置。

首先进入一个存放shell脚本的目录,这个目录自行选择。先森选择将shell脚本放置/usr/local/bin目录下。

cd /usr/local/bin

用vim直接打开一个不存在的shell文件,保存的时候会自动创建好。

vim lvs_dr.sh

打开后添加如下内容:

#!/bin/sh
 VIP=192.168.2.27       # 均衡器外网IP
 DIP=10.10.10.99        # 均衡器内网IP
 RIP1=10.10.10.100      # 真实服务器的内网IP
 RIP2=10.10.10.101
 . /etc/rc.d/init.d/functions
         case "$1" in
         start)
         echo "start LVS of DirectorServer"
         #Set the Virtual IP Address
         /sbin/ifconfig eth0:1 $DIP netmask 255.255.255.0 up    # 给均衡器添加一个内容IP
         /sbin/route add -host $DIP dev eth0:1                  # 给内网IP添加路由
         #Clear IPVS Table
         /sbin/ipvsadm -C       # 手工清空原来表内容
         #Set Lvs
         /sbin/ipvsadm -A -t $VIP:80 -s rr              # -A添加地址,-t指定VIP TCP端口,-s指定调度算法:rr轮询算法
         /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g     # -a指定真实服务器, -t lvs上VIP,-r真实服务器ip及端口,-g先择DR模式(-m为NAT模式)
         /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
         #Run Lvs
         /sbin/ipvsadm
         ;;
         stop)
         echo "close LVS Directorserver"
         /sbin/ipvsadm -C
         /sbin/ifconfig eth0:1 down
         ;;
         *)
         echo "Usage: $0 {start|stop}"
         exit 1
         esac

保存并退出:

:wq

给lvs_dr.sh添加可执行权限:

chmod +x lvs_dr.sh

RS 真实服务器配置

两台real server也需要添加一个shell脚本,脚本的内容大致相同。

还是进入一个保存脚本的目录:

cd /usr/local/bin

编辑本不存在的shell脚本:

vim lvs_dr_rs.sh

在脚本内加入如下内容:

#!/bin/bash
 VIP=192.168.2.27       # 均衡器的VIP地址
 RIP=10.10.10.100       # 要给本地服务器设置的内网地址
 LOCAL_Name=50bang
 BROADCAST=192.168.2.255  #vip's broadcast
 . /etc/rc.d/init.d/functions
 case "$1" in
     start)
      echo "reparing for Real Server"
        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
        ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $BROADCAST up
#为什么要绑定VIP呢?因为DR模式原理是LVS调度器修改mac地址为真实服务器地址,报文的目的IP还是VIP没修改,,网卡只会把目的MAC和目的IP都是自己的报文上送CPU,所以真实服务器上必须>配置VIP!
#为什么使用lo口呢?因为lo口为本地环回口,防止本地局域网IP地址冲突!
        ifconfig eth0:1 $RIP netmask 255.255.255.0 up   # 为本地服务器设置一个内网IP
         /sbin/route add -host $VIP dev lo:0
         ;;
     stop)
         ifconfig lo:0 down
         ifconfig eth0:1 down
        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 "close LVS Real Server"
         ;;
     *)
         echo "Usage: lvs {start|stop}"
         exit 1
 esac

退出保存:

:wq

依旧添加可执行权限:

chmod +x lvs_dr_rs.sh

运行脚本

DR 负载均衡器:

./lvs_dr.sh start

DR运行脚本 -3

DR运行脚本

RS 真实服务器:

./lvs_dr_rs.sh start

RS运行脚本 -4

RS运行脚本

检查网卡:

ifconfig

DR均衡器的网卡信息 -5

DR均衡器的网卡信息

RS服务器的网卡信息 -6

RS服务器的网卡信息

查看ipvs设置

ipvsadm -ln

测试

运行RS服务器上的Apache或Nginx、Tomcat等任何web服务器,记得开启防火墙iptables的端口。

为了方便测试,可以把Apache的默认页面内容改为“web1”和“web2”:

echo "web1" >/var/www/html/index.html

然后在电脑上浏览器访问设置的VIP地址,即192.168.2.27,不停刷新查看效果。如果配置成功则会看到页面在“web1”和“web2”上轮流切换。

第一次打开 -7

第一次打开

刷新一次 -8

刷新一次

如此,就是先LVS-DR的负载均衡。

实际上,LVS-DR还经常和Keepalived搭配起来实现高可用+负载均衡。这个先森也实现了,真的是非常简单呢,后面会继续分享。

历史上的今天:

标签:
除特别注明外,本站所有文章均为成航先森 www.capjsj.cn原创,本文共4895个字
转载请注明出处来自http://www.capjsj.cn/lvs_dr.html
已有 10 位"计工"发布了激烈的评论,还有N多人围观笑而不语评论
马洪飞博客的头像
欢迎发表评论
取消评论

表情
疑问调皮伤心抠鼻黑线微笑可爱奸笑震惊吓到了撇嘴大兵忍不住笑笑狂骂狂怒噢?鼓掌酷⊙﹏⊙b汗鄙视大哭嘿嘿

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. 蒸汽回收机的头像

    博主分享的精准到位,本人受益匪浅,非常感谢!欢迎朋友回访交流!

    2016-07-31 17:08 回复
  2. 真我风采的头像

    恭喜先森正式工作,工作之余还写工作笔记。真是好工人。

    2016-08-01 13:33 回复
  3. 小C博客的头像

    好教程!等用到了在来偷走!

    2016-08-01 19:48 回复
  4. Koolight的头像

    可惜了,我又看不懂!

    2016-08-01 23:13 回复
  5. benen005的头像

    确实不错的性能

    2016-08-02 18:51 回复
  6. 龙笑天的头像

    :roll: 这些都太高端了点~~

    2016-08-02 20:56 回复
  7. 个人博客的头像

    你这可以啊、非常佩服研究项目的人、;大牛 :mrgreen:

    2016-08-03 14:48 回复
  8. 孟子非博客的头像

    围观一下,手短

    2016-08-03 21:50 回复
  9. 破浪无忧的头像

    过来支持一下~

    2016-08-04 09:07 回复
  10. 马洪飞博客的头像

    在哪里上班啊。。。

    2016-08-04 14:56 回复
官方微信
发表评论 返回顶部