Linux-Lvs的DR模式实现后端真实服务器的负载均衡
DR模式也就是用直接路由技术实现虚拟服务器。它的连接调度和管理与NAT模式一样,但它的报文转发方法不同,DR模式通过改写请求报文的 MAC地址,将请求发送到Real Server,而Real Server将响应直接返回给 客户。这种方式是负载调度机制中性能最高最好的
文章正在审核中... -
keepalived+lvs实现实现负载均衡及高可用功能
如果单台LVS发生突发情况,例如宕机、发生不可恢复现象,会导致用户无 法访问后端所有的应用程序。避免这种问题可以准备一台台备用的LVS,主 LVS 宕机,LVS VIP自动切换到从,继续提供服务。可以基于 LVS+Keepalived实现负载均衡及高可用功能,满足网站7x24小时稳定高效 的运行。
下面我们直接操作:(实验是基于关闭selinux和firewalld的)
安装:
yum install ipvsadm -y
配置要点:
调度器的VIP,DIP和后端真实服务器IP必须配置在同一网段,都使用仅 主机模式;
客户端的IP与路由器外网IP保持一个网段,且客户端的网关设置为路由 器的外网地址;
后端真实服务器网关设置为路由器的内网地址;
路由器开启数据包的转发;
后端真实服务器要抑制VIP的arp广播;
RS服务器和LVS服务器的VIP以子接口方式配置;
记住配置网卡后,都需要重启网卡哦(systemctl restart network)
环境:
nginx:(vip绑定在回环的网卡上)
RIP:192.168.1.103 VIP:192.168.1.200/32
RIP:192.168.1.104 VIP:192.168.1.200/32
lvs:(VIP以子接口方式配置)
DIP:192.168.1.102 VIP:192.168.1.200
RS:
#服务器要抑制VIP的arp广播:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#RIP默认网关指向192.168.1.105——VIp加到回环地址里面的
LVS:
#VIP和DIP的默认网关都指向192.168.1.105
#配置LVS:
ipvsadm -A -t 192.168.1.200:80 # 工作模式如果不指定,默认是DR模式,如需指定使用-g
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.103
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.104
#添加IP_VS模块——lvs的IP负载均衡技术是通过IP_VS模块来实现的
modprobe ip_vs
路由器:
#一个ip仅主机,一个ip桥接。
#开启数据转发:
临时:
echo 1 >/proc/sys/net/ipv4/ip_forward
永久:
vim /etc/sysctl.conf——追加
net.ipv4.ip_forward = 1
system -p——查看
客户机测试:——成功
keepalived+lvs实现实现负载均衡及高可用功能
这里我们就在Linux-Lvs的DR模式实现后端真实服务器的负载均衡继续做实验
我们先清空LVS集群服务
ipvsadm -C
master端:
安装keepaalived:
yum install keepalived -y
修改配置文件:
! Configuration File for keepalived
global_defs {
router_id node1
}
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 {
192.168.1.200/24 #指定群集vip地址
}
}
virtual_server 192.168.1.200 80 {
delay_loop 6
lb_algo rr #指定调度算法,轮询(rr)
lb_kind DR #指定群集工作模式,直接路由(DR)
persistence_timeout 0 #回话保持时间
protocol TCP #应用服务采用的是 TCP协议
sorry_server 192.168.1.200 80 #当配置在lvs上的rs都无法访问到时,就需要有一台备用的服务器来提供报错页面
real_server 192.168.1.103 80 {
weight 1 #节点的权重
HTTP_GET {
url {
path /
status_code 200 #通过返回的状态码判断服务是否存活
# digest ff20ad2481f97b1754ef3e12ecd3a9cc #通过配置文件的哈希值判断 获取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html
}
connect_timeout 3 #检测时长
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.1.104 80 { #添加第二个 Web节点的地址、端口
weight 1
HTTP_GET {
url {
path /
status_code 200
# digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
启动keepalived
systemctl start keepalived——看到集群由keepalived启动
backup端:
和lvs配置一样在backup服务器上也同样配置一遍。
安装keepalived
修改配置文件:
! Configuration File for keepalived
global_defs {
router_id node1
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.200/24 #指定群集vip地址
}
}
virtual_server 192.168.1.200 80 {
delay_loop 6
lb_algo rr #指定调度算法,轮询(rr)
lb_kind DR #指定群集工作模式,直接路由(DR)
persistence_timeout 0 #回话保持时间
protocol TCP #应用服务采用的是 TCP协议
sorry_server 192.168.1.200 80 #当配置在lvs上的rs都无法访问到时,就需要有一台备用的服务器来提供报错页面
real_server 192.168.1.103 80 {
weight 1 #节点的权重
HTTP_GET {
url {
path /
status_code 200 #通过返回的状态码判断服务是否存活
# digest ff20ad2481f97b1754ef3e12ecd3a9cc #通过配置文件的哈希值判断 获取哈希的方法:genhash -s 192.168.1.104 -p 80 -u /index.html
}
connect_timeout 3 #检测时长
nb_get_retry 3 #添加重试次数
delay_before_retry 3 #添加重试间隔
}
}
real_server 192.168.1.104 80 { #添加第二个 Web节点的地址、端口
weight 1
HTTP_GET {
url {
path /
status_code 200
# digest ff20ad2481f97b1754ef3e12ecd3a9cc
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
启动keepalived
systemctl start keepalived
测试:
master端关闭keepalived
systemctl stop keepalived
可以看到vip地址发生了飘移。(几乎一秒不到)
客户端测试:(任然可以正常访问,几乎不受任何影响)