一、简介

  1、理论已经在上一篇博客简述,不了解得可以看看

    https://www.cnblogs.com/zhangxingeng/p/10497279.html

  2、LVS-DR优缺点复习     

    关于这种模式:

      1)确保前端路由器将目标ip为vip的请求报文发往director

        a、在前端网关做静态绑定;

        b、在RS上使用arptables;

        c、在RS上修改内核参数以限制arp通告即应答级别;

          arp_announce

          arp_ignore

      2)、RS的RIP可以使用私网或公网地址;

      3)、RS跟director在同一物理网络;

      4)、请求报文经由director,响应报文直接发往client;

      5)、此模式不支持端口映射;

      6)、RS支持大多数的OS;

      7)、RIP的网关不能指向DIP,以确保响应报文不经由director;

      

     缺点:LVS调度器及应用服务器在同一个网段中,因此不能实现集群的跨网段应用。

     优点:直接路由转发,通过修改请求报文的目标mac地址进行转发,效率提升明显

  3、实验拓扑

    实验说明:测试环境为虚拟机,准备三台即可,这里是四台外加本机物理机

节点 ip 应用 ip2 备注
web1 192.168.13.11(DIP) director VIP:ens37:0,192.168.13.100  
web2 192.168.13.12(RIP) rs VIP:Lo:0,192.168.13.100  
web3 192.168.13.13(RIP) rs VIP:Lo:0,192.168.13.100  
web4 192.168.13.14 client   curl
本地物理机测试 172网段 client   web访问

    

二、开始部署

  1、网络配置

   修改虚拟机网卡rip、vip、dip都在同一个网段,这里使用仅主机模式

    配置网卡基础参数这里就不演示,配置静态,网关指向仅主机虚拟网卡网关即可

   director一块网卡即可,后续配置添加vip使用别名即可,别着急,在后面具体配置上

    

 [root@web1 ~]#  ifconfig
ens37: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.13.11 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80::20c:29ff:fe1c:8b43 prefixlen scopeid 0x20<link>
ether :0c::1c:8b: txqueuelen (Ethernet)
RX packets bytes (46.0 MiB)
RX errors dropped overruns frame
TX packets bytes (8.8 MiB)
TX errors dropped overruns carrier collisions

   

   rs也是一块网卡,后续vip配置在lo:0上即可但是需要先修改arp_ignore,arp_announce才能添加lo:0

   

 [root@web2 ~]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.13.12 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80:::e73d:1ef:2e1 prefixlen scopeid 0x20<link>
ether :0c:::de: txqueuelen (Ethernet)
RX packets bytes (41.4 MiB)
RX errors dropped overruns frame
TX packets bytes (11.7 MiB)
TX errors dropped overruns carrier collisions
[root@web3 ~]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.13.13 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80:::e73d:1ef:2e1 prefixlen scopeid 0x20<link>
inet6 fe80:::80e8:f210:1e24 prefixlen scopeid 0x20<link>
ether :0c:::: txqueuelen (Ethernet)
RX packets bytes (41.0 MiB)
RX errors dropped overruns frame
TX packets bytes (11.7 MiB)
TX errors dropped overruns carrier collisions

 

  2、关闭防火墙

    

       systemctl stop firewalld

       systemctl disable firewalld

       sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config 

  3、安装软件

       11上安装ipvsadm     
       yum install ipvsadm -y
      、13安装httpd
        yum install httpd -y
  

  4、配置web

    注意:arp_ignore 改为1的意义是,响应报文,请求报文从哪个地址进来的,就只能这个接口地址响应

       arp_announce 改为2的意义是,通知,不通告不同网段

 #修改web页面
      web2         echo "welcom to web2" >/var/www/html/index.html      web3
        echo "welcom to web3" >/var/www/html/index.html
#启动与开机自启
        systemctl restart httpd
         systemctl enable httpd
#修改内核参数,两台rs都修改
echo > /porc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/ens33/arp_ignore
echo > /proc/sys/net/ipv4/conf/all/arp_announce
echo > /proc/sys/net/ipv4/conf/ens33/arp_announce
  #添加vip
  ifconfig lo:0 192.168.13.100 broadcast 192.168.13.100 netmask 255.255.255.255 up
#添加默认路由,两台rs都修改, route add -host 192.168.13.100 dev lo:
  #ping 192.168.13.100 

ping 192.168.13.100 

 #物理机查看mac地址没有变化,说明rs没有响应ok ,11和100的地址保持一致就是对的
   物理机是windows10 cmd 命令行 arp -a 查看mac表
arp -a
2 接口: 192.168.13.1 --- 0x16 Internet 地址 物理地址 类型 192.168.13.11 00-0c-29-1c-8b-43 动态 192.168.13.12 -0c---de- 动态 192.168.13.13 -0c---- 动态 192.168.13.14 -0c--0f-ea-b4 动态 192.168.13.100 00-0c-29-1c-8b-43 动态

    检查网络信息,web2举例,web3差不多就不贴上来了

 [root@web2 ~]# ifconfig
ens33: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.13.12 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80:::e73d:1ef:2e1 prefixlen scopeid 0x20<link>
ether :0c:::de: txqueuelen (Ethernet)
RX packets bytes (41.4 MiB)
RX errors dropped overruns frame
TX packets bytes (11.7 MiB)
TX errors dropped overruns carrier collisions lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (97.4 KiB)
RX errors dropped overruns frame
TX packets bytes (97.4 KiB)
TX errors dropped overruns carrier collisions 20 lo:0: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
21 inet 192.168.13.100 netmask 255.255.255.255
22 loop txqueuelen 1 (Local Loopback) virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether ::::a5:7c txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions [root@web2 ~]#

   

  5、配置director

    lvs-dr模式不需要开启地址转发,ip_forward功能,因为director发给rs的数据包是修改过的包,不是原包,不经过ip_forward转发,而是经过修改后的mac根据l路由决策直接路由到rip

 1 #ens33是另外一块网卡down掉,配置网卡别名,添加vip
ifconfig ens33 down
ifconfig ens37: 192.168.13.100/ broadcast 192.168.13.100 up
4 #配置ipvsadm
ipvsadm -C 清空
6 #添加规则
ipvsadm -A -t 192.168.13.100: -s rr
ipvsadm -a -t 192.168.13.100: -r 192.168.13.12 -g
ipvsadm -a -t 192.168.13.100: -r 192.168.13.13 -g
10 #查看规则
[root@web1 zhangxingeng]# ipvsadm -ln
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.13.100: rr
-> 192.168.13.12: Route
-> 192.168.13.13: Route

    检查网络信息

    

[root@web1 ~]#  ifconfig
ens37: flags=<UP,BROADCAST,RUNNING,MULTICAST> mtu
inet 192.168.13.11 netmask 255.255.255.0 broadcast 192.168.13.255
inet6 fe80::20c:29ff:fe1c:8b43 prefixlen scopeid 0x20<link>
ether :0c::1c:8b: txqueuelen (Ethernet)
RX packets bytes (46.0 MiB)
RX errors dropped overruns frame
TX packets bytes (8.8 MiB)
TX errors dropped overruns carrier collisions ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.13.100 netmask 255.255.255.255 broadcast 192.168.13.100
ether 00:0c:29:1c:8b:43 txqueuelen 1000 (Ethernet) lo: flags=<UP,LOOPBACK,RUNNING> mtu
inet 127.0.0.1 netmask 255.0.0.0
inet6 :: prefixlen scopeid 0x10<host>
loop txqueuelen (Local Loopback)
RX packets bytes (11.0 MiB)
RX errors dropped overruns frame
TX packets bytes (11.0 MiB)
TX errors dropped overruns carrier collisions virbr0: flags=<UP,BROADCAST,MULTICAST> mtu
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether ::::a5:7c txqueuelen (Ethernet)
RX packets bytes (0.0 B)
RX errors dropped overruns frame
TX packets bytes (0.0 B)
TX errors dropped overruns carrier collisions [root@web1 ~]#

  6、测试结果

 [root@web4 ~]# curl 192.168.13.100
welcom to web3
[root@web4 ~]# curl 192.168.13.100
welcom to web2
[root@web4 ~]# curl 192.168.13.100
welcom to web3
[root@web4 ~]# curl 192.168.13.100
welcom to web2
[root@web4 ~]# curl 192.168.13.100
welcom to web3
[root@web4 ~]# curl 192.168.13.100
welcom to web2
[root@web4 ~]# curl 192.168.13.100
welcom to web3
#统计信息
[root@web1 ~]# ipvsadm -ln --stats
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.13.100:
-> 192.168.13.12:
-> 192.168.13.13:
[root@web1 ~]#
 #连接条目
1 [root@web1 ~]# ipvsadm -lnc
IPVS connection entries
pro expire state source virtual destination
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.12:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.13:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.13:
TCP : ESTABLISHED 192.168.13.1: 192.168.13.100: 192.168.13.13:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.12:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.12:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.13:
TCP : FIN_WAIT 192.168.13.163: 192.168.13.100: 192.168.13.12:
TCP : ESTABLISHED 192.168.13.1: 192.168.13.100: 192.168.13.12:

 

转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10573695.html

Centos7+LVS-DR+Apache负载均衡web实验的更多相关文章

  1. LVS DR模式 负载均衡服务搭建

    LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...

  2. CentOS下LVS DR模式负载均衡配置详解

    一安装LVS准备: 1.准备4台Centos 6.2 x86_64 注:本实验关闭 SELinux和IPtables防火墙. 管理IP地址 角色 备注 192.168.1.101 LVS主调度器(Ma ...

  3. Keepalived+LVS 实现高负载均衡Web集群

    一.原理及简介: 1.1 Keepalived简介      Keepalived是Linux下一个轻量级别的高可用解决方案.Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节 ...

  4. 借助 LVS + Keepalived 实现负载均衡

    虽然现在云手段很高明了.但是这个lvs + keepalive 还是需要了解下的. 今天就整理了下lvs和keepalive的东西.做下总结留作以后怀念 在实际应用中,在Web服务器集群之前总会有一台 ...

  5. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡

    一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务器集群技术,集群即将相同服务部署在多台服务器上构成一个集群整体对外提供服务,这些集群可以是Web应用服务 ...

  6. 借助LVS+Keepalived实现负载均衡(转)

    原文:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...

  7. 借助LVS+Keepalived实现负载均衡

    原文地址:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了 ...

  8. 借助LVS+Keepalived实现负载均衡(转)

    出处:http://www.cnblogs.com/edisonchou/p/4281978.html 一.负载均衡:必不可少的基础手段 1.1 找更多的牛来拉车吧 当前大多数的互联网系统都使用了服务 ...

  9. LVS+keepalived搭建负载均衡

    安装环境:环境 centos4.4 LB:192.168.2.158(VIP:192.168.2.188) real-server1:192.168.2.187 real-server2:192.16 ...

随机推荐

  1. Python Django 2.2登录功能_2

    #Now 让我们继续对上篇的登录进行操作 #对于csrf,以后再开篇章记录 #修改index.html <form method="post" action="/l ...

  2. (7)STM32使用HAL库实现RS485通讯(全双工串口)

    一.硬件 如下图所示,485芯片链接到单片机的USART2上,但是默认的USART2并不是在PD5和PD6上,这里是需要重映射的.另外PG4作为485收发的控制(在485协议中,RE.DE同时为高电平 ...

  3. kubernetes进阶之四:Label和Label Selector

    一:什么是Label Label是Kubernetes系列中另外一个核心概念.是一组绑定到K8s资源对象上的key/value对.同一个对象的labels属性的key必须唯一.label可以附加到各种 ...

  4. LaTeX 公式编辑

    推荐一篇关于LaTeX的文档:<一份不太简短的LATEX 2ε介绍> 1. 常用数学公式符号: 求期望 $\mathbb{E}$ \mathbb{E} 正负无穷 $+\infty$,$-\ ...

  5. go语言调度器源代码情景分析之一:开篇语

    专题简介 本专题以精心设计的情景为线索,结合go语言最新1.12版源代码深入细致的分析了goroutine调度器实现原理. 适宜读者 go语言开发人员 对线程调度器工作原理感兴趣的工程师 对计算机底层 ...

  6. windows,分割路径.得出目录

    #include <windows.h> #include <vector> #include <stdio.h> #include <string> ...

  7. Android App渗透测试工具drozer,Qark,Androguard

    一. drozer简介 drozer(以前称为Mercury)是一款Android安全测试框架. drozer允许您通过承担应用程序的角色并与Dalvik VM,其他应用程序的IPC端点和底层操作系统 ...

  8. Windows 安装 Scoop

    Scoop介绍 scoop是Windows下的包管理工具 安装环境要求 1,操作环境:win10 2,确保你的 PowerShell 版本 >= 3. win7或许低于3,得升级.如何确认Pow ...

  9. 单元测试过多,导致The configured user limit (128) on the number of inotify instances has been reached.

    最近在一个asp.net core web项目中使用TDD的方式开发,结果单元测试超过128个之后,在CI中报错了:"The configured user limit (128) on t ...

  10. Python算法练习--把搜索树转成双向链表

    本文目前分享的题目都是来自于July的分享,然后把具体算法实现.搜索树转双向链表主要的实现逻辑是在中序遍历时,调整节点的左右子树:因为中序遍历是递归调用,所以在调整时一定要注意调整的位置,如果写错了, ...