企业运维之lvs软件负载均衡

一、lvs概述

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。当用户从外部访问公司的外部负载均衡服务器,用户的Web请求会发送给LVS调度器,调度器根据自己预设的算法决定将该请求发送给后端的某一台Web服务器。
lvs的核心组件:
ipvsadm:策略编写工具, 用于管理集群服务及集群服务上的RS等
ipvs:工作于内核上的程序, 可根据用户定义的集群实现请求转发
常见术语:
VS:Virtual Server,虚拟服务
RS:Real Server,后端请求处理服务器
CIP:Client IP,客户端IP
VIP:Director Virtural IP,负载均衡虚拟IP
DIP:Director IP 负载均衡器IP
RIP:Real Server IP,后端请求处理服务器IP
lvs常见的几种模式:
NAT模式
DR模式
TUNNEL模式
FULLNAT模式
其中DR模式是最稳定最常用的模式

二、安装lvs策略编辑工具

yum install ipvsadm.x86_64 -y

ipvsadm常见的参数

-l 列出当前策略
-h 列出编辑策略的方法
-A 添加虚拟服务
-t 指定虚拟IP
-s 指定调度器
-a 添加真实服务
-r 指定真实服务的IP
-g 选择DR模式
-i 选择TUNNEL模式
-C 清除规则

启动ipvsadm服务
需要新建一个策略文件

touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service

三、添加策略

DR模式

ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.30:80 -g
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.40:80 -g

重启ipvsadm服务

四、给调度器以及后端主机添加VIP

ip addr add 192.168.0.100/32 dev ens33

客户端向调度器VIP请求数据,调度后台30,40主机轮询回应,但是当后台主机向客户端返回数据时,客户端不认识30或40这两个IP,所以需要在后台主机上加VIP

五、TUNNEL模式

清楚之前设置的策略

ipvsadm -C

导入隧道模式所需要的模块

modprobe ipip

用命令ip a可以看到多了一个类似于网卡的东西
在这里插入图片描述添加策略:

ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.30:80 -i
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.40:80 -i

添加虚拟IP:

ip addr add 192.168.0.100/32 dev tunl0

激活tunl0

ip link set up tunl0

关闭反向过滤规则:若开启了反向过滤规则会对流入的数据包进行反向路径校验,不符合规则会将数据包丢弃

sysctl -a | grep rp_filter

将上述命令中的为1的规则都改为0

六、lvs+keepalived

这个组合可以实现高可用以及后端的健康检查
需要配置一个备用调度器
源码安装keepalived

tar zxf keepalived-2.0.20.tar.gz 
./configure --prefix=/usr/local/keepalived --with-init=systemd
yum install gcc -y
yum install openssl-devel -y
./configure --prefix=/usr/local/keepalived --with-init=systemd
make && make install

更改配置文件:

vim keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.0.100
    }
}
virtual_server 192.168.0.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.0.30 80 {
        TCP_CHECK{
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
    real_server 192.168.0.40 80 {
        TCP_CHECK{
        weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

同样,在备用调度器上做上述相同的操作,只是在配置文件中有两处不同的更改
在这里插入图片描述
这种方式不需要手动添加VIP,当开启keepalived服务后,会自动添加,并且当主调度器挂了以后主调度器中的VIP会自动移除,备用调度器中自动添加VIP。当后端主机有一个挂了以后会被自动的提出集群组中。

猜你喜欢

转载自blog.csdn.net/weixin_43834060/article/details/105837224