阿铭Linux_网站维护学习笔记201903022

监控客户机.md

为论坛做负载均衡集群-LVS介绍

几个专业术语:DIR(分发器)DIP(DIR的IP) RS(真实服务器) VIP(虚拟IP,也是提供服务的IP)
阿铭Linux_网站维护学习笔记201903022
阿铭Linux_网站维护学习笔记201903022
LVS三种模式(http://www.it165.net/admin/html/201401/2248.html)
NAT模式(Network address translation)

用iptables的NAT表实现网络地址转换,数据包目标IP为DIP,DIR将目标IP地址转换为RS的IP,
这样请求的包就到了RS上,而RS返回的数据包本来是到DIP的,也会经过DIR转换,
把目标IP转换为客户端的IP

DR模式(direct routing)

DIR会改请求报文中的MAC地址,本来请求的包中的MAC地址为DIR的MAC地址,但是却被修改成了
RS的MAC地址,这样数据包就到了RS上。由于数据包的源IP为客户端IP,所以它在返回数据包的时候,
可以直接发给客户端,而不再经过DIR。
阿铭Linux_网站维护学习笔记201903022
Tunnel模式(ip tunneling)

客户端请求的数据包发给DIR,DIR会近一步把包封装,加上了一个新的目标IP(RS的IP),这样
数据包到了RS后再将封装的包拆开,获得原始数据包。返回数据包的时候,也是直接发给了客户端。

LVS八种调度算法
轮叫(round Robin)

调度器通过"轮叫"调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,
它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。

加权轮叫(Weighted Round Robin)

调度器通过"加权轮叫"调度算法根据真实服务器的不同处理能力来调度访问请求。
这样可以保证处理能力强的服务器处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,
并动态地调整其权值。

最少链接(Least Connections)

调度器通过"最少连接"调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。
如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。

加权最少链接(Weighted Least Connections)

在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,
具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,
并动态地调整其权值。

基于局部性的最少链接(Locality-Based Least Connections)

“基于局部性的最少链接” 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。
该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器 是可用的且没有超载,
将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,
则用"最少链接"的原则选出一个可用的服务 器,将请求发送到该服务器。

带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)

"带复制的基于局部性最少链接"调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。
它与LBLC算法的不同之处是它要维护从一个 目标IP地址到一组服务器的映射,
而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址
对应的服务 器组,按"最小连接"原则从服务器组中选出一台服务器,若服务器没有超载,
将请求发送到该服务器,若服务器超载;则按"最小连接"原则从这个集群中选出一 台服务器,
将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,
将最忙的服务器从服务器组中删除,以降低复制的 程度。

目标地址散列(Destination Hashing)

"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表
找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

源地址散列(Source Hashing)

"源地址散列"调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,
若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。

为论坛做负载均衡集群-DR模式搭建

准备

三台机器:
aming01(128) -> RS1
aming03(130) -> RS2
aming02(129) -> DIR

VIP: 100

在DIR上操作:
安装ipvsadm:

yum install -y ipvsadm

编辑脚本

vim /usr/local/sbin/lvs_dr.sh //内容如下

#! /bin/bash
ipv=/usr/sbin/ipvsadm
vip=192.168.222.100
rs1=192.168.222.128
rs2=192.168.222.130
#注意这里的网卡名字
#之所以要先重启ens33网卡,是为了防止脚本重复执行时和之前的配置冲突
ifdown ens33
ifup ens33
#增加ens33:1虚拟网卡,并把vip配置在ens33:1上
ifconfig ens33:1 $vip broadcast $vip netmask 255.255.255.255 up
#增加路由
route add -host $vip dev ens33:1
#-C表示清空之前的规则
$ipv -C
#-A表示增加规则,-t指定vip以及port,-s指定调度算法,这里还有一个-p选项,后面跟时间(单位s),表示保持长连接
$ipv -A -t $vip:80 -s wrr
#-a表示增加rs,-r指定具体的rsip和port,-g表示使用dr模式(-i表示ip tunnel模式,-m表示NAT模式),-w指定权重
$ipv -a -t $vip:80 -r $rs1:80 -g -w 1
$ipv -a -t $vip:80 -r $rs2:80 -g -w 1
# 脚本内容到此结束

执行脚本

sh /usr/local/sbin/lvs_dr.sh

检查:ip add
在两台RS上编辑脚本

vim /usr/local/sbin/lvs_rs.sh //内容如下:

#!/bin/bash
vip=192.168.222.100
ifdown lo
ifup lo
ifconfig lo:0 $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip lo:0
#更改arp内核参数,目的是为了让rs顺利发送mac地址给客户端
#参考文档https://www.imooc.com/article/79661
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

执行脚本

sh /usr/local/sbin/lvs_rs.sh
执行完脚本,查看ip地址
阿铭Linux_网站维护学习笔记201903022阿铭Linux_网站维护学习笔记201903022
测试

windows hosts 浏览器

linux curl vip

;