流水不争先,争的是滔滔不绝

负载均衡集介绍&LVS部署

IM安全 macgrady 47℃

1.负载均衡集介绍:
主流开源软件有LVS、keepalived、haproxy、nginx等等。
其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用
keepalived的负载均衡功能其实就是lvs。lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种。相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更加灵活,能实现更多的个性化需求。

LVS介绍:

LVS是由国人章文嵩开发,流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高。

LVS最新版本基于Linux内核2.6,后续已停止更新。

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

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

既所有的rs都平均分配,加权轮询 Weight Round-Robin wrr

在所有rs平均分配的同时存在权重

最小连接 Least-Connection lc

对连接数最小的rs分配

加权最小连接 Weight Least-Connection wlc

对连接数最小的rs分配的同时存在权重

基于局部性的最小连接 Locality-Based Least Connections lblc

带复制的基于局部性最小连接 Locality-Based Least Connections with Replication lblcr

目标地址散列调度 Destination Hashing dh

源地址散列调度 Source Hashing sh

LVS NAT 部署

准备三台服务器

分发器 内网IP 192.168.131.10 外网IP(仅主机模式) 192.168.6.39

rs1 内网IP 192.168.131.20 网关 192.168.131.10

rs2 内网ip 192.168.131.30 网关 192.168.131.10

三台机器都关闭firewalld并且安装启动iptables服务

同时还都需要关闭selinux

关闭firewalld

systemctl stop firewalld

systemctl disable firewalld

关闭selinux

setenforce 0

vim /etc/selinux/config

修改enforcing为disable

安装iptables并且调用空规则

yum -y install iptables-services

systemctl start iptables

iptables -F

service iptables save

配置分发器

安装ipvsadm

yum -y install ipvsadm

1

配置脚本

vim /usr/local/sbin/lvs_nat.sh

#! /bin/bash

# director 服务器上开启路由转发功能

echo 1 > /proc/sys/net/ipv4/ip_forward

# 关闭icmp的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

# 注意区分网卡名字,本机两个网卡分别为ens32和ens33

echo 0 > /proc/sys/net/ipv4/conf/ens32/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/ens33/send_redirects

# director 设置nat防火墙

iptables -t nat -F

iptables -t nat -X

iptables -t nat -A POSTROUTING -s 192.168.133.0/24  -j MASQUERADE

# director设置ipvsadm

IPVSADM=’/usr/sbin/ipvsadm’

$IPVSADM -C

$IPVSADM -A -t 192.168.6.39:80 -s wlc -p 3

$IPVSADM -a -t 192.168.6.39:80 -r 192.168.131.20:80 -m -w 1

$IPVSADM -a -t 192.168.6.39:80 -r 192.168.131.30:80 -m -w 1

-s wlc 表示指定为加权最小连接

-p 指定超时时间,如一直进行访问是指定rs的超时时间

执行脚本

sh /usr/local/sbin/lvs_nat.sh

1

配置rs

两台机器分别都安装nginx

yum -y install epel-release

yum -y install nginx

systemctl start nginx

#为了区分访问服务器,清空原模版文件

> /usr/share/nginx/html/index.html

vim /usr/share/nginx/html/index.html

rs1添加内容为zhounan@2 rs2添加内容为zhounan@3

分别访问测试

修改两台rs的内网网关与分发器ip一致

既内网ip为192.168.131.10

则两台rs的网关都为192.168.131.10

修改完分别重启网卡

————————————————

版权声明:本文为CSDN博主「城南旧梦」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/oy5348/article/details/85964631

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。
点击这里给我发消息