前面我们学会了nginx环境搭建,keeplived+nginx环境搭建,lvs+nginx环境搭建,这里进行终极搭建lvs+keepalived+nginx
背景
开始我们网站小,可能一个tomcat服务器就可以了
后面随着访问数上升,一个tomcat不行了,那么就用Nginx做个负载均衡
后面随着用户访问上升,一个Nginx也不行了,有单点故障
后面随着用户访问上升,需要对Nginx进行横向扩容,加入第四层的负载均衡解决方案LVS
用户继续上升,LVS又会达到瓶颈,需要用DNS轮询.这里可以根据机房,地域轮询等,已经是做到极致了。所以终极环境就是lvs+keepalived+nginx。lvs最终是多个主备。
准备
各种虚拟机准备克隆等
nginx-1.22.1在linux服务器上的安装和使用
keepalived+nginx实现高可用实战(双机主备,双主热备)
LVS+Nginx环境搭建(DR模式)
上面几篇文摘来自于我的个人博客:https://www.suibibk.com
只需要对keepalived的配置文件进行修改即可,毕竟keepalived和lvs完美兼容
主lvs
! Configuration File for keepalived
global_defs {
router_id LVS_15
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 17
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.192.17
}
}
#配置集群地址访问的IP+端口,端口和nginx保持一致,这个就是对应的LVS(DR)
virtual_server 192.168.192.17 80 {
#健康检查的时间,单位:秒
delay_loop 6
#配置负载均衡的算法:rr(轮询)
lb_algo rr
#设置lvs的模式:NAT/TUN/DR 我们用的是DR
lb_kind DR
#设置会话持久化时间
persistence_timeout 5
#协议,其实就是-t
protocol TCP
#负载均衡的真实服务器 这个就是对应两台Ngixn(RS)
real_server 192.168.192.11 80 {
#轮询默认权重为1
weight 1
#设置健康检查
TCP_CHECK {
#检查的80端口
connect_port 80
#超时时间:秒
connect_timeout 2
#重试次数
nb_get_retry 2
#间隔时间:秒
delay_before_retry 3
}
}
real_server 192.168.192.12 80 {
weight 1
#设置健康检查
TCP_CHECK {
#检查的80端口
connect_port 80
#超时时间:秒
connect_timeout 2
#重试次数
nb_get_retry 2
#间隔时间:秒
delay_before_retry 3
}
}
}
备lvs
! Configuration File for keepalived
global_defs {
router_id LVS_16
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 17
priority 80
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.192.17
}
}
#配置集群地址访问的IP+端口,端口和nginx保持一致,这个就是对应的LVS(DR)
virtual_server 192.168.192.17 80 {
#健康检查的时间,单位:秒
delay_loop 6
#配置负载均衡的算法:rr(轮询)
lb_algo rr
#设置lvs的模式:NAT/TUN/DR 我们用的是DR
lb_kind DR
#设置会话持久化时间
persistence_timeout 5
#协议,其实就是-t
protocol TCP
#负载均衡的真实服务器 这个就是对应两台Ngixn(RS)
real_server 192.168.192.11 80 {
#轮询默认权重为1
weight 1
#设置健康检查
TCP_CHECK {
#检查的80端口
connect_port 80
#超时时间:秒
connect_timeout 2
#重试次数
nb_get_retry 2
#间隔时间:秒
delay_before_retry 3
}
}
real_server 192.168.192.12 80 {
weight 1
#设置健康检查
TCP_CHECK {
#检查的80端口
connect_port 80
#超时时间:秒
connect_timeout 2
#重试次数
nb_get_retry 2
#间隔时间:秒
delay_before_retry 3
}
}
}
重启测试
先把之前lvs+nginx的配置清除
ipvsadm -C
启动keepalived
systemctl start keepalived
查看效果
[root@localhost etc]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.192.17:80 rr persistent 5
-> 192.168.192.11:80 Route 1 0 0
-> 192.168.192.12:80 Route 1 0 0
完美。