潍坊做网站的网络公司,哈尔滨城乡建设局网站首页,百度指数在线查询,服装厂招代理这里写目录标题 LVS负载均衡群集一.集群cluster与分布式1.特点#xff1a;2.类型1#xff09;负载均衡群集 LB2#xff09;高可用群集 HA3#xff09;高性能运输群集 HPC 3.分布式1#xff09;特点 二.LVS1.lvs的工作原理2.lvs的三种工作模式1#xff09;NAT 地址转换22.类型1负载均衡群集 LB2高可用群集 HA3高性能运输群集 HPC 3.分布式1特点 二.LVS1.lvs的工作原理2.lvs的三种工作模式1NAT 地址转换2TUN IP隧道 IP Tunnel3DR 直接路由 Direct Routing4对比 3.lvs的调度算法rr 轮询wrr 加权轮询sh 源地址哈希dh 目的地址哈希lc 最小连接wlc 加权最小连接lblc 基于地址的最小连接 4. ipvsadm工具ipvsadm工具的功能ipvsadm工具选项 三.LVS-NAT模式详解1.LVS-NAT模式配置思路2.部署实例1配置 NFS 共享存储2 配置节点服务器3配置负载调度器 四.LVS-DR模式详解1.数据包流向分析2.IP包头及数据帧头信息的变化3.DR模式的特点4.LVS-DR中的ARP问题及解决方法ARP问题1-相同IPARP问题2-响应报文的源IP预防方法 5.LVS-DR模式部署实例1配置负载调度器2部署NFS共享存储3配置节点服务器4浏览器访问测试 LVS负载均衡群集
一.集群cluster与分布式
1.特点
由多台主机构成都干同样的一件事对外展现为一个整体
2.类型
1负载均衡群集 LB
提高系统响应效率处理更多的访问请求减少延迟实现高并发、高负载的能力 典型代表软件类LVS Nginx HAProxy 等 硬件类F5 绿盟
2高可用群集 HA
提高系统可靠性减少中断时间确保服务的连续性通常使用 N 个 9 来代表高可用的指标 典型代表Keepalived heartbeat
3高性能运输群集 HPC
通过云计算或分布式计算获取高性能的CPU、内存等资源来提高整体运算能力
3.分布式
1特点
一个业务被拆成多个子业务或者本身就是不同的业务部署在多台服务器上。分布式中每一台服务器实现的功能是有差别的数据和代码也是不一样的分布式每台服务器功能加起来才是完整的业务。
2
二.LVS
1.lvs的工作原理
1当用户向负载均衡器Director Server发起请求调度器将请求发送至内核空间
2PREROUTING链首先会接收到用户请求判断目标IP确定是本机IP将数据包发送到INPUT链
3IPVS是工作在INPUT链上的当用户请求到达INPUT时IPVS会将用户请求和自己已经定义好的集群服务进行对比如果用户请求的就是定义的集群服务那么此时IPVS会强行修改数据包里的目标IP地址及端口并将新的数据包发送到POSTROUTING链
4POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器那么此时通过选路将数据包最终发送到后端的服务器
2.lvs的三种工作模式
1NAT 地址转换
调度器会作为所以节点服务器的默认网关也是客户端的访问入口和节点服务器返回响应消息的出口也就是说调度器会承载双向数据流量的负载压力可能会成为整个群集的性能瓶颈。由于节点服务器都处于内网环境使用私网IP地址所以具有一定安全性。
2TUN IP隧道 IP Tunnel
调度器仅作为客户端的访问入口节点服务器的响应消息是直接返回给客户端的不需要经过调度器。但是由于节点服务器需要部署在不同位置的公网环境中需要具有独立的公网IP调度器与节点服务器是通过专用的IP隧道实现相互通信的因此IP隧道模式的成本较高、安全性较低且IP隧道需要额外的封装和解封装性能会受到一定的影响。
3DR 直接路由 Direct Routing
调度器仅作为客户端的访问入口节点服务器的响应消息是直接返回给客户端的不需要经过调度器。与NAT模式的区别 节点服务器与调度器是部署在同一个物理网络内因此不需要建立专用的IP隧道。与TUN模式的区别 DR模式是企业首选的LVS模式。
4对比
工作模式特点区别应用场景NAT通过网络地址转换实现的虚拟服务器大并发访问时调度器的性能成为瓶颈调度器作为网关是访问请求得到入口也是响应访问的出口在高并发场景当中负载压力很高NAT地址转换可以提高安全性但使用性能降低一半因性能使用率问题实际应用不多DR使用路由技术实现虚拟服务器节点服务器需要配置VIP注意MAC地址广播调度器仅是访问请求的入口响应数据不经过调度器。节点服务器和调度器在同一个物理网络中数据转发不受额外影响该模式是生产环境中最常用的TUN通过隧道方式实现虚拟路由器调度器仅是访问请求的入口响应数据不经过调度器。但是需要大量公网IP还需要专用的IP隧道数据转发受IP隧道影响因公网IP问题实际应用不多常用于大型企业的异地灾备
3.lvs的调度算法
rr 轮询
将收到的请求按顺序轮流分配给群集中的各节点
wrr 加权轮询
根据调度器设置的权重值分发请求
权重值高的节点优先获得任务并且得到的请求越多
可以保证性能高的节点承担更多
sh 源地址哈希
根据请求的源IP地址进行Hash计算得到后端服务器
dh 目的地址哈希
根据请求的目的IP地址进行Hash计算得到后端服务器
lc 最小连接
根据真实服务器已建立的连接数进行分配
将收到的访问请求优先分配给连接数最少的节点
wlc 加权最小连接
在服务器节点的性能差异较大的 情况下调度器可以根据节点服务器负载自动调整权重当前连接数/权重值之后的请求会分发给这个值最大的
权重较高的节点将承担更 大比例的活动连接负载
lblc 基于地址的最小连接
先根据请求的目标IP地址若该服务器是可用的且并未超载将请求发送到该服务器
4. ipvsadm工具
yum install -y ipvsadmipvsadm工具的功能
LVS群集创建与管理
创建虚拟服务器添加、删除服务器节点查看群集及节点情况保存负载分配策略
ipvsadm工具选项
常用选项说明-A添加虚拟服务器-D删除整个虚拟服务器-s指定负载调度算法轮询rr、加权轮询wrr、最少连接lc、加权最少连接wlc-a表示添加真实服务器节点服务器-d删除某一个节点-t指定VIP地址及TCP端口-r指定RIP地址及TCP端口-m表示使用nat群集模式-g表示使用DR模式-i表示使用TUN模式-w设置权重权重为0时表示暂停节点-p 60表示保持长连接60秒-l列表查看LVS虚拟服务器默认为查看所有-n以数字形式显示地址、端口等信息常与“-l”选项组合使用
三.LVS-NAT模式详解
1.LVS-NAT模式配置思路
1配置 NFS 共享存储 2节点服务器安装 Web 服务注意默认网关要指向 调度器的IP地址测试的时候关闭连接保持 3调度服务器要开启 IP路由转发 功能和设置 SNAT 等 iptables 规则安装 ipvsadm 工具配置虚拟服务器和真实节点服务器相关配置 4客户端测试的时候网关要指向 调度器的IP地址。
2.部署实例
调度器内网关 ens33:192.168.82.10外网关ens36:12.0.0.10 Web节点服务器1192.168.82.100网关设置为192.168.122.10 Web节点服务器2192.168.82.101网关设置为192.168.122.10 NFS服务器192.168.82.88 客户端12.0.0.88
1配置 NFS 共享存储
systemctl disable firewalld.service --now
setenforce 0yum install -y nfs-utils rpcbind
systemctl start rpcbind nfsmkdir /opt/test1 /opt/test2
chmod 777 /opt/test1 /opt/test2
echo This is test1 web /opt/test1/index.html
echo This is test2 web /opt/test2/index.html#nfs
vim /etc/exports/usr/share *(ro,sync)
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)exportfs -rv
#发布共享
showmount -e2 配置节点服务器
#web-1
systemctl disable firewalld
setenforce 0yum install -y httpd
systemctl start httpd
yum install -y nfs-utils rpcbind
systemctl start rpcbindmount.nfs 192.168.122.88:/opt/test1 /var/www/html
[rootweb_server1 ~]# vim /etc/fstab
#末行写入设置自动挂载
192.168.122.88:/opt/test1 /var/www/html nfs defaults,netdev 0 0
#web2
mount.nfs 192.168.122.88:/opt/test2 /var/www/html
vim /etc/fstab
#末行写入设置自动挂载
192.168.122.88:/opt/test2 /var/www/html nfs defaults,netdev 0 03配置负载调度器
systemctl disable firewalld
setenforce 0配置SNAT转发规则
#开启路由转发
vim /etc/sysctl.conf
#末行写入
net.ipv4.ip_forward 1
sysctl -piptables -t nat -A POSTROUTING -s 192.168.122.0/24 -o ens36 -j SNAT --to-source 12.0.0.10加载LVS内核模块
for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs | grep -o ^[^.]*);do echo $1; /sbin/modinfo -F filename $1 /dev/null 21 /sbin/modprobe $1;done 安装ipvsadm管理工具
yum install -y ipvsadm
#启动服务前需保存负载分配策略
ipvsadm-save /etc/sysconfig/ipvsadm
systemctl start ipvsadm配置负载分配策略NAT模式只要在服务器上配置节点服务器不需要特殊配置
ipvsadm -C #清除原有策略#添加策略
ipvsadm -A -t 12.0.0.10:80 -s rr
ipvsadm -a -t 12.0.0.10:80 -r 192.168.82.100:80 -m -w 1
ipvsadm -a -t 12.0.0.10:80 -r 192.168.82.101:80 -m -w 1ipvsadm #启用策略ipvsadm -ln
#查看节点状态Masq代表NAT模式ipvsadm-save /etc/sysconfig/ipvsadm
#保存策略之后多次访问http://12.0.0.10/查看结果
四.LVS-DR模式详解
1.数据包流向分析
┌Client┐ ┌---[3]---┐ ┌────RS1────┐
│ │-----------------| VIP|CIP |--------------------┐ ┌┤lo:VIP │
│ │ └---------┘ └---││eth0:RIP1 │
│ │ ┌────LVS────┐ ┌-----[2]-----┐ │└───────────┘
│ │ ┌---[1]---┐ │ │ | CIP|VIP | ┌--│┌────RS2────┐
│ CIP│---| CIP|VIP |--│VIP DIP│---|DIPmac|RIPmac|--┘ └┤lo:VIP │
│ │ └---------┘ │ │ └-------------┘ │eth0:RIP2 │
└──────┘ └───────────┘ └───────────┘
1客户端发送请求到 Director Server负载均衡器请求的数据报文源 IP 是 CIP,目标 IP 是 VIP到达内核空间
2Director Server 和 Real Server 在同一个网络中数据通过二层数据链路层来传输
3内核空间判断数据包的目标IP是本机VIP此时IPVSIP虚拟服务器比对数据包请求的服务是否是集群服务是集群服务就重新封装数据包。修改源 MAC 地址为 Director Server 的 MAC地址修改目标 MAC 地址为 Real Server 的 MAC 地址源 IP 地址与目标 IP 地址没有改变然后将数据包发送给 Real Server
4到达 Real Server 的请求报文的 MAC 地址是自身的 MAC 地址就接收此报文。数据包重新封装报文(源 IP 地址为 VIP目标 IP 为 CIP)将响应报文通过 lo 接口传送给物理网卡然后向外发出
5Real Server 直接将响应报文传送到客户端
2.IP包头及数据帧头信息的变化
1.Client向目标VIP发出请求Director负载均衡器接收
2.Director根据负载均衡算法选择Real Sever_1不修改也不封装IP报文而是将数据帧的MAC地址改为Real Server_1的MAC地址然后在局域网上发送
3.Real Server_1收到这个数据帧解封装后发现目标IP与本机匹配Real Server事先绑定了VIP于是处理这个报文。随后重新封装报文将响应报文通过lo接口传送给物理网卡然后向外发出
4.Client将收到回复报文。Client认为得到正常的服务而不会知道是哪一台服务器处理的。 注意如果跨网段则报文通过路由器经由Internet返回给用户。
3.DR模式的特点
1Director Server和Real Server必须在同一个物理网络中
2Real Server可以使用私有地址也可以使用公网地址。如果使用公网地址可以通过互联网对RIP进行直接访问
3Director Server作为群集的访问入口但不作为网关使用
4所有的请求报文经由Real Server但回复响应报文不能经过Director Server
5Real Server的网关不允许指向Director Server IP即Real Server发送的数据包不允许经过Director Server
6Real Server上的lo接口配置VIP的IP地址。
4.LVS-DR中的ARP问题及解决方法
ARP问题1-相同IP
原因在LVS-DR负载均衡集群中负载均衡器与节点服务器都要配置相同的VIP地址。
在局域网中具有相同的IP地址势必会造成各服务器ARP通信的紊乱。解决思路及方法当ARP广播发送到LVS-DR集群时因为负载均衡器和节点服务器都是连接到相同的网络上它们都会接收到ARP广播。
只有前端的负载均衡器进行响应其他节点服务器不应该响应ARP广播。
对节点服务器进行处理使其不响应针对VIP的ARP请求。使用虚接口lo:0承载VIP地址
设置内核参数arp_ignore1系统只响应目的IP为本地IP的ARP请求。ARP问题2-响应报文的源IP
原因Real Server返回报文源IP是VIP经由路游记转发重新封装报文时需要先获取路由器的MAC地址。
发送ARP请求时Linux默认使用IP包的源IP地址即VIP作为ARP请求包中的源IP地址而不使用发送接口的IP接口如ens33接口。
路由器根据ARP表项会将新来的请求报文转发给Real Server导致Director的VIP失效。解决方法对节点服务器进行处理设置内核参数arp_announce2系统不使用IP包的源地址来设置ARP请求的源地址而选择发送接口的IP地址预防方法
修改/etc/sysctl.conf文件末行添加如下内容
net.ipv4.conf.lo.arp_ignore 1
net.ipv4.conf.lo.arp_announce 2
net.ipv4.conf.all.arp_ignore 1
net.ipv4.conf.all.arp_announce 2
#arp_ignore 1
#防止网关路由器发送ARP广播时调度器和节点服务器都进行相应导致ARP缓存表的紊乱不对非本地物理网卡IP的ARP请求进行响应因为VIP是承载在lo:0。
#arp_announce 2
#系统不使用响应数据包的源IP地址VIP来作为本机进行ARP请求报文的源IP地址而使用发送报文的物理网卡IP地址作为ARP请求报文的源IP地址这样可以防止网关路由器接收到源IP地址为VIP的ARP请求报文后又更新ARP缓存表导致外网再发送请求时数据包到不了调度器。5.LVS-DR模式部署实例
DR服务器192.168.122.10 Web服务器1:192.168.122.100 Web服务器2:192.168.122.101 VIP服务器192.168.122.188 nfs服务器192.168.122.88
1配置负载调度器
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0#安装ipvsadm
yum install -y ipvsadm配置虚拟IP地址
cd /etc/sysconfig/network-scriptscp ifcfg-ens33 ifcfg-ens33:0
#若是隧道模式复制为ifcfg-tun10vim ifcfg-ens33:0DEVICEens33:0
ONBOOTyes
IPADDR192.168.122.188
NETMASK255.255.255.255[rootdirector network-scripts]# ifconfig ens33:0调整proc响应系统 由于LVS负载调度器和各节点需要共用VIP地址需要关闭icmp的重定向不充当路由器。
vim /etc/sysctl.conf
#末行写入以下内容
net.ipv4.ip_forward 0
net.ipv4.conf.all.send_redirects 0
net.ipv4.conf.default.send_redirects 0
net.ipv4.conf.ens33.send_redirects 0sysctl -p配置负载分配策略
ipvsadm-save /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C#添加策略若隧道模式-g替换为-i
ipvsadm -A -t 192.168.2.188:80 -s rr
ipvsadm -a -t 192.168.2.188:80 -r 192.168.122.100:80 -g
ipvsadm -a -t 192.168.2.188:80 -r 192.168.122.101:80 -g#保存策略并查看
ipvsadm
ipvsadm -ln 2部署NFS共享存储
#关闭防火墙和selinux
systemctl stop firewalld
setenforce 0yum install -y nfs-utils rpcbind
mkdir /opt/test1 /opt/test2
chmod 777 /opt/test1 /opt/test2
echo This is test1 web /opt/test1/index.html
echo This is test2 web /opt/test2/index.html#编辑共享目录
vim /etc/exports/usr/share *(ro,sync)
/opt/test1 192.168.2.0/24(rw,sync)
/opt/test2 192.168.2.0/24(rw,sync)#启动服务
systemctl start rpcbind
systemctl start nfs
#查看目录
showmount -e3配置节点服务器
web1(192.168.2.100)配置虚拟IP地址VIP192.168.2.188 此地址仅用作发送Web响应数据包的源地址并不需要监听客户机的访问请求改由调度器监听并分发。
因此使用虚接口lo:0来承载VIP地址并为本机添加一条路由记录将访问VIP的数据限制在本地以避免通信紊乱
cd /etc/sysconfig/network-scripts
#配置lo:0
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0DEVICElo:0
ONBOOTyes
IPADDR192.168.122.188
NETMASK255.255.255.255
#注意子网掩码必须全为1ifup lo:0
ifconfig lo:0
route add -host 192.168.122.188 dev lo:0
#临时添加vim /etc/rc.local
#末行添加加入开机自启动
/sbin/route add -host 192.168.122.188 dev lo:0chmod x /etc/rc.d/rc.local 调整内核的ARP响应参数以组织更新VIP的MAC地址避免发生冲突
vim /etc/sysctl.conf net.ipv4.conf.lo.arp_ignore 1
#系统只响应目的IP为本地IP的ARP请求
net.ipv4.conf.lo.arp_announce 2
#系统不使用IP包的源地址来设置ARP请求的源地址而选择发送接口的IP地址
net.ipv4.conf.all.arp_ignore 1
net.ipv4.conf.all.arp_announce 2sysctl -p安装服务进行nfs挂载
#服务安装
yum install -y nfs-utils rpcbind httpd#启动服务
systemctl start rpcbind
systemctl start nfs
systemctl start httpd#将共享目录挂载到本机
mount.nfs 192.168.122.88:/opt/test1 /var/www/htmlweb2(192.168.2.101)web2和web1的配置相同除了最后的nfs挂载4浏览器访问测试
在客户端使用浏览器访问 [http://192.168.122.188](http://192.168.122.188/)