LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统,旨在使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,具有很好的可伸缩性、很好的可靠性、很好的可管理性。
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份)。我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器, 我们称之为VS/NAT技术(Virtual Server via Network Address Translation)。在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术。
一 直接路由实现虚拟服务器(VS/DR)
通过改写请求报文的目标MAC地址,将请求发给真实服务器,而真实服务器将响应后的处理结果直接返回给客户端用户
1. 在真机的挂载目录里,有着关于负载均衡的文件:
2. 在server1端,将要用到的负载均衡文件写到yum源的配置文件中:
使用指令yum repolist之后将看到添加的包的数量:
3. 在server1端安装ipvsadm并开启服务,给server1,server2,server3三个主机都添加172.25.254.100的ip:
4. 指定虚拟主机和真实主机:
-A为虚拟主机,-a为真实主机。需要注意的是,在指定虚拟主机和真实主机之后,ipvsadm服务不能重启。如果重启,指定的虚拟主机和真实主机将会失效。
5. 在server2和server3端安装arptables_jf 在server2和server3端安装arptables_jf 并添加策略,之后使用/etc/init.d/arptables save保存策略:
在OUT表中server2端为172.25.254.2,server3端为172.25.254.3。
6. 测试:
在真机端curl 172.25.254.100解析ip,将得到servre2和server3两台主机的负载均衡结果:
在虚拟主机server1端将看到访问真实主机的次数:
7. 这种服务的缺点在于,如果后端服务器挂掉,比如说停掉server真实主机的httpd服务,那么在客户端解析的时候们就会报错,但server3还会正常工作。这样用户就将得到错误的信息:
为了解决这个问题,就需要用到ldirectord服务
二 ldiretord服务的搭建
1. 准备ldirectord安装包并安装,将配置文件复制到/etc/ha.d目录下:
2. 到/etc/ha.d目录下编辑配置文件:
3. 停掉server1端的varnish服务,使用ipvsadm -C命令清除server2端ipvsadm服务原有的策略,开启ldirectord服务,开启server1端的httpd服务,重启ldirectord。这时执行指令ipvsadm -l将看到虚拟机主和两台真实主机:
4. 在客户端进行172.25.254.100的解析,仍能够实现负载均衡。如果停掉真实主机的httpd服务,虚拟主机端将自动更新ipvasdm服务,此时接收的数据包将直接访问虚拟主机,这对虚拟主机来说有着很大的压力,虚拟主机一端并不是用户需要访问的数据所在端。可以在虚拟主机server1端的httpd默认发布目录里新建index.html文件,向用户说明此网站正在维护无法正常访问。
三 高可用负载均衡
建立两台虚拟主机,在一台虚拟主机崩溃的情况下,另一台虚拟主机直接接替崩溃的虚拟主机的工作,实现服务的连续性。
1. 安装keepalived服务:
准备安装包keepalived-2.0.6.tar.gz安装:
安装之后给keepalived可执行权限
制作软链接:
软链接制作完成之后开启keepalived服务。
2. 新增一个虚拟机server4,在server4端制作同样的软链接,并开启keepalived服务。
3. 在server1和server4端安装mailx服务。
4.在servre1端删除172.25.254.100的ip并修改keepalived服务的配置文件/etc/keepalived/keepalived.conf :
5. 将修改后的配置文件复制一份到server4端的/etc/keepalived/目录并修改文件中的优先级为50:
6. 配置文件修改完成之后,两端重启keepalived服务。这样如果虚拟主机server1挂掉,server4会接替server1的工作。可以在系统日志中查看到server1和server4的工作状态。