IP负载均衡(LVS)

负载均衡

文章目录

  • 负载均衡
  • 一、配置环境
    • 1 配置虚拟机
    • 2.制作母盘
    • 3.创建虚拟机
  • 二、负载均衡实现
    • 1.配置DR和VS
    • 2.测试效果
  • 三、keepalived+LVS
      • 1.问题展示
      • 2.实验准备
      • 3.配置keepalived
      • 4.配置辅助DR



提示:以下是本篇文章正文内容,下面案例可供参考

一、配置环境

1 配置虚拟机

1.配置一个母盘
本次实验用的是红帽7.6系统,首先准备一个7.6版本的系统镜像,将这个系统先安装成一个虚拟机。

IP负载均衡(LVS)_第1张图片IP负载均衡(LVS)_第2张图片IP负载均衡(LVS)_第3张图片
IP负载均衡(LVS)_第4张图片IP负载均衡(LVS)_第5张图片
IP负载均衡(LVS)_第6张图片
IP负载均衡(LVS)_第7张图片

IP负载均衡(LVS)_第8张图片
IP负载均衡(LVS)_第9张图片
IP负载均衡(LVS)_第10张图片然后我们就可以得到一个清爽干净的7.6系统了

IP负载均衡(LVS)_第11张图片

2.制作母盘

配置ip
IP负载均衡(LVS)_第12张图片
systemctl restart network
在这里插入图片描述配置repo
IP负载均衡(LVS)_第13张图片配置完仓库就可以安装一些必要的软件了
比如vim,http之类的
之后就是一些配置

selinux给disabled掉
IP负载均衡(LVS)_第14张图片

关火墙,网络管理器
systemctl disable --now firewalld
systemctl disable --now NetworkManage

配置解析
IP负载均衡(LVS)_第15张图片

3.创建虚拟机

回到真机中,先安装一个清盘工具

dnf install libguestfs-tools-c.x86_64

安后做清盘操作
后面的shy是前面创建的母盘名称
IP负载均衡(LVS)_第16张图片之后需要可以对母盘压缩,但是空间不够也可以不压缩,如下显示为空间不够提示,这时候就不要压缩了
IP负载均衡(LVS)_第17张图片利用母盘生成三个虚拟机
IP负载均衡(LVS)_第18张图片
完事后
首先先来配置下ip
由于之前母盘中基本都写差不多了
进入ifcfg文件中稍作修改即可
server1:172.25.254.101
server2:172.25.254.102
server2:172.25.254.103

二、负载均衡实现

1.配置DR和VS

本节实验实现的是通过直接路由实现虚拟服务器(VS/DR)
我们将server1设定为DR
将server2和server3设定为VS
那么在server1中
首先我们需要安装ipvsadm
‘yum install -y ipvsadm’
然后做一个vip
‘ip addr add 172.25.254.180/24 dev eth0’
IP负载均衡(LVS)_第19张图片
IP负载均衡(LVS)_第20张图片

在server2中
安装开启apache服务
yum install httpd
systemctl start httpd
书写一个默认发布文件以便测试
IP负载均衡(LVS)_第21张图片设定vip
ip addr add 172.25.254.180 dev eth0
IP负载均衡(LVS)_第22张图片server3的设定与此一致,只需要将对应的数字稍作修改即可

此时设定的状态ip负载可以分配成功,但不会返回
此时我们需要去做RS的设置
这里我们介绍arptables的方法
使用之前分别在server2和server3安装arptables
下面还是先以2为例演示操作
yum install -y arptables

安装完成后,开始相应的配置
1.书写策略文件,隐藏172.25.254.180
arptables -A IN -d -j DROP
arptables -A OUTPUT -s 172.25.254.180 -j mangle --mangle-ip-s 172.25.254.102
在这里插入图片描述
查看一下策略文件是否添加上了
IP负载均衡(LVS)_第23张图片
2.保存策略文件
arptables-save > /etc/sysconfig/arptables
这步可以防止重启后策略丢失

删除策略的操作
arptables -D INPUT -j DROP -d 172.25.254.180

3.设定vip
ip addr add 172.25.254.180/32 dev eth0
IP负载均衡(LVS)_第24张图片然后如法炮制,对server进行设定,就是将server中的ip用户位改为server3的用户位值就可以了。
对应大致步骤大致如下
IP负载均衡(LVS)_第25张图片

2.测试效果

下面就是测试环节
打开真实主机
访问172.25.254.180
IP负载均衡(LVS)_第26张图片
可以看到实现了负载均衡

三、keepalived+LVS

在负载均衡已经实现的前提下
不难发现其中问题所在
在本次实验中
如果server2挂掉了,那么将会有一半的用户出现访问被拒的现象,这很显然是不应该出现的一件事
那么我们要做的首要的一件事就是

健康监测

其次就是LVS出现故障挂掉了,那么server2,server3就全都不能再正常工作,也是不能出现的状况,所以我们要做的第二件事情就是保证有备选项来接手工作,这就是我们需要做的第二件事

主备冗余

那么知道的问题所在,就要开始解决问题了

1.问题展示

关掉server2的http服务,相当于server2挂掉了
systemctl stop httpd.service
打开真机
curl 172.25.254.180
IP负载均衡(LVS)_第27张图片可以看到分配到server2上的用户都被拒掉了
针对这个
下面首先来看健康监测的实现

2.实验准备

为了使测试的效果更加直观
我们做如下步骤

我们首先也再server1中写一个默认发布文件

yum install http -y
systemctl start httpd.service
echo server1 > /var/www/html/index.html

清空上个实验的数据
删掉vip
ip addr del 172.25.254.180/24 dev eth0
删掉手动添加的真实ip,即server2和server3的记录
ipvsadm -C
删除完成后可以看到vip没了
IP负载均衡(LVS)_第28张图片

ipvsadm -ln
在这里插入图片描述

3.配置keepalived

打开server1
安装keepalived
yum install keepalived -y
然后对配置文件进行编辑
cd /etc/keepalived/
vim keepalived.conf
在这里插入图片描述
文件中的内容全部如下,可以直接复制粘贴(前面的数字为序号,不是配置文件内容)

配置文件主要内容就是第一部分的邮件发送的配置,用于提示出错时的信息。
主DR的设置,优先级的设置,然后设置虚拟ip就是前面不断提到的vip,以及真实主机的ip设定,即本次实验中的server2和server3。

  1 ! Configuration File for keepalived
  2 
  3 global_defs {
  4    notification_email {
  5      root@localhost
  6    }
  7    notification_email_from keepalived@localhost
  8    smtp_server 127.0.0.1
  9    smtp_connect_timeout 30
 10    router_id LVS_DEVEL
 11    vrrp_skip_check_adv_addr
 12 #   vrrp_strict
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15 }
 16 
 17 vrrp_instance VI_1 {
 18     state MASTER
 19     interface eth0
 20     virtual_router_id 51
 21     priority 100
 22     advert_int 1
 23     authentication {
 24         auth_type PASS
 25         auth_pass 1111
 26     }
 27     virtual_ipaddress {
 28         172.25.254.180
 29     }
 30 }
 31 
 32 virtual_server 172.25.254.180 80 {
 33     delay_loop 6
 34     lb_algo rr
 35     lb_kind DR
 36 #    persistence_timeout 50
 37     protocol TCP
 38 
 39     real_server 172.25.254.102 80 {
 40         weight 1
 41         TCP_CHECK {
 42             connect_timeout 3
 43             delay_before_retry 3
 44         }
 45     }
 46     real_server 172.25.254.103 80 {
 47         weight 1
 48         TCP_CHECK {
 49             connect_timeout 3
 50             delay_before_retry 3
 51         }
 52     }
 53 }

此时健康监测的部分就完成了
那么还有一个需要解决的问题就是前面提到的server1挂掉的问题,即做主备冗余。
那么就新开一个server4,作为server1的辅助DR

4.配置辅助DR

先用第一节中提到的母盘生成虚拟机server4
cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -b shy.qcow2 server4
生成完server4后开启它

安装ipvsadm 和 keepalived
yum install ipvsadm keepalived -y
然后将server1中配置好的keepalived配置文件复制到server4中
因为文件内容大致相同,我们只需要稍作更改

切换到server1
cd /etc/keepalived/
scp keepalived.conf [email protected]:/etc/keepalived/
将配置文件传输到server4后
切换到server中修改配置文件
IP负载均衡(LVS)_第29张图片
只需要更改这两个地方,意思就是将状态设置为辅助DR,优先级50,低于主DR的100即可。
然后再和主DR一样开启服务
systemctl start keepalived.service

开始测试之前可以再做一遍检测工作
server1和server4
ip addr
没有vip
ipvsadm -ln
没有server2和sever3的信息
(为了看到实验效果)

server2和server3
开启apache服务
ip addr
查看,必须有vip
本章实验为172.25.254.180

然后先将server1和server4分别开启keepalived
systemctl start keepalived.service

然后就可以看到server1和server4都自动生成了vip和server2,server3的信息。
IP负载均衡(LVS)_第30张图片
测试

一开始都是会正常工作
IP负载均衡(LVS)_第31张图片
挂掉server2

在server2中关掉httpd
systemctl stop httpd

在server1中的效果
IP负载均衡(LVS)_第32张图片
在真机中访问就会全部由server3承担
IP负载均衡(LVS)_第33张图片
这就是健康监测生效,不会出现访问失败的现象
再测试一下主备冗余
停掉server1的keepalived服务,就是停掉主DR
systemctl stop keepalived.service
再回到主机中进行测试
依旧可以正常访问
IP负载均衡(LVS)_第34张图片
说明server4,辅助DR生效。

你可能感兴趣的:(负载均衡,负载均衡,tcp/ip,运维)