虚拟服务器(LVS)
LVS(Linux Virtual Server)虚拟服务器是一个高度可扩展性和高可用性的服务器,建立在一个集群的服务器中。服务器集群的架构对用户是完全透明的,并且用户使用起来感觉它只有一个高性能虚拟服务器。
IP虚拟服务器
ipvs称之为IP虚拟服务器(IP Virtual Server,简写为IPVS)。是运行在LVS下的提供负载平衡功能的一种技术
IP虚拟服务可将两个或更多节点的集群构建可伸缩网络服务,集群中主节点将服务请求重定向到将实际执行服务的服务器主机集合
集群目前支持的协议为:TCP和UDP
三种数据包转发方法(NAT,隧道和直接路由)
八种负载均衡算法(roundrobin,加权循环,最小连接,加权最小连接,基于位置)
通过直接路由实现虚拟服务
客户端向目标vip发出请求,lvs接收 ,LVS根据负载均衡算法选择一台活跃的的节点,将此节点的ip所在网卡的mac地址作为目标mac地址发送到局域网,节点在局域网中收到这个帧,拆开后发现目标IP(VIP)与本地匹配,于是处理这个报文,随后重新封装报文,发送到局域网。此时IP包的目标ip是客户端,源ip是自己的vip地址。
server1:172.25.12.1
yum install -y ipvsadm
ipvsadm: 是LVS linux虚拟服务的一个控制命令,可以使用ipvsadmin来定义负载均衡分发策略,管理各个节点
ipvsadm常用的命令
-A :在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务器。
-E :编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D :删除内核虚拟服务器表中的一条虚拟服务器记录。
-C :清除内核虚拟服务器表中的所有记录。
-R :恢复虚拟服务器规则
-S :保存虚拟服务器规则,输出为-R选项可读的格式
-a :在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e :编辑一条虚拟服务器记录中的某条真实服务器记录
-d :删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l :显示内核虚拟服务器表
lvs的使用—DR模式
数据传输方式是客户请求client–>调度器virtaul server–>real server -->客户client,lvs必须和服务器在一个局域网内,通过修改MAC地址来访问 direct server
1、配置环境:
三台redhat7.6版本虚拟机(server1,server2,server3)
server1作为vs
server2和server3作为rs
关闭防火墙及selinux
1- 添加VIP
2- 安装lvs管理工具——ipvsadm服务
3- 设置arptables的访问策略
4- RS服务器搭建apache资源
5- CS客户测试端测试
(1)server1的配置
- 在server1主机的网卡上添加IP:172.25.12.100
ip addr add 172.25.12.100/24 dev eth0
添加虚拟ip:ipvsadm -A -t 172.25.12.100:80 -s rr
-t:添加虚拟IP和端口; -s:添加调度方法; rr表示轮询方式
添加服务端:
ipvsadm -a -t 172.25.12.100:80 -r 172.25.12.2:80 -g
ipvsadm -a -t 172.25.12.100:80 -r 172.25.12.3:80 -g
-r:添加真实服务器ip和端口;-g:使用DR模式,直接路由模式
ipvsadm -ln
:查看LVS规则表
vim /etc/sysconfig/ipvsadm-config
(2)server2的配置
- 安装httpd软件,server2的默认发布文件:
echo server2 >/var/www/html/index.html
- 添加ip:
ip addr add 172.25.12.100/32 dev eth0
- 安装arptables _jf
arptables处理arp协议有关的包,这些包在iptables中并不会处理·arptables可用于灵活的arp管理,如果善于运用的话,不失为一个优秀的arp防火墙.既能防止别的机器对自己进行arp欺骗,又能防止本机病毒或错误程序向其他机器发起arp攻击。
设置172.25.254.100/24作为vip,不可以和外部通信,所以设用arptables将其的访问全部DROP,出去的包全部转化为本机的ip
arptables -A INPUT -d 172.25.12.100 -j DROP
arptables -A OUTPUT -s 172.25.12.100 -j mangle --mangle-ip-s 172.25.12.2
arptables-save > /etc/sysconfig/arptables
:将策略写入配置文件
(3)server3和server2的配置相似
echo server3 >/var/www/html/index.html
ip addr add 172.25.12.100/32 dev eth0
arptables -A INPUT -d 172.25.0.100 -j DROP
###不对100这个ip的访问回应
arptables -A OUTPUT -s 172.25.12.100 -j mangle --mangle-ip-s 172.25.12.2
###真实地址是172.25.12.2,但是以100这个ip输出数据
arptables-save > /etc/sysconfig/arptables
:将策略写入配置文件
在测试主机上查看缓存:arp -an
访问172.25.12.100时,server2和server3轮流调度
过滤访问172.25.12.100的缓存信息,查看mac地址,因为这个方式的数据传输方式是客户请求client–>调度器virtaul server–>real server -->客户client,这样我们的真实服务端的信息有概率会暴露给外部
实现只对调度机(server2)的操作
arptables -F
:刷新server2的arptables策略
arp -d 172.25.12.100
:清除缓存