如何实现LVS
实现NAT模型
大写A和小写a两条命令
先定义集群服务,是基于哪个协议来实现lvs调度,-A -E(修改) 服务器地址service-address **
-t代表tcp协议,后面跟端口号
定义把哪个服务发布到lvs上
-s scheduler调度算法,10种
-r是 real-server 告诉lvs哪些是后端服务器,如果有两个rS,就需要敲两条命令,加到集群服务里
lvs有4种工作模式,就需要通过这个来定义
-g是DR模型,默认的
-i对应 tun模式
-m nat模式
-w是权重,不写就是大家都是1
客户端和lvs在一个网段,就不需要加网关,直接就可以访问
30.6做客户端,
30.7做lvs服务器,并且修改ip地址
30.7上的公网地址修改
重启服务
生效了
本质上因为是DNAT,还需要启用ipforward
现在启用IPforward
接着把客户端搭建起来
修改地址生效
在后面两台服务器装http服务,而且这两台机器的网管必须指向30.200
修改地址安装http服务
修改主机名
在另外的27上也一样操作
重新启动服务
在lvs上应该可以看到两个web界面
、
现在就缺调度了,网关都没有加,说明到不了192的网段
现在定义IPvs规则
安装ipvs包
--r r(轮询,静态算法**
现在可以用Ln查看
现在需要把后端的rs加进来,用-a
-r rs -m nat类型,因为用的是r轮询,就和权重没有关系
把两个加进去就成为可以被集群服务调用的主机了
nat支持端口映射,所以后面可以把rs的端口地址改了,可以不用80
在后端的realserver上看到的是客户端cip发起的请求
ping是直接访问LVS,不会转发到内部的
发布的是tcp80,只有访问tcp80,才会转发,ping是走icmp协议
x现在就实现了NAT的模式
但是如果中间加上路由器是否可以
可以是可以,就变成下面的样子了
中间这个变成路由器
路由需要两块网卡
lvs也需要修改一下
修改lvs地址
不加网关也要加路由否则到达不了rs
默认网管就有了
路由器的网卡名字不对
把原来的1删除,2改成1
rs的网关不用修改,因为还是192.168.30.200
30.0的地址需要修改一下
修改第二个地址
因为目标地址是不变的,需要加上到达172网段的路由,
虽然配了路由,还是还需要给路由器启用ipforward。cen’t’os默认有这一选项
、
生效
过不去,抓包看看能不能看到数据包来源
rs1看看80端口的抓包数据
lvs可以访问后端服务器没有问题
rs能出去但是回不来
客户端再去访问
已经调度过去了,17的80端口
收到了请求
只看80端口
两台rs都抓一下
防火墙没有问题
网关加错了,应该是0.200
现在就可以了
rs服务器也能看清楚是谁访问的
nat模式是可以加路由的,只不过一般不加而已
rs的服务器端口不一定 非要80
、改成8080
就需要在调度器上把80端口改成8080
直接改改不了,只能删除
应该是成功了
所以端口映射也支持,现在加个权重看看,调度算法(在定义集群服务的时候定义的。-E修改的是集群服务的信息
-小写e是改的rs的信息
修改lvs服务器
增加权重
1 多一点,应该是3比1的比例
还有一种是源地址哈希,只要你的客户端ip是同一个地址来的,就访问的是同一个realserver
就要改成sh
就一直往rs1上调度了
目标地址哈希,只要访问的地址目标是固定的,永远往固定的机器上调度。目标地址URL路径
创建10个页面
在另一台RS也这么玩
把LVS改成目标地址哈希
目标地址一样就调度到固定的主机上,目标地址不一样,可能调度的主机会变
把之前的权重删除,变成1比1
因为没有配置文件所以报错,所以重启一下,把之前记录的缓存丢了
-A增加调度集群服务信息,-a增加rs的地址
没有加m,默认是dr模型,端口都是一样的,不支持端口映射
删除rs的 记录
添加8080记录
一旦调度到1上就永远是1,调度到2就永远是2
只要目标地址一样,无论是谁现在访问都是2
再创建多点的页面试试
一个都不是1
这边调度好了,无论谁链接都是2
-m表示的是用nat模式
也可以加个权重
这就是nat模式的LVS
客户端发起请求到服务器端,服务器可以看到是从哪个机器上发起的请求,而且数据报文和请求报文都要经过原路LVS服务器返回,这样LVS服务器压力就比较大,所以使用DR模型就可以解决这个问题