负载均衡集群介绍-LVS介绍-LVS调度算法-LVS NAT模式搭建

负载均衡集群介绍:

主流开源软件LVS、keepalived、haproxy、nginx等html

其中LVS属于4层,nginx属于7层,haproxy既能够认为是4层,也能够当7层(网络OSI 7层模型)linux

keepalived的负载均衡功能其实就是lvsnginx

lvs这种4层的负载均衡是能够分发TCP协议,web服务是80端口,除了分发80端口,还有其余的端口通讯的,好比MySQL的负载均衡,就能够用LVS实现,而nginx仅仅支持http,https,mail,haproxy;haproxy也支持MySQL这种TCP负载均衡web

相比较来讲,LVS这种4层的更稳定,能承受更多的请求,承载的并发量更高,而nginx这种7层的更加灵活,能实现更多的个性化需求算法

 

LVS介绍:

LVS是由国人章文嵩开发apache

流行度不亚于apache的httpd,基于TCP/IP作的路由和转发,稳定性和效率很高vim

LVS最新版本基于Linux内核2.6,有好多年不更新了后端

LVS有三种常见的模式:NAT、DR、IP Tunnelbash

LVS架构中有一个核心角色叫作分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)服务器

 

LVS NAT模式:

借助iptables的nat表来实现

用户的请求到分发器后,经过预设的iptables规则,把请求的数据包转发到后端的rs上去

rs须要设定网关为分发器的内网ip

用户请求的数据包和返回给用户的数据包所有通过分发器,因此分发器成为瓶颈

在nat模式中,只须要分发器有公网ip便可,因此比较节省公网ip资源

 

LVS IP Tunnel模式:

这种模式,须要有一个公共的IP配置在分发器和全部rs上,咱们把它叫作vip

客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包作一个加工,会把目标IP改成rs的IP,这样数据包就到了rs上

rs接收数据包后,会还原原始数据包,这样目标IP为vip,由于全部rs上配置了这个vip,因此它会认为是它本身

 

LVS DR模式:

这种模式,也须要有一个公共的IP配置在分发器和全部rs上,也就是vip

和IP Tunnel不一样的是,它会把数据包的MAC地址修改成rs的MAC地址

rs接收数据包后,会还原原始数据包,这样目标IP为vip,由于全部rs上配置了这个vip,因此它会认为是它本身

 

LVS调度算法:

  • 轮询 Round-Robin rr
  • 加权轮询 Weight Round-Robin wrr
  • 最小链接 Least-Connection lc
  • 加权最小链接 Weight Least-Connection wlc
  • 基于局部性的最小链接 Locality-Based Least Connections lblc
  • 带复制的基于局部性最小链接 Locality-Based Least Connections with Replication lblcr
  • 目标地址散列调度 Destination Hashing dh
  • 源地址散列调度 Source Hashing sh

经常使用的算法是前四种

 

LVS NAT模式搭建:

要点:nat模式,基于iptables,因此必须设置一些规则来实现。

一.准备工做:

三台机器:分发器:内网192.168.133.130   外网192.168.147.144

                 rs1:内网192.168.133.132   网关192.168.133.130

                 rs2:内网192.168.133.133   网关192.168.133.130

 

三台机器执行:systemctl stop firewalld;systemctl disable firewalld;systemctl start iptables;systemctl enable iptables;iptables -F ;service iptables save            #关闭并取消开机启动firewalld;开启并设置开机启动iptables;若iptables没安装可yum install -y iptables-services;清空规则并保存,以便后续测试

 

三台机器关闭selinux:setenforce 0;vim /etc/selinux/config      #SELINUX=enforcing更改成SELINUX=disabled

 

两台rs机器安装nginx并启动,测试所用:yum install -y nginx 

 

二.NAT模式搭建

1.分发器安装ipvsadm:        #是实现 lvs 的工具

yum install -y ipvsadm

 

2.分发器编写iptables规则脚本并执行:

vim /usr/local/sbin/lvs_nat.sh               #路径自定义,添加如下内容:

#! /bin/bash
# director (分发器)服务器上开启路由转发功能
#对内核参数修改,打开路由转发
echo 1 > /proc/sys/net/ipv4/ip_forward   
# 关闭icmp的重定向
#假装操做,否则不能转发rs的数据
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects  
echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects 
# 注意区分网卡名字,dir机器的两块网卡分别为ens33和ens37
echo 0 > /proc/sys/net/ipv4/conf/eno16777736/send_redirects  
echo 0 > /proc/sys/net/ipv4/conf/ens36/send_redirects
# director 设置nat防火墙
iptables -t nat -F
iptables -t nat -X
#MASQUERADE实现同网段的机器去上网,路由器使用的就是这个功能
iptables -t nat -A POSTROUTING -s 192.168.133.0/24  -j MASQUERADE  
# director设置ipvsadm
#设置一个变量,方便下面命令引用
IPVSADM='/usr/sbin/ipvsadm' 
#清空规则
$IPVSADM -C 
#用来定义lvs 的模式;lc,为算法,能够按需求选择 lvs 里面适合的算法
#-t 制定lvs 模式,以后IP 就是dir的IP,-s 指定算法;-p 指定数据包转发超时时间
$IPVSADM -A -t 192.168.147.144:80 -s lc -p 3   
#小规则,-r 指定dir机器IP,-m 指定nat模式,-w指定rs权重 
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.132:80 -m -w 1   
#小规则,-r 指定dir机器IP,-m 指定nat模式,-w指定rs权重   
$IPVSADM -a -t 192.168.147.144:80 -r 192.168.133.133:80 -m -w 1

sh /usr/local/sbin/lvs_nat.sh       

 

三.测试

1.设置两台rs的nginx的索引页

vim /usr/share/nginx/html/index.html             #rs1与rs2的索引页设置不一样字符串,用于区分访问。

2.curl 192.168.147.144                                      #屡次执行,看访问的索引页是否有变化

相关文章
相关标签/搜索