zoukankan      html  css  js  c++  java
  • LVS-dr负载均衡原理及示例搭建

    lvs的基本介绍和相关术语已在LVS-nat负载均衡原理及示例搭建文中介绍,不熟悉的地方可以看下

    lvs-dr工作原理

    DS作为集群的访问入口,与lvs-nat的区别是不作为响应报文的出口。后端服务器RS与DS需在同一个物理网络中,响应报文直接发送给客户端,不再经过DS,这样也减轻了DS的压力。同时RS和DS都需要配置一个VIP地址。
    lvs-dr

    • 数据报文流向:
    1. 客户端请求报文(源IP是CIP,目标IP是VIP)到达director_server内核空间
    2. 内核空间中prerouting链检查报文并将其送往input链
    3. ipvs在此处检查是否为集群服务,若是则将重新封装报文,源MAC地址修改为DIP的MAC地址,目标MAC地址修改为是RIP的MAC地址,源IP和目标VIP不变,根据调度分发规则从postrouting链发送给后端服务器real_server
    4. real_server发现请求报文的MAC地址是自己的MAC地址,接收并发送响应报文,源IP为VIP,目标IP为CIP,将响应报文通过lo接口传送给RIP网卡,然后发送给客户端
    • 特点:
    1. RS和DS必须在同一物理网络中
    2. RS可以使用私有地址,也可以使用公网地址
    3. 所有请求报文必须经过DS,但响应报文一定不能经过DS,因此RS的网关不允许指向DIP
    4. RS上lo接口配置VIP地址
    • 注意点:
      保证前端路由将目标地址为VIP报文统统发给Director Server,而不是RS
      解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求
    1. arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求
    2. arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址

    示例搭建

    环境

    系统 IP VIP 备注
    DS-centos7 192.168.153.140 192.168.153.150 stop firewall/iptables selinux
    RS1-centos7 192.168.153.130 192.168.153.150 stop firewall/iptables selinux
    RS2-centos7 192.168.153.131 192.168.153.150 stop firewall/iptables selinux

    后端服务器RS操作步骤

    1. 配置VIP
    ]# cp /etc/sysconfig/network-scripts/ifcfg-lo{,:0}
    ]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
    DEVICE=lo:0
    IPADDR=192.168.153.150
    NETMASK=255.255.255.255
    ONBOOT=yes
    ]# systemctl restart network
    ]# ip addr show
    
    1. 安装Nginx
    ]# yum install gcc gcc-c++ pcre-devel openssl-devel zlib-devel -y #如果openssl-devel报错,`rpm -qa | grep openssl*`若已安装无需再安装
    ]# tar xf nginx-1.16.1.tar.gz
    ]# cd nginx-1.16.1
    ]# ./configure --prefix=/opt/nginx #如果需要其它模块,自行安装
    ]# make && make install
    ]# echo $? #结果为0,则安装成功;其它数字则失败,查看报错并解决
    0
    ]# vim /opt/nginx/html/test.html #分别在real_server_01/02上创建此文件
    <h1>r1/2,192.168.153.130/1</h1> #为此区分负载到哪台后端服务器上
    ]# /opt/nginx/sbin/nginx #启动nginx服务
    ]# curl 192.168.153.130/1 #分别在real_server_01/02上本地测试是否能够正常响应
    r1/2,192.168.153.130/1 #根据real_server_01/02显示对应结果
    
    1. 修改RS内核参数
    ]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
    ]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
    ]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
    ]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
    

    负载网关DS操作步骤

    1. 配置VIP
    ]# cp /etc/sysconfig/network-scripts/ifcfg-ens33{,:0}
    ]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
    DEVICE=ens33:0
    IPADDR=192.168.153.150
    NETMASK=255.255.255.255
    ONBOOT=yes
    ]# systemctl restart network
    ]# ip addr show
    
    1. 安装ipvsadm以及开启路由功能
    ]# yum install ipvsadm -y
    ]# vim /etc/sysctl.conf #路由转发永久有效
    net.ipv4.ip_forward=1
    ]# sysctl -p 
    ]# echo 1 > /proc/sys/net/ipv4/ip_forward #路由转发临时有效
    ]# vim /etc/sysctl.conf #调整/proc响应参数,关闭Linux内核重定向参数响应
    net.ipv4.conf.all.send_redirects = 0
    net.ipv4.conf.default.send._redirects = 0
    net.ipv4.conf.ens33.send_redirects = 0
    ]# sysctl -p
    
    1. 配置ipvs规则
    ]# route add -host 192.168.153.150 dev ens33:0
    ]# ipvsadm -A -t 192.168.153.150:80 -s rr
    ]# ipvsadm -a -t 192.168.153.150:80 -r 192.168.153.130:80 -g
    ]# ipvsadm -a -t 192.168.153.150:80 -r 192.168.153.131:80 -g
    
    1. 测试观察结果

    注意不要在DS、RS上执行此命令(No route to host)

    ]# for i in {1..10};do curl 192.168.153.150;done #测试10次观察结果
    r1,192.168.153.130
    r2,192.168.153.131
    r1,192.168.153.130
    r2,192.168.153.131
    r1,192.168.153.130
    r2,192.168.153.131
    r1,192.168.153.130
    r2,192.168.153.131
    r1,192.168.153.130
    r2,192.168.153.131
    
  • 相关阅读:
    pdf文件怎么转换成word文档
    数据库的发展历程
    数据库的三级模式
    数据库概述
    时间序列的自回归模型—从线性代数的角度来看
    数据清洗
    sql commit的三种方式
    数据库标准语言SQL((Structured Query Language)
    正则化推导转载
    leetcode刷题
  • 原文地址:https://www.cnblogs.com/wanwz/p/12791746.html
Copyright © 2011-2022 走看看