LVS(Linux Virtual Server)的三种工作模式
- LVS(Linux virtual server)
linux 虚拟主机
-
LVS的NAT(Network Address Translation)模式,网络地址装换
内网方式,所有的请求响应都通过LVS门户主机
请求响应的过程:客户机发送请求到LVS主机—>LVS主机修改请求里面的目标IP改为真实的内网主机,并且把发客户端IP改成自己—>真实的内网主机收到请求以后响应LVS主—>LVS主机把响应的地址改成客户端IP,把发起响应的IP改成LVS的IP,然后响应给客户端
NAT有两种模式,区别在于转发的请求的时候是只改客户端地址还是客户端地址和目标地址一起改。两个都改的叫做FULL—NAT
缺点 :门户主机压力大,处理了请求和响应,并且在请求响应的过程中,LVS主机的连接一直被占用着,LVS的连接数,数据流都很大。
优点:真实服务器位于可以为于内网之中,不对外暴露。
-
LVS的TUN模式
LVS 和真实主机有不同的真实IP,LVS接收到请求以后转发给真实服务器,然后真实服务器直接返回,需要真实服务器对有对外的IP,也就是外网可见。转发也是通过IP转发的。DR是通过MAC地址转发的。
优点:门户主机压力小,
缺点:需要内存节点对外暴露
-
LVS的DR(direct route)模式,直接路由模式
LVS主机和真实提供服务的服务器使用同一个IP,但是只有LVS会接收客户端请求,并且通过ARP协议和MAC地址把请求分发给真实的服务器,这个过程没有修改请求包里面的发起方IP和目标IP,真实真实服务器IP也和VIP一样,所以真实服务器就可以直接返回
在这个过程中RS需要保持ARP静默,不向路由器注册自己IP和MAC对应的关系,只能有对外提供服务的LVS-DR 注解向路由器注册 IP mac 关系。优点:LVS的响应压力,和等待响应占用的连接时间,并且真实主机也不对暴露。
-
4层负载均衡和7层负载均衡是什么区别是什么?
指的是做负载均衡的网络层级物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
-
IPVS,IPVSADM
IPVSADM:一个命令行工具
IPVS:工作也内核上的程序
- 专业术语
VS: virtual Server 虚拟服务
DR:direct route 直接路由
RS:real server 真实处理请求的服务器
SIP:源ip,来源IP
DIP:目的地IP,接收请求的地址IP
CIP:Client IP 客户端IP
VIP:virual IP 虚拟IP
RIP:real IP 真实ID
MAC:Media Access Control 媒体访问地址,也就是物理地址 - 关于VMware 几种网络配置的区别
NAT:网络地址转换,虚拟机和物理机构建一个子网络,虚拟机可以上网,物理机可以连接虚拟机,但是物理机所在网络的其他设备不能直接连接子网络中的虚拟(通过网络地址下探也是可以的)。如果虚拟机不需要被网络访问,但是虚拟机需要上外网,一般用这种模式。
NAT还有一个优点,我们可以通过固定内网网段,移动虚拟机以后,物理机访问虚拟机的IP不会变化,host-only也有类似的效果。
桥接模式:虚拟机和物理机地位等同,虚拟机会想路由器申请IP,虚拟机和物理机所有网络可以任意通讯。一般我们需要虚拟机能被除物理机以外的外部网络访问就用这中模式。
host-only:虚拟机位于子网络,不能和物理机所有网络通讯,只有物理机可以联通虚拟机,和NAT的区别是少了网络地址装换,也就失去了和物理机所在网络通讯的能力。如果我们需要虚拟机只能被物理机访问,并且不需要上网,就用这种模式。
-
LVS 是linux内核集成的,我们使用只需要安装管理软件就能使用LVS的功能。
下面是ipvsadm的安装和命令参数
-
ipvs默认使用DR模式
-
ipvsadm 搭建 DR模式的虚拟服务
三台机子IP分别是 192.168.100.150(DR),192.168.100.151(RS1),192.168.100.152(RS2)
使用VIP是192.168.100.140(对外提供服务的虚拟IP)-
在DR上安装ipvsadm
yum -y install ipvsadm -
给DR设置VIP
ip addr add dev ens33 192.168.100.140/32
添加以后通过 ip a可以看到inet里面多了对应的VIP
-
在DR上创建ipvsadm的规则配置文件,并且启动ipvsadm
创建配置文件: ipvsadm --save > /etc/sysconfig/ipvsadm启动ipvsadm: systemctl start ipvsadm
-
在DR上添加虚拟服务器
ipvsadm -A -t 192.168.100.140 -s rr -p
备注:实测ipvsadm -A -t 192.168.100.140:80 -s rr这种加了端口的方式才能自动负载均衡,不加端口只能在后面加上 -p,持久以后好像不会切换 -
在DR上添加真实主机
ipvsadm -a -t 192.168.100.140 -r 192.168.100.151 -g
ipvsadm -a -t 192.168.100.140 -r 192.168.100.152 -g
实测:代端口的方式才会负载均衡 ipvsadm -a -t 192.168.100.140:80 -r 192.168.100.151 -g -
在DR上通过ipvsadm查看配置详情
-
在两台RS上安装并且启动nginx(用于测试,tomcat也行)
添加yum源:rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
添加并且启动nginx:yum -y install nginx && systemctl start nginx
在nginx服务器上添加测试页面:
在RS1上执行:echo "test1" > /usr/share/nginx/html/index.html
在RS2上执行:echo "test2" > /usr/share/nginx/html/index.html -
在两台RS上绑定VIP(绑定单lo网卡上,而不是真实网卡)
ip addr add dev lo 192.168.100.140/32 -
然RS保持静默
不向网关注册自己的MAC地址: echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
ip转发:echo 1 > /proc/sys/net/ipv4/ip_forward
匹配精确IP地址回包: echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce -
然后通过192.168.100.150的机子访问 VIP的服务就会被负载均衡到RS1和RS2了
-
在这三台机子以外的地方访问: curl http://192.168.100.140
-
在DR那台机子上不能 curl [http://192.168.100.140 是不能访问通的
-
posted on 2022-11-23 16:29 zhangyukun 阅读(226) 评论(0) 编辑 收藏 举报