LVS(linux vritual service,虚拟服务器)也叫作调度器。它能够作至少三种的集群方式:负载均衡集群LB(load balance cluster),高可用集群HA(high Availability cluster),高性能运算集群HPC(high Performance Computer Cluster)。html
LVS负载均衡分为三层:调度器、服务器池、nfs存储设备。在调度器上有两个网卡,一个是外网的网卡,一个是内网的网卡。外网卡通常叫作vip(virtual IP虚拟IP)跟外网链接的。内网卡叫dip(destination IP)服务器池的网卡叫rip(real ip真实IP) 。linux
LVS一共有三种实现方式:NAT转换(Network Address translation)、IP隧道(IP Tunnel)、直接路由(direct Routing),在这里面。NAT转换的方式更加安全。不足是并发量不大。还容易卡,易损坏机器。由于用户访问是经过调度器的外网进行访问,而后由内网卡进行算法指定转发。最后获得的结果再由调度器进行回应。web
算法:算法
算法一共由四种:在这里咱们就介绍四种;其余的具体请上百度查看。vim
rr 轮询算法 就是服务器池里面的服务器,每个都轮一次。centos
wrr 加权算法: 这个是按照不平等的硬件设备来算的。每台设备性能不同,算法就不同,好比:性能好的可让他处理两次。性能差的能够处理一次,这样也不会卡。浏览器
Lc 最小链接数:根据真实服务器已创建的链接数进行分配,将收到的访问请求优先分配给链接数最少的节点。安全
Wlc 加权最小链接数:在服务器节点性能差别较大的状况下。能够以真实服务器自动调整权重。服务器
NAT负载均衡集群搭建网络
在内网(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
注:客户机的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用户降权对待。
Systemctl start rpcbind
Systemctl start nfs
Netstat –anpt |grep rpcbind
Showmount –e
内容为:Export list for localhost.localdomain:
/opt/wwwroot 192.168.253.0/24
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上用浏览器进行访问。