设为首页 收藏本站
查看: 1284|回复: 0

[经验分享] LVS (Linux Virtual Server)集群项目实践

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2014-11-18 10:13:58 | 显示全部楼层 |阅读模式
LVS (LinuxVirtual Server)集群项目实践
实验目的:通过实验可以熟练规划和配置集群项目
实验环境:Red Hat Enterprise Linux Server release 6.4  
实验前提:请确保实验前看过 LVS 中文站点
实验说明:本实验只是以实现负载均衡为目标,并没有考虑如共享存储等,这方面问题在以后的实验中 会添加。  
实验步骤
     一、LVS 系统模型
     二、LVS 调度算法
     三、负载平衡方法
     四、常用术语介绍
     五、NAT 方式架设
     六、DR方式架设
一、LVS 系统模型
   Linux 虚拟服务器(Linux Virtual Server, LVS )建筑于实际的服务器集群之上,用户看不到提供服务的多台实际服务器,而只能看见一台作为负载平衡器的服务器。实际的服务器通过高速局域网或地理上分散的广域网连接。实际服务器的前端是一台负载平衡器,他将用户的请求调度到实际服务器上完成,这样看起来好像所有服务都是通过虚拟服务器来完成的。Linux 虚拟服务器能够提供良好的可升级性、可靠性和可用性。用户可以透明地增加或减少一个节点,可以对实际服务器进行监测,如果发现有节点失败就重新配置系统。
      
二、LVS 调度算法
    LVS提供了十种调度算法:
(一)轮询(RoundRobin Scheduling )   rr
    轮转调度不考虑服务器的连接数和响应时间,它将所有的服务器都看作是相同的。 当以轮转的形式将连接分发到不同的服务器上。   
(二)加权轮转 (WeightedRound Robin Scheduling)       wrr  
    根据每个机器的处理能力的不同给每个机器分配一个对应的权重,然后根据权重的
大小以轮转的方式将请求分发到各台机器。这种调度算法的耗费比其它的动态调度算法小,但是当负载变化很频繁时,它会导致负载失衡,而且那些长请求会发到同一个服务器上。   
(三)最少连接调度(LeastConnection  Scheduling)       lc
    最少连接调度将用户请求发送到连接数最少的机器上。最少连接调度是一种动态调度方法,如果集群中各台服务器的处理能力相近,则当负载的变化很大时也不会导致负载失衡,因为它不会把长请求发送到同一台机器上。但是当处理器的处理能力差异较大时,最少连接调度就不能很好的发挥效能了。   
(四)加权最小连接调度(WeightedLeast Connection Scheduling)      wlc  
    根据服务器的性能不同而给它们分配一个相应的权重,权重越大,获得一个连接的机会就越大。有如下的运算方法:(假设共有n 台机器,每一台服务器i 的权重为Wi(i=1 ,..,n),活跃连接数为Ci (i=1 ,..,n),所有的连接数为Ci (i=1 ,..,n)的总和,下一个连接会发送给服务器j ,服务器j 满足以下的要求):(Cj/ALL_CONNECTIONS)/Wj = min {(Ci/ALL_CONNECTIONS)/Wi } (i=1,..,n) 由于ALL_CONNECTIONS 是一个常数,因此上面的式子可以优化为: Cj/Wj = min { Ci/Wi } (i=1 ,..,n)   
(五)(Locality-Based Least - Connection)    lblc  
(六)(Locality-Based Least - Connection)    lblcr
(七)目的地址哈希算法(DestinationHashing)    dh
(八)源地址哈希算法(SourceHashing)    sh
(九)(Shortest    Expected   Delay )   sed  
(十)不排队调度(Never     Queue )      nq  
三、负载平衡方法
LVS 提供了三种IP级的负载平衡方法:
   Virtual Server via NAT 、Virtual Server via IP Tunneling、Virtual Server via Direct Routing。
   Virtual Server via NAT 方法使用了报文双向重写的方法,
   VirtualServer via IP Tunneling 采用的是报文单向重写的策略,
   Virtual Server via Direct Routing 采用的是报文转发策略,
四、常用术语介绍
   DGW    公网IP地址的默认网关
   VIP    客户端访问的公网IP地址,Director的虚拟IP地址
   DIP    Director的真实IP地址
   RIP    真实机的IP地址
五、NAT 方式架设
一、实验前的准备工作
  网络拓扑规划:
    VIP :10.0.0.1
    DIP :192.168.4.254    (打开ip_forward)
    RIP :192.168.4.11     (默认网关为192.168.4.254 )
    RIP :192.168.4.22     (默认网关为192.168.4.254 )
  测试机 : 10.0.0.20
二、Director  的配置
(一)设置主机名
[iyunv@localhost ~]# hostname Director  
[iyunv@localhost ~]# vim /etc/sysconfig/network
  NETWORKING=yes
  NETWORKING_IPV6=no  
  HOSTNAME=Director   
  (为了更直观的配置,可以重新打开新的tty,或新的标签,发现主机名已经更改)
   
(二)打开ip_forward,开启调度器的路由功能
[iyunv@Director ~]# vim /etc/sysctl.conf  
net.ipv4.ip_forward= 1
[iyunv@Director ~]# sysctl  - p    //让配置生效
   
(三)IP地址的配置
1.[iyunv@Director~]# vim /etc/sysconfig/network - scripts/ifcfg - eth0
  DEVICE=eth0
  BOOTPROTO=static
  IPADDR=192.168.0.200
  NETMASK=255.255.255.0
  ONBOOT=yes
  [iyunv@Director ~]# service networkrestart    (重新启动网络服务)
   
2.  绑定一个实验用的模拟外网地址eth1: 10.0.0.1  ,IP地址配置
[iyunv@Director~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=10.0.0.1
NETMASK=255.255.255.0
3.  测试IP地址是否正常
[iyunv@Director ~]# ping  - c 1 192.168.4.254
[iyunv@Director ~]# ping  - c 1 10.0.0.1
(如果可以正常的Ping通,可以继续下面的实验)
   
三、Real Server 的配置
Real Server 1   
(一)在Real Server1 上设置主机名
1.[iyunv@localhost ~]# vim/etc/sysconfig/network  
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=Server1
2.[iyunv@localhost ~]#hostname Server1  
   
(二)设置IP地址和默认网关
[iyunv@Server1 ~]# vim /etc/sysconfig/network -scripts/ifcfg - eth0
DEVICE=eth0  
BOOTPROTO=none
IPADDR=192.168.4.11
NETMASK=255.255.255.0
GATEWAY=192.168.4.254     (注意:必须设置默认网关)
ONBOOT=yes
   
(三)打开apache  并测试是否可以正常访问
1.为了便与直观的看到效果,新建一个index.html
[iyunv@Server1 ~]# vim /var/www/html/index.html
<html>
       <head>
               <title>192.168.4.11</title>
       </head>  
       <body>
               <center>Server1</center>
       </body>  
</html>
2. 重新启动Apache服务
  [iyunv@Server1~]# service httpd restart   
3. 测试网页
[iyunv@Server1~]# elinks --dump http://192.168.4.11
                            Server1               
   
Real Server 2  
(一)在RealServer 2 上设置主机名
1.[iyunv@localhost ~]# vim/etc/sysconfig/network  
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=Server2
2.[iyunv@localhost ~]# hostname Server2
   
(二)设置IP地址和默认网关
[iyunv@Server1 ~]# vim /etc/sysconfig/network -scripts/ifcfg - eth0
DEVICE=eth0  
BOOTPROTO=none
IPADDR=192.168.4.22
NETMASK=255.255.255.0
GATEWAY=192.168.4.254     (注意:必须设置默认网关)
ONBOOT=yes
(三)打开apache  并测试是否可以正常访问
2.为了便与直观的看到效果,新建一个 index.html
[iyunv@Server1 ~]# vim /var/www/html/index.html
<html>
       <head>
               <title>192.168.4.22</title>
       </head>  
       <body>
               <center>Server2</center>
        </body>  
</html>
2. 重新启动Apache服务
[iyunv@Server1 ~]# service httpd restart   
3. 测试网页
[iyunv@Server1 ~]# elinks --dumphttp://192.168.4.22
                            Server2      
   
四、Director  上的部署和测试
(一)安装软件包
   默认光盘yum install ipvsadm 无法安装,所以先设置yum源,以光盘为例
[iyunv@Director ~]# vim /etc/yum.repos.d/yum.repo
[rhel-yum]
name=Red Hat Enterprise Linuxyum
baseurl=file:///media/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[loadbalancer]
name=server
baseurl=file:///media/LoadBalancer
enabled=1
gpgcheck=0
挂在光盘,装载软件:
[iyunv@Director ~]# mount /dev/cdrom  /media/
[iyunv@Director ~]# yum -y install ipvsadm  
[iyunv@Director ~]# service ipvsadm start;chkconfigipvsadm on
(二)负载均衡调度
[iyunv@Director ~]# ipvsadm  - A - t 10.0.0.1:80  -s rr
[iyunv@Director ~]# ipvsadm  - a - t 10.0.0.1:80  -r 192.168.4.11 -m -w 1
[iyunv@Director ~]# ipvsadm  - a - t 10.0.0.1:80  -r 192.168.4.22  -m -w 2
[iyunv@Director ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  ->RemoteAddress:Port           ForwardWeight ActiveConn InActConn
TCP 10.0.0.1:80 rr
  ->192.168.4.11:80              Masq    1     0          0         
  ->192.168.4.22:80              Masq   1      0          0
[iyunv@Director ~]# service ipvsadm save  
[iyunv@Director ~]# modprobe iptable_nat  
   
(三)测试是否达到负载均衡的效果(必须在另一台计算机上,拥有10.0.0.0网段的IP地址)
[iyunv@localhost ~]# elinks --dump http://10.0.0.1
                          Server1
[iyunv@localhost ~]# elinks --dump http://10.0.0.1
                          Server2
         
(四)用ab测试其性能
[iyunv@localhost ~]# ab - n 1000 - c 200 http://10.0.0.1/index.html
[iyunv@localhost ~]# ab - n 1000 - c 200http://10.0.0.1/ index.html

(五)测试说明
   这里我简单的用静态的html来检测,普通单机和集群的速度比,在实际的应用中,静态页面需要Squid 来加速,而静态页面才用集群,实现动静分离,这部分在以后的实验中会体现。


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-30975-1-1.html 上篇帖子: LVS—NAT群集配置 下篇帖子: LVS负载平衡集群(没成型) Linux 项目
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表