• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Centos7 LVS负载均衡DR模型单机以和高可用实践

武飞扬头像
qq_21875331
帮助1

1、负载均衡集群类型

负载均衡技术类型:基于 4 层负载均衡技术、基于 7 层负载均衡技术

负载均衡实现方式:硬件负载均衡设备、软件负载均衡

硬件负载均衡产品:F5 、深信服 、Radware

软件负载均衡产品: LVS(Linux Virtual Server)、 Haproxy、Nginx、Ats(apache traffic server)

2、LVS 就是一个四层(传输层)负载均衡器,支持 TCP/UDP 的负载均衡

三层结构:负载调度器、服务器池、共享存储。

架构对象

  • VS:Virtual Server,也称为 Director,负载均衡服务器
  • RS:Real Server,真正的服务器,集群中各节点
  • VIP:Director 向外部提供服务的 IP
  • DIP:Director 向内部与 RS 通信的 IP
  • RIP:真实服务器的 IP
  • CIP:客户端的 IP

3、LVS四种工作模式

LVS-NAT(NAT模式)

原理:客户端发送请求数据包到负载均衡器(CIP->VIP),负载均衡器改装数据包发送到服务器(CIP->RIP),服务端处理后返回数据包给负载均衡器(RIP->CIP),负载均器再进行数据包改装后返回给客户端(VIP->CIP),完成负载,该种模式无论流量进来还是出去都要经过负载均衡器。

LVS-DR(直接路由模式)

原理:DR模式的实现需要RS绑定LVS的vip,且保证该vip只是单个RS内部可见,对外不可见。一个请求打到负载均衡器(CIP->VIP),LVS 只需要将网络帧的 MAC 地址修改为某一台 RS 的 MAC,然后把该包转发到相应的RS处理,RS收到LVS转发过来的包,链路层发现MAC是自己的,到网络层,发现IP也是自己的(事先关联的LVS的ip),于是包被合法接收,响应时RS则直接向客户端返回,不再经过LVS。
DR模式流量不再经过lvs,且返回可以直接返回给客户端,只需要经过lvs一次,因此DR模式是性能最好的一种模式。

LVS-TUN(IP隧道(Tunnel)模式,不常用)

原理:负载均衡器把客户端发来的数据包(CIP->VIP),封装一个新的IP头标记(DIP-(CIP-VIP)-RIP)发给RS,RS收到后,先把数据包的头解开,还原数据包,处理后,直接返回给客户端,不需要再经过负载均衡器。注意,由于RS需要对负载均衡器发过来的数据包进行还原,所以说必须支持IPTUNNEL协议。所以,在RS的内核中,必须编译支持IPTUNNEL这个选项。
 

FULL-NAT模式(双向转换模式,不常用)

原理:客户端对负载均衡器VIP发起请求(CIP->VIP),负载均衡器接过请求发现是请求后端服务,对请求报文做full-nat,把源ip改为DIP{,把目标ip转换为任意后端RS的RIP,然后发往后端,RS接到请求后进行响应,响应源ip为RIP目标ip还是DIP,又内部路由路由到负载均衡器,负载均衡器接到响应报文,进行full-nat。将源地址为VIP,目标地址改为CIP,返回给客户端。

4、LVS 负载均衡算法

静态负载均衡

  • rr(round robin,轮询 )

  • wrr(weight round robin,加权轮询)

  • sh(source hashing,源地址 HASH)

  • dh(destination hashing,目标地址 HASH)


动态负载均衡

  • lc(leash-connection,最少连接 )

    • 简单算法:active * 256 inactive (谁的小选谁)
  • wlc(加权最少连接)

    • 简单算法:(active * 256 inactive) / weight(谁的小选谁)
  • sed(最少期望延迟)

    • 简单算法:(active 1) * 256 / weight (谁的小选谁)
  • nq(never queue,永不排队)

  • LBLC(基于局部性的最少连接 )

  • LBLCR(基于局部性的带复制功能的最少连接)

5、实现DR模型搭建

(1)、节点准备
        node1:192.168.2.168 ----作为负载均衡器

        node2:192.169.2.136

        node3:192.168.2.134

(2)、开始搭建

 配置lvs负载均衡器vip网络子接口(node1)

  1.  
    ifconfig enp0s3:2 192.168.2.100/24
  2.  
    # 撤掉命令
  3.  
    ifconfig enp0s3:2 down

配置RS服务器(node02、node03)

修改arp协议(arp_ignore、arp_announce)

  1.  
    cd /proc/sys/net/ipv4/conf/enp0s3
  2.  
    # 修改协议(注意不可使用vi进行修改)
  3.  
    echo 1 > arp_ignore
  4.  
    echo 2 > arp_announce
  5.  
    # 查看是否修改成功
  6.  
    cat arp_ignore
  7.  
    cat arp_announce
  8.  
    # 退回到all目录进行全局修改
  9.  
    cd ../all
  10.  
    echo 1 > arp_ignore
  11.  
    echo 2 > arp_announce

设置隐藏vip(node2\node3)

ifconfig lo:2 192.168.2.100 netmask 255.255.255.255

学新通

 搭建http服务(node2\node3)

  1.  
    # 安装httpd服务
  2.  
    yum install httpd -y
  3.  
    # 启动服务
  4.  
    service httpd start
  5.  
    # 创建主页(用于测试服务)
  6.  
    vi /var/www/html/index.html
  7.  
    # index填充内容node2
  8.  
    node2:form 192.168.2.136
  9.  
    # index填充内容node3
  10.  
    node3:form 192.168.2.134

 打开浏览器测试httpd服务是否成功

学新通

 LVS服务配置(node01)

  1.  
    # 安装ipvsadm
  2.  
    yum install ipvsadm
  3.  
    # 配置LVS入口规则(采用轮询机制),IP为新创建的enp0s3:2对应ip
  4.  
    ipvsadm -A -t 192.168.2.100:80 -s rr
  5.  
    #配置出口规则(192.168.2.136\192.168.2.134 分别是node23的ip,分配权重为1)
  6.  
    ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.136 -g -w 1
  7.  
    ipvsadm -a -t 192.168.2.100:80 -r 192.168.2.134 -g -w 1

查看配置是否成功

ipvsadm -ln

学新通

验证

浏览器访问192.168.2.100,疯狂F5,查看浏览器是否在node2、node3之间切换,在node1~3上分别使用命令 netstat -natp查看socket连接,会发现node1上没有socket记录,node2、node3上存在socket记录,进一步说明负载均衡器,不会和客服端建立连接。
6、DR keepalived高可用搭建

(1)、准备节点

        node1:192.168.2.168 --lvs主机

        node2:192.169.2.136

        node3:192.168.2.134

        node4:192.168.2.181 --lvs备机

注意:如果手动搭建过,lvs单机版本(node1)可先把安装的IP删掉

  1.  
    # 卸载ipvsadm
  2.  
    ipvsadm -C
  3.  
    # 这里安装过enp0s3:2
  4.  
    ifconfig enp0s3:2 down

node2和node3保持单机版导通的配置

安装keeplived(node1\node4)

  1.  
    # 安装keeplived服务
  2.  
    yum install keepalived ipvsadm -y
  3.  
    # 修改配置
  4.  
    cd /etc/keepalived/
  5.  
    # 备份配置文件
  6.  
    cp keepalived.conf keepalived.conf.bak
  7.  
    # 打开并修改配置文件
  8.  
    vi keepalived.conf
  9.  
    # 修改配置(node1为master配置,node4配置区别地方有特殊说明,其余地方和node相同)
  10.  
    # vrrp_strict # 注意一定要注解掉,否则配置的vip接口ping不通
  11.  
    vrrp_instance VI_1 {
  12.  
    state MASTER # node4 BACKUP
  13.  
    interface enp0s3 # 设置自己虚拟机使用的虚拟网络
  14.  
    virtual_router_id 51
  15.  
    priority 100 # node4 50
  16.  
    advert_int 1
  17.  
    authentication {
  18.  
    auth_type PASS
  19.  
    auth_pass root # 主备机服务器密码要设置一致
  20.  
    }
  21.  
    virtual_ipaddress {
  22.  
    192.168.2.100/24 dev enp0s3label enp0s3:2
  23.  
    }
  24.  
    }
  25.  
     
  26.  
    # 注意virtual_server 只保留一个
  27.  
    virtual_server 192.168.2.100 80 {
  28.  
    delay_loop 6
  29.  
    lb_algo rr
  30.  
    lb_kind DR # 负载模式设置成DR
  31.  
    nat_mask 255.255.255.0 #设置子网掩码
  32.  
    persistence_timeout 0 # 多少秒内访问同一个服务器
  33.  
    protocol TCP
  34.  
     
  35.  
    real_server 192.168.2.136 80 {
  36.  
    weight 1
  37.  
    HTTP_GET {
  38.  
    url {
  39.  
    path /
  40.  
    status_code 200
  41.  
    }
  42.  
    connect_timeout 3
  43.  
    nb_get_retry 3
  44.  
    delay_before_retry 3
  45.  
    }
  46.  
    }
  47.  
    real_server 192.168.2.134 80 {
  48.  
    weight 1
  49.  
    HTTP_GET {
  50.  
    url {
  51.  
    path /
  52.  
    status_code 200
  53.  
    }
  54.  
    connect_timeout 3
  55.  
    nb_get_retry 3
  56.  
    delay_before_retry 3
  57.  
    }
  58.  
    }
  59.  
    }
学新通

复制keepalived.conf到node4,并修改相应配置,参考上步骤(仅仅修改区分地方即可)

scp  ./keepalived.conf  root@node04:`pwd`

启动keepalived服务(node1\node4)

  1.  
    # 启动服务
  2.  
    systemctl start keepalived
  3.  
    # 停止服务
  4.  
    systemctl stop keepalived

验证:浏览器访问返回node2或者node3主页结果表示成功

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhggbffi
系列文章
更多 icon
同类精品
更多 icon
继续加载