简介
LVS是Linux虚拟服务器,LVS由用户空间的ipvsadm和内核空间的IPVS组成。ipvsadm用来定义规则,IPVS利用ipvsadm定义的规则工作。LVS是一个高效的负载均衡器
LVS的特点
工作过程
LVS体系结构
LVS集群系统有三个部分组成
1、最前端的负载均衡层DS
2、中间的服务器群组层RS
3、最底层的数据共享存储层
调度算法
LVS的调度算法决定了如何在集群节点之间分步工作负荷
当DS收到客户端访问VIP上的集群服务的入栈请求时,DS就要决定哪个节点来处理请求
调度算法类型:
固定调度算法:rr、wrr、dh、sh
动态调度算法:wlc、lc、lblc、lblcr
调度算法一般产生的环境选择:
一般的网络服务,如http,mail,mysql等
rr:基本轮询调度
wlc:加权最小连接调度
wrc:加权轮询调度
基于局部性的最小连接lblc和带复制的给予局部性最小连接lblcr主要适用于web cache和DB cache
源地址散列调度SH和目标地址散列调度DH可以结合使用在防火墙集群中,可以保证整个系统的出入口唯一
1、LVS是集成到Linux的内核中的,可以直接查看到
命令:grep -i -C 10 ipvs /boot/config-3.10.0-1127.el7.x86_64
2、安装ipvsadm工具包,这个工具包是用来对LVS的工作模式调度算法已经连接RS的相关配置的配置工具,也就是说我们通过这个工具包来具体进行LVS服务器的个性化配置。
yum install ipvsadm
rpm -ql ipvsadm
首先要搭建四个服务器并改名,然后对RS服务器开启http服务:
以RS为例改名并开启服务:
改名命令:hostnamectl set-hostname RS1 然后退出重新连接
开启服务:
其中LVS服务器需要添加一个网卡:
Centos系统配置网卡ip:
网络的配置文件在/etc/sysconfig/network-scripts/目录下,这个目录下默认有ifcfg-ens33配置文件,如果没有IPADDR和GATEWAY就自行添加即可,BOOTPROTO默认是DHCP,这种情况下是随机ip,每次重启虚拟机ip都会变,而我们的实验和ip紧密相关,实际中ip也是固定不变的,所以一定要改成static。(注意:NAT模式的网卡需要修改,仅主机的网卡不需要,重启之后ip不会变,当然也可以修改,修改方式和这个一致,不过新建网卡之后并不会有多的配置文件自动生成,但是可以手动复制一个出来,将ens33复制一份,改成新网卡的名字即可。)
修改后重启network服务命令:service network restart即可
查看网络配置命令:route -n。
网络配置如下:(大家可以按照喜好来,不一定要这样)
配置完成可以查看LVS的当前网络可以看到有两个ip,分别对应两个网卡,模拟的是LVS的转发功能。命令:hostname -I
至此网络环境已经配置完成!!!下面开始LVS的配置
LVS配置:
1、配置LVS的ip_forward功能才可以实现转发
命令:vim /etc/sysctl.conf 然后添加一行:net.ipv4.ip_forward = 1
保存修改:sysctl -p
2、配置LVS转发规则,添加集群并添加RS服务器。
查看LVS状态命令:ipvsadm -Ln
目前是空的状态,没有集群
添加集群命令:ipvsadm -A -t 192.168.92.128:80 -s rr
说明:-A 添加集群 -t代表http协议 后面是IP:端口 rr是轮询转发算法
添加RS命令:
说明:-a 添加RS服务器 -t代表http协议 添加到的集群IP:端口 RS的IP:端口 -m是工作模式
-m:NAT工作模式 -g:DR工作模式 -i:TUN工作模式
再次查看LVS状态,此时的规则已经有了RS服务器
3、然后启动LVS服务
到此LVS配置完毕,接下来进行验证!
【验证LVS配置】
在Client模拟机上访问LVS服务器,查看转发规则,理论上是轮询,一次到RS1,一次到RS2
【注意】如果发现并不通,那一定是防火墙的问题,把RS1、RS2、LVS的防火墙都关掉即可。
到此,LVS的NAT工作模式搭建实验完成!
问题:此时我们的ipvsadm服务启动了嘛???
答案:
1、我们好像并没有去启动服务文件,查看当前服务状态
已经启动了,当前的服务执行的是我们添加进去的LVS规则,并没有执行真正的配置文件,所以意味着我们的配置规则并没有进行保存,重启之后就会消失。下面我们来将我们的规则写到服务启动时候会自动索引执行的文件中,并将服务配置为开机自启,这样我们的配置规则就会自动执行,开机即用。
找到索引文件:打开ipvsadm的service文件 命令:cat /usr/lib/systemd/system/ipvsadm.service
将当前规则保存到文件 命令:ipvsadm -Sn > /etc/sysconfig/ipvsadm
写入之后,我们把当前规则清除,直接启动ipvsadm.service服务,就会自动索引该文件中的规则,同样可以实现我们想要的配置。
清除命令:ipvsadm -C
重新执行ipvsadm.service服务 命令:ipvsadm -R < /etc/sysconfig/ipvsadm
再次从客户机访问可以看到,依旧可以实现转发。
当我们的规则保存到配置文件中之后,我们可以直接启动ipvsadm.service即可
systemctl start ipvsadm.service
服务设置为开机自启:
systemctl enable ipvsadm.service
【ipvsadm工具包的用法】