LVS负载均衡集群

时间:2021-08-28 21:48:08

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

  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上用浏览器进行访问。