介绍
- VIP:是一个虚拟地址,是服务器公网IP地址,即客户端访问的地址,如:百度域名解析后的IP地址
- DIP:是转发的网络地址即LVS的真实IP
- RIP:真实服务器的IP地址
- CIP:客户端的IP地址
模拟流程图(大概)
需要准备3台机子(192.168.117.94,192.198.117.95,194.168.117.96)其作用分别是LVS服务器,以及两台真实服务器
配置LVS(类似于Nginx)
-
给94的ens33添加一个公网IP:
ip addr add 192.168.117.100/24 dev ens33 label ens33:2
-
94开启转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
-
安装虚拟服务管理器:
yum install ipvsadm -y
-
添加一条虚拟服务(采用轮询算法):
ipvsadm -A -t 192.168.117.100:80 -s rr
-
给虚拟服务添加两台真是服务器:
ipvsadm -a -t 192.168.117.100:80 -r 192.168.117.95 -g
pvsadm -a -t 192.168.117.100:80 -r 192.168.117.96 -g
-
查看转载记录:
ipvsadm -lnc
-
与Nginx的区别:ipvsadm虚拟服务类似于可以轮询的虚拟路由服务,对外暴露VIP,路由转发到其对于的真实服务器中,而Nginx是代理服务器,Nginx接受请求,并由Nginx服务器对真实服务请发送请求,获得响应后由Nginx将响应结果返回给客户端
-
简单说:虚拟服务是:我发你,你转他,他回我(我连你,你连他,他连我)
Nginx是:我发你,你发他,他发你,你发我(我你互联,你他互联,实现我他互联
配置真实服务器(RIP)
-
调整RIP的响应通告:以VIP发过来的请求,不能交由RIP响应(所有网卡都是这个规则)
- arp忽略级别调整:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
(原来是0级别,代表你通过RIP请求我,我可以用其他IP封装数据给你,1级别代表你要RIP请求我,我只能用RIP作为源IP响应你,防止VIP主动对外发送数据) - arp的通告级别:
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
(这个表明公布网卡MAC地址的级别,默认为0,代表只要你到了我这里,我把我机子上的所有IP对应的MAC地址都告诉你,1代表你到了我这里,我给你同一网络上IP对应的MAC地址给你,2代表你到了我这里,我只给你你要的IP对应的MAC地址,防止VIP向外报告)
- arp忽略级别调整:
-
配置隐藏的VIP:将VIP配置在环回接口lo中,因为所有的请求都会经过环形接口lo做IP匹配,如果匹配了则直接通过lo返回数据(注意VIP的掩码要是32,否则因为lo优先级高于ens33,VIP与ens33的RIP处于同一网络时,任何数据都不会到达RIP)
添加VIP:
ip addr add 192.168.117.100/32 dev lo label lo:2
删除VIP:
ip addr del 192.168.117.100 dev lo:2
-
构建httpd服务,测DR(转发真实IP)
yum install httpd -y
vi /var/www/html/index.html
service httpd start
-
第二台机器(96)做同样的操作,完成后,客户端使用浏览器访问192.168.117.100查看负载均衡效果,也可去94(LVS服务器)查看转发记录