NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多只能10-20台节点
缺点:延迟
隧道方式(VS/TUN模式)
调度器接受客户端请求报文转发给真实服务器(IP隧道方式),真实服务器直接将响应返回给客户端,这样调度器只用处理请求报文,减少了调度器的工作量。
直接路由方式(VS/DR模式)
跟隧道方式类似,不同点在于调度器将数据发送给RS是通过MAC地址转发的
调度方式:
按依次循环的方式将请求调度到不同的服务器上
平均分配给每个服务器
加权轮叫调度:WRR
为每台服务器添加权值,权值越高处理的数据越多
最小连接调度:LC
将最新的请求分配到连接数最小的服务器,是一种动态调度算法
加权最小链接调度:WLC
根据每台服务器的性能设置权值,经可能使服务器的已建立连接数和其权值成比例。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
基于局部的最少连接:LBLC
先找出这个请求的ip地址最近使用的服务器,如果这个服务器可用且没有有超载,则将请求发送给该服务器,如果服务器不存在或者超载则按照“最少连接(LC)”的原则将请求发送到一个可用服务器
带复制的基于局部性的最少连接:LBLC
它与LBLC算法不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。按'最小连接'原则从该服务器组中选出一一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按'最小连接'原则从整个集群中选出一台服务器,将该服务器加入到这个服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
目标地址散列调度(HD)
算法先根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且并未超载,将请求发送到该服务器,否则返回空。
源地址散列调度(SH)
与目标地址散列调度(HD)基本相似
最短的期望的延迟(SED)
每台服务器有权重值,通过运算后将请求发送给运算结果最小的服务器
最少队列调度(NQ)
算法,无需队列。如果有realserver的连接数等于0就直接分配过去,不需要在进行SED运算。
原文地址:https://www.cnblogs.com/f-ck-need-u/p/8451982.html
keepalived是一个类似于layer3, 4 & 7交换机制的软件。这里用来检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
检测:
工作在IP 、TCP、应用层(网络层,传输层,应用层)
VRRP(热备份):
有两台及以上调度器时,keeplived可以设置优先级,通过同一个虚拟ip访问,如果调度器down掉了,keepalived就会使用备用的调度器。
如图所示,如果master服务器down掉了,就会使用备用服务器slava
实验:
这里有三台机器
172.16.13.110
172.16.13.111
172.16.13.112
以下步骤2-7部是在director上(172.16.13.110)上
keepalived
通过
systemctl stop firewalld
setenforce 0
查看,此时已经是关闭状态
测试最好将所有主机的防火墙和selinux机制关掉
测试好之后再开启防火墙,开放相应服务和端口
/etc/keepalived/keepalived.conf
如下:
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.16.13.119
}
}
virtual_server 172.16.13.119 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 172.16.13.111 80 {
weight 1
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
注意:新安装的keepalived中可能有这几句话,需要删掉
否则外面访问不了
ip冲突也会出问题
问题:
重启keepalivd会关闭网卡,也就是IP地址没有了
先重启keepalived重启网卡ip会变成虚拟IP,但是无法通过虚拟ip172.16.13.119访问
先重启网卡再重启keepalivd里面可以通过虚拟ip访问外面不行
参考:
这里需要注意:
是127.0.0.1
网卡是自己电脑网卡的名字这里的虚拟机是ens33
这里指定虚拟ip
这里设置虚拟ip下的服务器的ip
修改文件/etc/sysctl.conf
检测:
重启network服务
启动ens33网卡
启动keepalived服务
原是开启或关闭某种服务,关闭是chkconfig keepalived off
在centos7下会执行开机自启命令,或者使用systemctl enable keepalived
开启服务:
systemctl start keepalived
启动ipvsadm
第一次启动如果报错执行一下命令:
ipvsadm --save > /etc/sysconfig/ipvsadm
ps afx|grep keepalived
查看进程keepalived是否运行
ip a
查看vip(虚拟地址)172.16.13.119有没有再master上
注:如果执行ip a 后ens33的inet没有自己之前再keepalivad里面的虚拟IP地址就重启一下network服务,再重启网卡,之后再执行ip a 就会出现了
ipvsadm –ln
此命令用于查看有哪些real server上的web服务处于开启状态
8- 步骤在real server上(172.16.13.111)
yum –y install nginx
安装后开启服务并访问主页检查是否成功
注意安装好nginx访问主页,可能访问到的不是nginx的主页而是centos的主页
如下图:
#!/bin/bash
VIP=172.16.13.119
case $1 in
start)
echo "Start LVS of DS"
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
route add -host $VIP dev lo:0
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
sysctl -p > /dev/null 2>&1
;;
stop)
echo "Stop LVS of DR"
ifconfig lo:0 down
route del $VIP>/dev/null 2>&1
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage:$0 {start|stop}"
;;
esac
修改权限
此文件功能是将VIP(虚拟地址)注册到本机lo.0网卡上
service appserver start
相当于启动脚本,可以理解为启动服务
也可以设置开机启动
11、查看
已经生成了虚拟网卡
12、测试:
注:如果后面做完测试,一定要注意服务启动顺序,否则可能导致测试失败,如果执行ip a后ens33没有,重启网卡——重启ipvsadm——重启keepalived
启动服务需要先启动network服务,再启动keepalived服务
以此方法,再建一个director和real server
配置两个director即使master挂掉了也可以通过salve访问
(master和salve看下图)