LVS负载均衡集群

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负载均衡集群搭建网络

  1. 准备好最少三台服务器,一台做为调度器,两台做为web服务器,组成一个地址池。
  2. 调度器双网卡:(dip vmnet 4)192.168.253.6 (vip vmnet 8)152.52.25.1
  3. 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

  1. 在/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用户降权对待。

  1. 启动NFS服务程序:

      Systemctl start rpcbind

      Systemctl start nfs

      Netstat –anpt |grep rpcbind

  1. 查看本机发布的nfs共享目录:

     Showmount –e

  内容为:Export list for localhost.localdomain:

          /opt/wwwroot 192.168.253.0/24

  1. 在客户机上也安装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上用浏览器进行访问。