LVS(linux vritual service,虚拟服务器)也叫做调度器。它可以做至少三种的集群方式:负载均衡集群LB(load balance cluster),高可用集群HA(high Availability cluster),高性能运算集群HPC(high Performance Computer Cluster)。
LVS负载均衡分为三层:调度器、服务器池、nfs存储设备。在调度器上有两个网卡,一个是外网的网卡,一个是内网的网卡。外网卡一般叫做vip(virtual IP虚拟IP)跟外网连接的。内网卡叫dip(destination IP)服务器池的网卡叫rip(real ip真实IP) 。
LVS一共有三种实现方式:NAT转换(Network Address translation)、IP隧道(IP Tunnel)、直接路由(direct Routing),在这里面。NAT转换的方式更加安全。不足是并发量不大。还容易卡,易损坏机器。因为用户访问是通过调度器的外网进行访问,然后由内网卡进行算法指定转发。最后得到的结果再由调度器进行回应。
算法:
算法一共由四种:在这里我们就介绍四种;其他的具体请上百度查看。
rr 轮询算法 就是服务器池里面的服务器,每一个都轮一次。
wrr 加权算法: 这个是按照不平等的硬件设备来算的。每台设备性能不一样,算法就不一样,比如:性能好的可以让他处理两次。性能差的可以处理一次,这样也不会卡。
Lc 最小连接数:根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点。
Wlc 加权最小连接数:在服务器节点性能差异较大的情况下。可以以真实服务器自动调整权重。
NAT负载均衡集群搭建
- 准备好最少三台服务器,一台作为调度器,两台作为web服务器,组成一个地址池。
- 调度器双网卡:(dip vmnet 4)192.168.253.6 (vip vmnet 8)152.52.25.1
- Web服务器两台,在内网(rip vmnet 4) 一台192.168.253.7 网关:192.168.253.6
在内网(rip vmne4) 一台 192.168.253.8 网关:192.168.253.6
网卡配置,给第二块网卡添加IP地址,先ip addr查看第二块网卡的名称,然后再将ens33复制一份为第二块网卡的配置文件。记得要改网卡名称,删除uuid号。
调度器:
modprobe ip_vs
注:加载ipvs模块
cat /proc/net/ip_vs
注:查看ip_vs版本信息
Yum -y install ipvsadm
注:安装ipvsadm
ipvsadm –A –t 152.52.25.1:80 –s rr
注:-A添加虚拟服务器 –t 指定vip地址以及端口 –s 指定算法
ipvsadm –a –t 152.52.25.1:80 –r 192.158.253.7:80 –m –w 1
ipvsadm –a –t 152.52.25.1:80 –r 192.168.253.8:80 –m –w 1
注:-a指定真实服务器 –r指定rip地址及端口 –m指定算法为轮询(如果这里是 –g指定DR模式和-i TUN模式),-w 用来设置权重的,1表示每个web服务器轮一次。
关闭防火墙、selinux:
Systemctl stop firewalld
Iptables –F
Set enforce 0
开启nat路由转发功能:
Sed –i ‘$anet.ipv4.ip_forward = 1’ /etc/sysctl.conf
注:如果这个文件里由这个,建议进去自己修改
Ipvsadm-save 保存。也可以保存在一个文件里。
Ipvsadm-save > /etc/sysconfig/ipvsadm
可以使用命令查看:ipvsadm –ln 后面加一个c可以查看访问的情况。
NFS共享文件系统:
NFS是一种基于TCP/IP传输的网络文件系统,通过使用NFS协议,客户机可以像访问本地目录一样访问远程服务器中的共享资源,对于大多数负载均衡服务器来书,使用NFS协议来共享数据存储是比较常见的做法。
使用NFS发布共享资源:
NFS服务的实现依赖于RPC(Remote Process Call,远程过程调用)机制,以完成远程到本地的映射过程,在centos 7系统中,需要安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于rpc支持。Rpcbind可以在client上用,它就是为client准备的。nfs只能在服务器上用,但是也需要在client端安装软件包。
注:只能先启动rpcbind,再启动nfs。
NFS的安全性非常弱,所有它不能在公网中使用。
1.安装rpcbind、nfs-utils。然后设置开机自启。
Yum –y install nfs-utils rpcbind
Systemctl enable rpcbind
Systemctl enable nfs
2.创建一个用于共享文件的目录
mkdir –p /opt/wwwroot
- 在/etc/exports里面更改内容。exports是nfs的配置文件,文件默认为空;设置共享资源时所设置的文件格式为“共享目录位置 客户机ip地址(权限选项)”
注:客户机的IP地址也可以是单个,也可以是一个网段(如192.168.253.0/24),也可以是单独的两个地址(如“192.168.253.1(权限选项)192.168.253.2(权限选项)”)
内容:/opt/wwwroot 192.168.253.0/24(rw,sync,no_root_squash)
权限内容:rw 可读可写、sync表示同步写入、no_root_squash 表示当客户机以root身份访问时,赋予本地root的权限。这里默认时root_squash,将作为nfsnobody用户降权对待。
- 启动NFS服务程序:
Systemctl start rpcbind
Systemctl start nfs
Netstat –anpt |grep rpcbind
- 查看本机发布的nfs共享目录:
Showmount –e
内容为:Export list for localhost.localdomain:
/opt/wwwroot 192.168.253.0/24
- 在客户机上也安装NFS作为访问使用;在客户机上只需要启动rpcbind服务就可以了,指定完以后,用“showmount –e服务器地址” 查看服务器都共享了哪些目录。最后用mount 192.168.253.9:/opt/wwwroot /var/www/html (上面的地址是服务器地址)。
Yum –y install rpcbind nfs-utils
Systemctl enable rpcbind
Systemctl start rpcbind
两台web服务器上配置
Web1地址为:192.158.253.7 网关为192.168.253.6
Web2地址为:192.168.253.8 网关为192.168.253.6
用yum安装httpd服务,然后在首页写一点内容用于测试。
记得关防火墙、selinux
测试机:
模拟外网:152.52.25.2
不需要网关,然后用网页进行访问。输入的地址是vip的地址。访问的内容是两台web服务器的内容,而且是来回轮着显示内容。它这个默认的网页保持时间为60秒,在60秒之内,切换的都还是这个地址。
NFS共享存储服务
NFS共享存储服务就像是一个容器一样。里面用来存储东西。然后服务器在通过挂载这个容器,实现服务内容的一致性。比如:我们在里面存放了html的文件。这个文件是需要给别人访问的,所以我们可以给web服务器挂载,然后通过访问web服务器就能看到它的内容。
基于NET负载均衡集群搭载NFS共享存储服务。使所有的web服务器的内容都保存一致
开一台centos作为NFS共享存储服务。
我们实现NFS共享存储服务,需要依赖RPC(Remote Procaess Call,远端过程调用)机制,已完成远程到本地的映射过程。在centos里面,我们需要安装两个插件,nsf-utils、rpcbind;
前面的用于NFS共享发布和访问 ,后者用于RPC支持。
注意:NFS只能用在内网,因为它没有一个安全的机制,放在外网轻而易举就被别人给破了。
Yum –y install nfs-utils rpcbind
Systemctl enable nfs-utils
Systemctl enable rpcbind
Mkdir –p /opt/wwwroot
Vim /etc/exports
在里面编辑:
/opt/wwwroot 192.168.253.0/24(rw,sync,no_root_squash)
注:/opt/wwwroot 是需要发布访问的目录 IP地址是允许访问的地址,括号里面的rw表示可读可写,sync表示同步写入,no_root_squash表示当用户用自己的root用户访问时,在这里也同样是已NFS的root权限(默认是root_squash,将作为nfsnobody用户降权对待)
当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可。例如,以下操作将/var/ftp/public 目录共享给两个客户机。并分别给只读和读写权限。
vim /etc/exports
/var/ftp/public 192.168.253.10(ro) 192.168.253.11(rw)
======++++++++++++++++++++++++++++++++================
Systemctl start rpcbind
Systemctl start nfs
注意:开启的顺序不能乱,必须先开启rpcbind,才能开启nfs,不然会出错。
Netstat –anpt |grep rpcbind
查看本机发布的nfs共享目录:
Showmount –e
客户机配置:
yum –y install rpcbind nfs-tuils
systemctl enable rpcbind
systemctl start rpcbind
开启rpcbind,因为需要它支持RPC,至于nfs就不需要了,因为他是nfs共享存储服务器,这是客户机配置,但是必须要有它可以,所以我们只安装行。
showmount –e nfs地址(192.168.253.9)
通过上面的这条命令,我们可以查看到nfs的一些共享信息,如果看不到,就是出错了,请看看网络是不是在同一个网段之内。
接下来就是最后一步了,挂载:
Mount 192.168.253.9(nfs地址)/opt/wwwroot /var/www/html
将它挂载到web服务器的网页存放目录里面,
最后就是往里面添加网页信息了,在web服务器上添加也可以,在nfs服务器上添加都可以,因为刚才给的是读写权限,所以,都可以写入,也可以读。
基于DR做负载均衡集群
环境:
LVS调度器——DR模式
调度服务器一台:Linux—CentOS7.4
IP地址:192.168.238.6
Web服务器两台:Linux—CentOS7.4
IP地址:192.168.253.7(SERVER AA)
IP地址:192.168.253.8(SERVER BB)
客户端一台:以win7为例,用于测试验证
IP地址:192.168.238.222
192.168.238.6虚拟机
systemctl stop firewalld //关闭防火墙
setenforce 0 //关闭监控
modprobe ip_vs
yum install ipvsadm -y
ipvsadm -v
将ifcfg-ens33的网卡cp一份,如果ens32就cp ens32.
cp ifcfg-ens33 ifcfg-ens33:0
在ens33:0中,我们设置的是vip的地址,192.168.238.5
掩码:255.255.255.0
192.168.238.7虚拟机
systemctl stop firewalld//关闭防火墙
setenforce 0 //关闭监控
yum –y install httpd
将ifcfg-lo的网卡cp一份。
[root@localhost ~]#cp ifcfg-lo ifcfg-lo:0
ifcfg-lo:0里面编写vip地址
[root@localhost ~]#vim /etc/rc.local
........
/sbin/route add –host 192.168.238.5 dev lo:0
[root@localhost ~]# route add –host 192.168.238.5 dev lo:0
[root@localhost ~]#vim /etc/sysctl.conf
...........忽略
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ifnore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost ~]#sysctl –p
[root@localhost ~]#echo “<h1>www.test1.com</h1>” > \ /var/www/html/index.html
[root@localhost ~]#systemctl enable httpd
[root@localhost ~]#systemctl start httpd
其他的web服务器都这样配。
测试机访问:
在win 7上用浏览器进行访问。