ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Keepalived+lvs 实现高可用负载均衡服务器集群

2021-01-17 00:00:25  阅读:245  来源: 互联网

标签:负载 lvs Keepalived server1 Server Director 172.25 服务器


Linux集群主要分成三大类( 高可用集群, 负载均衡集群,科学计算集群)

负载均衡系统:集群中所有的节点都处于活动状态,它们分摊系统的工作负载。一般Web服务器集群、数据库集群和应用服务器集群都属于这种类型。

负载均衡集群一般用于相应网络请求的网页服务器,数据库服务器。这种集群可以在接到请求时,检查接受请求较少,不繁忙的服务器,并把请求转到这些服务器上。从检查其他服务器状态这一点上看,负载均衡和容错集群很接近,不同之处是数量上更多。

实验环境

  1. 在linux环境中,通过母盘是redhat7.6的操作系统,克隆搭建四台域名分别为node1,node2, node3,node4; 主机名分别为server1,server2,server3, server4的四台虚拟机。
  2. 给四台主机分别配置好各自的ip地址和dns地址解析,实现四台虚拟机可以互相ping通。(可以在母盘中配置好,创建的镜子中就有)
  3. 配置好四台主机的yum源仓库。(可以通过宿主机的httpd服务,搭建网络仓库)
  4. 关闭掉所有虚拟机的防火墙,并将所有主机的selinux设置为disabled状态

选择lvm

在这里插入图片描述
7.6中关闭NetworkManager
在这里插入图片描述
在这里插入图片描述

在母盘中把selinux设置为disable

在这里插入图片描述

母盘配置好后执行

在这里插入图片描述
在这里插入图片描述

lvs在四层结构上实现负载均衡(http)

client --> vs --> rs --> client
lvs 有四种工作模式

NAT模式

VS/NAT(Virtual Server via Network Address Translation,网络地址翻转技术实现虚拟服务器),当请求到来时,Director Server上处理的程序将数据报文中的目标地址(VIP)改成具体的某台Real Server,端口也改成Real Server的端口,然后把报文发给Real Server。Real Server处理完数据后,需要返回给Director Server,然后Director Server将数据包中的源地址和源端口改成VIP的地址和端口,最后把数据发送出去。由此可以看出,用户的请求和返回都要经过Director Server,如果数据过多,则Director Server 将不堪负重。
优点:集群的物理服务器可以使用任何支持TCP/IP操作系统,物理服务器可以分配Internte的保留私有地址,只有Director Server需要一个合法的IP地址。
缺点:扩展性不足。当服Real Server增长到>=20台时间,Director Server将成为整个系统的瓶颈,因为所有的请求包和应答包都需要经过Director Server。

DR模式

VS/DR(Virtual Server via Direct Routing,直接路由技术实现虚拟服务器),它通过改写请求报文的MAC地址,将请求发送到Real Server,而Real Server 将相应直接返回给客户,免去了VS/TUN中的IP隧道开销。这种是以上三种模式中性能最高最好的,但必须要求Director Server与Real Server都有一块网卡连接在同一物理网段上。
优点:和VS/TUN一样,Director Server只负责分发请求, 应答包通过单独的路由方法返回给客户端。与VS/TUN相比,VS/DR不要隧道支持,因为可以使用大多数的操作系统作为物理服务器。
缺点:要求Director Server网卡必须与物理网卡在一个物理段上。

TUN 模式(隧道模式)

VS/TUN(Virtual Server via IP Tunneling,IP隧道技术实现虚拟服务器) ,它跟VS/NAT基本一样,但Real Server是直接返回数据给客户端,不需要经过Director Server,这样大大降低了Director Server的压力。
优点:Director Server只负责将请求包分发给物理服务器,而物理服务器将应该报直接发给用户,所以Director Server处理巨大的请求包,这种模式一台Director Server能为超过100台的服务器服务器服务,Director Server基本不成为系统的瓶颈。 非常适合Internet(如Web,Webservice等)负载,因为一般它们的请求包很小,但应答包比较大。
缺点:这种方式需要所有服务器支持IP Tunneling(IP Encapsulation)协议。

FULLNAT 模式(不是系统自带)

主要思想:引入local address(内网ip地址),cip-vip转换为lip->rip,而 lip和rip均为IDC内网ip,可以跨vlan通讯。

利用DR工作模式和轮询调度算法实现httpd的负载均衡

  1. yum install ipvsadm -y 安装lvs管理器
  2. 添加虚拟IP,‘rr’ 轮询调度算法
    ipvsadm -A -t 172.25.5.100:80 -s rr
  3. 添加虚拟IP的rs服务器
    ipvsadm -a -t 172.25.5.100:80 -r 172.25.5.2:80 -g
    ipvsadm -a -t 172.25.5.100:80 -r 172.25.5.3:80 -g
    ipvsadm -ln 查看lvs 调度器
    在server2和server3上开启httpd服务
  4. 分别在server2, server3上添加虚拟ip ,在宿主机上curl 172.25.5.100测试,用arp -an | grep 100查看收到arp报文对应的mac地址,arp -d 172.25.5.100 删除指定ip的arp缓存。
  5. 在server2和server3 yum install arptables -y 安装arp防火墙
    添加arptables访问规则
    server2:
    1). arptables -A INPUT -d 172.25.5.100 -j DROP
    2). arptables -A OUTPUT -s 172.25.5.100 -j mangle --mangle-ip-s 172.25.5.2
    3). systemctl start arptables
    server3:
    1). arptables -A INPUT -d 172.25.5.100 -j DROP
    2). arptables -A OUTPUT -s 172.25.5.100 -j mangle --mangle-ip-s 172.25.5.3
    3). systemctl start arptables
  6. 测试

server1
在这里插入图片描述
server2
在这里插入图片描述
server3
在这里插入图片描述
测试:可以看到收到arp报文对应的mac地址是server3主机的地址

在这里插入图片描述

keepalive + lvs

健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

实验原理:利用keepalive中的vrrp协议实现高可用,TCP_CHECK实现对后端rs进行健康检测

  1. 在server1和server4上yum install keepalive -y
  2. 修改server1配置文件,让server1做主用机
    在这里插入图片描述
    修改server4配置文件,让server4做背用机,MASTER改成BACKUP,100改为50
  3. 访问测试,当server1的keepalived停止之后,vip会自动漂移到server4上,不会影响客户端对后端服务器的访问,但是设置成主备机时,当server1的keepalived重新启动时,会抢占资源。
  4. 可以通过修改server4的keepalived配置文件,当重启服务时,vip 就不会从server1自动漂移到server4上。(将两个都改成backup,并且在priority高的后面上添加nopreempt参数,重启时就不会抢占资源)

问题:当server2断掉后(stop http),会出现一会能访问,一会又不能访问
在这里插入图片描述解决方案:keepalive提供健康检查,并作出相应的自动更改(根据配置文件的中写入的更改)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述将更改后的配置文件发送给备用机server4
在这里插入图片描述
当server1停止keepalived后,server4直接启动接管

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在客户端上没有任何影响,不会因为server1断开而访问不了
在这里插入图片描述

标签:负载,lvs,Keepalived,server1,Server,Director,172.25,服务器
来源: https://blog.csdn.net/weixin_47738793/article/details/112160810

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有