当前位置:首页 > 操作系统 > Linux

LINUX虚拟服务器--LVS的搭建

              LINUX虚拟服务器--LVS的搭建

 本次实验做得是章文嵩博士创立的开源项目 LVS LinuxVirtual Server )。 Linux 虚拟服务器 , 是一个虚拟的集群系统,目的是为了加强系统的可用性以及可伸缩性。本次实验使用四台虚拟机,其中两台作为提供服务的真机( real server 另外两台作调度器,实现 ip 负载均衡,其实实现 ip 负载均衡主要是有 ipvs 这个模块来实现的。 LVS 中有四种 ip 负载均衡技术,(“ VS/NAT ”、“ VS/TUN ”、“ VS/DR ”、“ VS/FULLNAT ”)以及相应的 10 种调度算法:轮叫算法( RR )、加权轮叫算法( WRR )、目标地址散列( DH )、源地址散列( SH )等属于静态调度算法,动态调度算法有:最少链接( LC )、加权最少链接( WLC )、最短期望链接( SED )、从不排队 never quene (NQ) 、基于局部性的最少链接( LBLC )、带复制的基于局部的最少链接( LBLCR )等动态调度算法。

 

本次实验使用 IPVS 模块实现 ip 负载均衡且使用 VS/RR 模式的 rr 轮叫算法实现调度。

技术分享650) this.width=650;" src="/upload/getfiles/default/2022/11/10/20221110065616523.jpg" title="1.png" />

本次试验拓扑图


具体上步骤:( VM1 VM2 用来做调度器, VM3VM4 用来做 real server 提供服务。)

调度器: VM1 VM2 首先需要安装 IPVS 软件来实现 ip 负载均衡。

#yum  intall –y ipvsadm      # 安装 ipvsadm 服务

#ip  addr  add  172.25.45.100/24 dev  eth0  : 首先需要添加虚拟 ip 地址;

#ipvsadm  -A  -t  172.25.10.100:80  -s  rr    : 添加虚拟服务和 rr 轮叫算法

#ipvsadm  -a  -t172.25.10.100:80  -r 172.25.10.55:80  -g -r 添加 realserver    地址, -g 表示添加 VS/DR 模式, -t : 添加调度器地址;

#ipvsadm  -a  -t  172.25.10.100:80  -r  172.25.10.56:80 -g  :添加另外一台真机

   ipvsadm -l  :查看添加的工作模式

   ipvsadm -C  :清除之前的算法和模式

 

realserver:  VM 3 VM4 真机服务

#yum  install  -y  httpd    # 真机提供 HTTPD 服务,

#/etc/init.d/httpd  start

#ip  addr  add  172.25.10.100/32 dev  eth0  # 真机同样需要添加虚拟 ip 地址,与调度器的虚拟 Ip 地址一致。

#yum  install  -y  arptables_jf  # 安装 arp 防火墙,用来屏蔽数据包,拦截 ip 冲突,因为虚拟机与 real server 的地址一致啊,所以进入 real-server 时就需要把虚拟 ip DROP 掉,也就就是拦截掉 real-server 的虚拟 ip,

#arptables  -A  IN  -d  172.25.10.100 -j  DROP    # 拒绝客户端访问 realserver 的虚拟 IP, 只要输入进来直接 DROP 掉。

#arptables  -A  OUT  -s 172.25.10.100 -j mangle --mangle-ip-s172.25.10.55

# 由于 tcp 三次握手原因,所以出去的时候仍要以 vip 地址出去才会实现握手,而真正将数据传输给客户端的就是 realserver  mangle 参数就是这个功能;

#/etc/init.d/arptables_jf save

VM3 :#echoserver55.example.com >  /var/www/html/index.html

VM4 #echo server56.example.com >  /var/www/html/index.html

 

两台真机服务器的配置一样操作;提供 httpd 服务;

优点:为什么 lvs vs/dr 比路由要先进,因为他是直接在第四层将数据转发,而路由是经过网络层,将数据怎样进,再怎样通过路由出去,吞吐率不高; VS/NAT 模式为: client à vs à nat à rs à nat à vs à client 

VS/DR 模式调度器直接在数据链路层通过同一网段 ip 地址获得 realserver MAC 地址,直接将数据包扔给 realserver, real -server 再将服务直接提供给客户端 , 因此数据吞吐率较高, VS/DR 模式为: client à vs à rs à client

工作在 DR 模式时,要求处在同一虚拟局域网 VLAN 内;

验证:在 Firefox 里面输入虚拟 ip 进行访问,刷新网页,可以不同的 real-server 提供 apache 服务。还可以通过真机输入命令: arp -an 查看虚拟 Ip MAC 地址,再去找到该 MAC 地址对应的调度器。如果 MAC 地址是 real-server 的,这说明调度器没有工作,需要查找原因了,我遇到的情况原因是因为调度器忘了添加虚拟 ip.

 

添加健康检查功能模块,此时如果哪台 real-server 停止服务了,则该调度器实验并不能判断出来哪台 real-server 不能工作,仍然回去调度那台不能工作的 real-server. 因此需要添加健康检查功能,使得后台的 real-server 坏了,能够及时发现,并且从调度器中移除该损坏的 real-server 主机。

LVS 健康检查 : 也就是说一台 real server 坏了 , 调度器只能显示好的在工作 , 坏了就直接能发现。 ipvsadm -l 显示出正在执行的 real-server

#cd  /usr/share/doc/ldirectord-3.9.5/

#cp  ldirectord.cf  /etc/ha.d/

#vim  ldirectord.cf

         virtual=172.25.10.100:80     # 虚拟 ip

         real=172.25.10.55:80 gate    # 提供服务的 real-serverIp

         real=172.25.10.56:80 gate

        fallback=127.0.0.1:80 gate    # 如果两台 real-server 都坏了,则只能自己提供该服务。前提是的有该服务哦。

         service=http

         scheduler=rr         # 调用轮叫算法

         #persistent=600

         #netmask=255.255.255.255

         protocol=tcp

         checktype=negotiate

         checkport=80

         request="index.html"    # 查询内容

 

#/etc/init.d/ldirectord start  #ldirectored 服务启动

VM 1 VM2#yum install -y httpd

#echo  www.westos.com >  /var/www/html/index.html

/etc/init.d/httpd  start  # 注意该服务只能手动启动,

现在就可以进行健康检查了 ; 使两个真机 realserver 依次停止 httpd 服务 , 然后再在服务调度器上进行查看 :ipvsadm   -l

接下来与开源 heartbeat 集群进行整合,使得系统的稳定性更高,因为现在使用的是一台调度服务,我们使用 heartbeat 做一个双机集群的调度服务器,从而避免调度器的单机故障发生。

与开源 heartbeat 整合的目的是为了决调度器的单点故障 , 即使调度器所在的一台主机发生错误了 , 另外一台就可以直接接管调度其的功能服务 .

heartbeat 的双机集群 :

#/etc/init.d/ldirectord  stop   # 首先使健康检查功能停止,因为 heartbeat 自动起

#/etc/init.d/httpd  stop       #httpd 服务停止

#ip  addr  del  172.25.10.100/24 dev  eth0   # 去掉虚拟 ip ,因为 heartbeat 能自动产生虚拟 ip

#scp  ldirectord.cf  root@172.25.10.51:/etc/ha.d/   # 将健康检查功能传送到双机集群中的另一台虚拟机里面去,

#vim  /etc/ha.d/haresource    # 编辑配置文件

      server51.example.com  IPaddr::172.25.10.100/24/eth0  httpd  ldirectord

# scp/etc/ha.d/haresource root@172.25.10.51:/etc/ha.d/

双机集群都启动 , 保证调度器的高可用性 , 不会因为一台主机服务器宕掉而无法进行调度。

 VM1 VM2.

#/etc/init.d/heartbeat   start


验证 : 首先查看运行的虚拟 ip, 以及 ipvsadm  -l 查看运行的两个 real-server, 最后依次关闭两个 realserver, 停止 httpd 服务 . 刷新网页查看内容变化 . 最后依次再关掉两个调度器,在刷新网页查看状态。


本文出自 “Foreverlinux” 博客,请务必保留此出处http://linuxmin0712.blog.51cto.com/11702588/1790857

原文:http://linuxmin0712.blog.51cto.com/11702588/1790857


【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!

相关教程推荐

其他课程推荐