LVS 负载均衡集群构建

负载均衡集群(LBC)

1.负载均衡集群的概述
所有节点的工作内容一致,做的都是同一件事,互相分担节点服务器的压力。如访问量,单台节点的访问量不能够很好的满足客户端的访问,这个时候,我们就可以增加服务器的数量来解决这个问题,这样就可以很好的提高用户访问的效率

2.集群中各节点的特点
每台服务器分担集群节点的压力、工作目标明确、工作内容一致、提供的是工作效率

3.LVS负载均衡集群的分类

模式工作原理
LVS-DR模式又叫直接路由模式,客户端发送一个包含VIP地址的请求到负载调度器上,负载调度器根据算法提交给内网真实服务器处理,然后内网真实服务器直接返回给客户端。唯一的好处就是返回的数据包不经过负载调度器,减轻了负载调度器的压力
LVS-NAT模式客户端请求负载调度器,负载调度器根据NAT地址转换功能,将请求发送给内网真实服务器去处理,真实服务处理了之后返回负载调度器,再由负载调度器返回给客户端。整个过程都要经过负载调度器,极大的增加负载调度器的压力

LVS-DR模式的搭建

准备工作

1.准备三台centos 7 的操作系统
2.一台为LVS负载调度器、两台为httpd服务器
3.LVS负载调度器上存在两张网卡,一张内网网卡,主要连接两台httpd服务器的。一张外网,主要和外网进行通信
3.两台httpd服务器存在于内网当中

关闭防火墙、selinux以及网卡守护进程

[root@lvs-dr ~]# systemctl stop firewalld
[root@lvs-dr ~]# systemctl disable firewalld
[root@lvs-dr ~]# vi /etc/selinux/config 
......
SELINUX=disabled
......
[root@lvs-dr ~]# setenforce 0
[root@lvs-dr ~]# systemctl stop NetworkManager   //关闭网卡守护进程
[root@lvs-dr ~]# systemctl disable NetworkManager 

注:所有系统均有执行以上操作

Lvs-dr 负载调度器的配置

[root@lvs-dr ~]# vi /etc/sysctl.conf    //编辑这个文件
net.ipv4.conf.all.send_redirects = 0       
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
[root@lvs-dr ~]# sysctl -p     //执行这个生效
[root@lvs-dr ~]# yum install -y ipvsadm    //安装ipvsadm软件
[root@lvs-dr ~]# modprobe ip_vs    //把ipvsadm加载到内核当中去
[root@lvs-dr ~]# ipvsadm -Ln      //查看当前ipvsadm的状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
[root@lvs-dr ~]# cd /etc/sysconfig/network-scripts/   //进入网卡配置文件所在的目录
[root@lvs-dr network-scripts]# cp -r ifcfg-ens33 ifcfg-ens33:0     //复制内网网卡作为子网卡
[root@lvs-dr network-scripts]# vi ifcfg-ens33:0   //编辑这张网卡,修改如下的内容
IPADDR=192.168.1.150     //修改IP地址
NAME="ens33:0"      //修改名称
#UUID="76ac6300-c65f-4cae-baa5-ca12c5bdcde0"    //注释这一行
DEVICE="ens33:0"  
[root@lvs-dr network-scripts]# systemctl restart network   //然后重启网卡即可
[root@lvs-dr network-scripts]# ip a   //使用这个命令就可以查看得到我们配置的效果了
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:d8:b0:c3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet 192.168.1.150/24 brd 192.168.1.255 scope global secondary ens33:0

以上操作完成以后,我们就可以添加集群以及主机了
[root@lvs-dr ~]# ipvsadm -A -t 192.168.1.150:80 -s rr  //创建一个集群
[root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.20:80 -g    //为集群添加主机
[root@lvs-dr ~]# ipvsadm -a -t 192.168.1.150:80 -r 192.168.1.30:80 -g 
[root@lvs-dr ~]# ipvsadm -ln    //查看添加的状态
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.150:80 rr
  -> 192.168.1.20:80              Route   1      0          0         
  -> 192.168.1.30:80              Route   1      0          0 
注:-A 创建一个集群  -t 指定VIP 地址  -s 指定算法  rr 代表轮询 -a  添加主机  -g  代表 lvs-dr 模式 

优化操作
[root@lvs-dr ~]# ipvsadm -Sn     //保存配置
-A -t 192.168.1.150:80 -s rr
-a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1
-a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1
[root@lvs-dr ~]# echo "ipvsadm -Sn" >> /etc/sysconfig/ipvsadm     //将输出的内容保存到一个文件当中
[root@lvs-dr ~]# ipvsadm -C     //清除当前ipvsadm的所有配置
[root@lvs-dr ~]# ipvsadm-restore <    /etc/sysconfig/ipvsadm     //重新加载配置
[root@lvs-dr ~]# echo "ipvsadm-restore < /etc/sysconfig/ipvsadm" >> /etc/rc.local   //加入到开机自启 
[root@lvs-dr ~]# ipvsadm -Ln --stats     //查看状态
IP Virtual Server version 1.2.1 (size=4096)
[root@lvs-dr ~]# 
[root@lvs-dr ~]# ipvsadm -Sn
-A -t 192.168.1.150:80 -s rr
-a -t 192.168.1.150:80 -r 192.168.1.20:80 -g -w 1
-a -t 192.168.1.150:80 -r 192.168.1.30:80 -g -w 1

httpd服务器的配置

[root@server1 ~]# yum install -y httpd    //下载httpd服务器
[root@server1 ~]# systemctl start httpd 
[root@server1 ~]# systemctl enable httpd 
[root@server1 ~]# echo "this is server 1" >> /var/www/html/index.html 
[root@server1 ~]# curl localhost
this is server 1
注:两台httpdserver 都要执行以上操作,唯一不同的就是网页的内容,尽量让他们不一样,虽然在真实环境下所有真实服务器的内容都是一致,为了实现实验的效果,只好将他们设置为不一样

以上操作完成以后,在来执行以下操作(两台httpd服务器操作一致)
[root@server1 ~]# cd /etc/sysconfig/network-scripts/  //进入网卡配置文件
[root@server1 network-scripts]# cp -r ifcfg-lo ifcfg-lo:0    //复制回环网卡增加一个子网卡
[root@server1 network-scripts]# vi ifcfg-lo:0  //修改这个网卡,修改如下内容
DEVICE=lo:0
IPADDR=192.168.1.150
NETMASK=255.255.255.255

为了访问IP地址方式冲突我们进行修改arp的相应级别操作
[root@server1 network-scripts]# vi /etc/sysctl.conf   //编辑这个文件   添加如下内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@server1 network-scripts]# sysctl -p    //执行这个生效
[root@server1 ~]# systemctl restart network    //重启网卡操作
[root@server1 ~]# ip a      //查看配置是否生效
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet 192.168.1.150/32 brd 192.168.1.150 scope global lo:0
       valid_lft forever preferred_lft forever

然后我们添加一条路由(当来自192.168.1.150的数据都交给lo:0网卡去处理)
[root@server1 ~]# route add -host 192.168.1.150 dev lo:0
[root@server1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.1.150   0.0.0.0         255.255.255.255 UH    0      0        0 lo
[root@server1 ~]# echo "route add -host 192.168.1.150 dev lo:0" >> /etc/rc.local    //写入到开机自动

验证测试
第一次访问
在这里插入图片描述
当我们不断点击刷新按钮时(就会在两个服务器之间来回切换)
在这里插入图片描述
负载调度器上查看分担的量

[root@lvs-dr ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  192.168.1.150:80                    6      191        0    52055        0
  -> 192.168.1.20:80                     3      121        0    34211        0
  -> 192.168.1.30:80                     3       70        0    17844        0

以上就是LVS-DR 模式的构建

LVS-NAT模式的搭建

我们基于以上的主机来创建,因为我之前拍摄的有快照,所有这里就直接恢复然后进行操作了

lvs-nat 负载调度器的配置

[root@lvs-nat ~]# vi /etc/sysctl.conf    //编辑这个文件
net.ipv4.ip_forward = 1     //开启路由转发功能
[root@lvs-nat ~]# sysctl -p
[root@lvs-nat ~]# yum install -y ipvsadm    //安装ipvsadm
[root@lvs-nat ~]# ipvsadm -A -t 10.1.1.10:80 -s rr    //创建集群并且添加主机  
[root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.20:80 -m
[root@lvs-nat ~]# ipvsadm -a -t 10.1.1.10:80 -r 192.168.1.30:80 -m
[root@lvs-nat ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.1.1.10:80 rr
  -> 192.168.1.20:80              Masq    1      0          0         
  -> 192.168.1.30:80              Masq    1      0          0      
注:这里的集群对外的IP地址为负载调度器上外网卡的IP地址

优化操作 和LVS-DR模式的一致,这里就不写了

httpd服务器的配置 (两台服务器的操作一致)

[root@server2 ~]# yum install -y httpd 
[root@server2 ~]# systemctl start httpd 
[root@server2 ~]# echo  "this is server 1" >> /var/www/html/index.html 
[root@server2 ~]# curl localhost
this is server 1
这里还是一样,两台服务器的内容一致,主要好区分效果

然后我们为两台服务器添加网关,网关指向负载调度器上内网网卡的IP地址
[root@server2 ~]# echo "GATEWAY=192.168.1.10" >>/etc/sysconfig/network-scripts/ifcfg-ens33 
[root@server2 ~]# systemctl restart network 

浏览器上测试
第一次访问
在这里插入图片描述
第二次访问(不断刷新页面)
在这里插入图片描述
至此,负载均衡集群的两种模式就此搭建完成,如有错误,欢迎指出改正

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ball-4444

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值