LVS负载均衡
- Linux Virtual Server
- 章文崇博士主导的开源负载均衡项目(原阿里架构)
- LVS(ipvs)已经集成到Linux内核
- 负载均衡调度器
- LVS基于四层,工作效率更高
网络拓扑图
这是Nginx的拓扑图
这是LVS拓扑图
主要是使用IPVS去实现
LVS三种模式
LVS-NAT
这是普通的模式,不适合并发特别大的情况
请求通过LVS服务器,导向不同的REAL Server去,响应结束还需要LVS服务器返回响应报文,是不高可用的一种方案
LVS-TUN
上行请求,通过LVS,但是响应各自返回给浏览器端
但是这样的方案是通过隧道去实现的,这样的每个节点都需要一个公网IP,也就是说你的真是服务器被暴露在公网
LVS-DR
通过这种DR模式,可以限制出口、入口,都走统一的路由出口,这样我们的服务器可以不用暴露在公网
配置虚拟IP
cd /etc/sysconfig/network-scripts/
ls
cp ifcfg-ens33 ifcfg-ens33:1
vim ifcfg-ens33:1
#配置虚拟ip
ipaddr=xxx
service network restart
重新启动网络服务
下来安装ipvsadm
yum install ipvsadm
ipvsadm -Ln
使用lo构建虚拟ip
还在当前目录下,拷贝
cp ifcfg-lo ifcfg-lo:1
vim ifcfg-lo:1
进去修改一下
虚拟网络IP已经构建好,再找一台备机同样操作,两台机器都使用150做虚拟IP
APR通告行为
如何配置apr通告行为
vim /etc/sysctl.conf
刷新生效
sysctl -p
添加报文路由,返回的报文都给150
route add -host 192.168.1.150 dev lo:1
route -n
这样是重启会失效的,需要配置到/etc/rc.local
开启DR模式
[root@iZkpcpzbqiupj6Z ~]# ipvsadm -h
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
Usage:
ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [--pe persistence_engine]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]
ipvsadm --set tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface] [--syncid sid]
ipvsadm --stop-daemon state
ipvsadm -h
Commands:
Either long or short options are allowed.
--add-service -A add virtual service with options
--edit-service -E edit virtual service with options
--delete-service -D delete virtual service
--clear -C clear the whole table
--restore -R restore rules from stdin
--save -S save rules to stdout
--add-server -a add real server with options
--edit-server -e edit real server with options
--delete-server -d delete real server
--list -L|-l list the table
--zero -Z zero counters in a service or all services
--set tcp tcpfin udp set connection timeout values
--start-daemon start connection sync daemon
--stop-daemon stop connection sync daemon
--help -h display this help message
先看看他的帮助文档
重点用-A -t
首先创建一个集群
ipvsadm -A -t 192.168.1.150:80 -s rr
添加集群节点
如上图中我们就可以看到已经创建好两个节点了
持久化机制
LVS持久化会默认保存请求300s,300秒超过后才会开启一个轮训,不然你一直访问都是同一台机子
有两个地方可以设置
一般不要改懂这两个值,官方默认的还是非常合理的一个配置
使用Keepalived+LVS高可用
可以使用keepalived配合LVS去实现LVS高可用方案
首先修改keepalived配置文件中VS配置,再添加响应的Nginx服务器
设置健康检查
以上就是主节点的创建
下来整个从节点
修改router id与权重还有状态为备机