首页 > 其他分享 >LVS DR部署

LVS DR部署

时间:2023-06-08 10:04:44浏览次数:39  
标签:10.100 LVS 部署 lo ipvsadm 网卡 10.10 80 DR

四层和七层传输的区别

四层:

1.主要做目标地址转换

2.从头到尾只建立了一次完整连接

LVS DR部署_lvs

七层:

1.总共建立2次连接

LVS DR部署_lvs_02

LVS DR部署环境配置

Lvs

eth0 10.10.10.11

eth0:0 10.10.10.100

rel server

eth0 10.10.10.12

lo:0 10.10.10.100

rel server

eth0 10.10.10.13

lo:0 10.10.10.100

LVS DR主要是通过路由器到LVS,LVS到后端真实服务做了一个DMAC地址转换,10.10.10.100 IP相当于是VIP 的概念。回数据包后端服务器直接回给用户,不经过lvs。

DR模式特点:

1、集群节点处于同一个广播域中;

2、RS 的 RIP 可以使用私有地址,也可以使用公网地址,以方便配置;不支持支持端口映射;

3、RS可以使用必须为uninx操作系统(OS);且RS需要仰制arp,需要在loopback配置vip;

4、Director 仅负责处理入站请求,响应报文由 Realserver 直接发往客户端;Realserver 不能将网关指向 DIP,而直接使用前端网关响应请求报文;

建立一个LVS的网络,三台机器加入。

LVS DR部署_lvs_03

LVS主机操作

关闭防火墙

关闭selinux

lvs主机配置

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
#1块的配置
[root@localhost network-scripts]# cat ifcfg-eth0
# Generated by parse-kickstart
DEVICE="eth0"
IPV6INIT="yes"
BOOTPROTO="static"
UUID="13aa7f77-aa60-460b-986d-c55566a1dcbb"
ONBOOT="yes"
IPADDR=10.10.10.11
PREFIX=24
#虚拟网卡配置
[root@localhost network-scripts]# cat ifcfg-eth0:0
# Generated by parse-kickstart
DEVICE="eth0:0"
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=10.10.10.100
PREFIX=24

LVS 服务器网卡配置

LVS DR部署_lvs_04

重启网卡

# /etc/init.d/network restart

内核参数修改

# cat /etc/sysctl.conf
关闭广播功能
net.ipv4.ip_forward=0  #关闭网卡转发功能
net.ipv4.conf.all.send_redirects=0  ##禁止所有网卡转发重定向报文
net.ipv4.conf.default.send_redirects=0  ##禁止默认网卡转发重定向报文
net.ipv4.conf.eth0.send_redirects=0  ##禁止eth0网卡转发重定向报文
#如果多个网卡,可以继续添加其他网卡

安装LVS软件包

yum -y install ipvsadm

[root@localhost ~]# ipvsadm -v
ipvsadm v1.27 2008/5/15 (compiled with popt and IPVS v1.2.1)

#加载到内核中来
[root@localhost ~]# modprobe ip_vs


查看当前的lvs规则
[root@localhost ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

2个后端rel server配置都是一样的

# cp -a ifcfg-lo ifcfg-lo:0

[root@localhost network-scripts]# cat  ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255   #只是标识,自己跟自己玩
NETWORK=127.0.0.0
# If you're having problems with gated making 127.0.0.0/8 a martian,
# you can change this to something else (255.255.255.255, for example)
BROADCAST=127.255.255.255
ONBOOT=yes
NAME=loopback

内核参数修改

# cat /etc/sysctl.conf
#all default lo网卡的 ARP 通信行为控制
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
# sysctl -p



#真实服务添加路由,当有访问10.10.10.100 就交给lo:0
# route add -host 10.10.10.100 dev lo:0

#路由加入开机自启动
echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

[root@localhost ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.0      0.0.0.0         255.255.255.0   U     100    0        0 eth0
10.10.10.100    0.0.0.0         255.255.255.255 UH    0      0        0 lo

安装apache服务

yum install httpd -y
echo "10.10.10.12" >> /var/www/html/index.html
systemctl restart httpd

LVS配置

-A 添加集群
-a 添加集群的子节点
-s 算法
-g DR模式
-r rel server
# ipvsadm -A -t 虚拟IP:80 -s wrr
# ipvsadm -a -t 虚拟IP:80 -r 10.10.10.12:80 -g -w 1
# ipvsadm -a -t 虚拟IP:80 -r 10.10.10.13:80 -g -w 2

#lvs服务配置的规则如下
ipvsadm -A -t 10.10.10.100:80 -s wrr
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g -w 1
ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g -w 2

[root@localhost network-scripts]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.100:80 wrr
  -> 10.10.10.12:80               Route   1      0          0
  -> 10.10.10.13:80               Route   2      0          0

LVS扩展命令

保存规则
  ipvsadm -Sn > /etc/sysconfig/ipvsadm
  
  # ipvsadm -C    #清除集群规则
  
  #修改完规则重新导入
  # ipvsadm-restore < /etc/sysconfig/ipvsadm
  
  #开机自启动
  # systemctl enable ipvsadm
  
  #查看lvs的负载和路由情况
[root@192 ~]# ipvsadm -Ln -c
IPVS connection entries
pro expire state       source             virtual            destination
TCP 01:57  TIME_WAIT   192.168.1.5:54297  192.168.1.11:80    10.10.10.24:80
TCP 01:05  TIME_WAIT   192.168.1.5:54284  192.168.1.11:80    10.10.10.24:80
TCP 01:56  TIME_WAIT   192.168.1.5:54296  192.168.1.11:80    10.10.10.25:80

测试访问:

➜  ~ curl http://10.10.10.100:80
10.10.10.12
➜  ~ curl http://10.10.10.100:80
10.10.10.13
➜  ~ curl http://10.10.10.100:80
10.10.10.12
➜  ~ curl http://10.10.10.100:80
10.10.10.13
➜  ~ curl http://10.10.10.100:80
10.10.10.12

查看ipvs的数据包,出站都是空的

说明:DR模式回数据包是后端服务器直接会给用户的,不经过LVS。

[root@localhost ~]# ipvsadm -Ln --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.10.10.100:80                     2       12        0      800        0
  -> 10.10.10.12:80                      1        6        0      400        0
  -> 10.10.10.13:80                      1        6        0      400        0

LVS DR部署_lvs_05


标签:10.100,LVS,部署,lo,ipvsadm,网卡,10.10,80,DR
From: https://blog.51cto.com/215687833/6437652

相关文章

  • Docker(四):部署Nginx
    1.查找Nginx镜像dockersearchNginx 2.下载Nginx镜像dockerpullnginx 3.查看是否下载成功dockerimages 4.创建容器并启动dockerrun-d-p8081:80--nameNginx01nginx这里使用nginx镜像创建了一个名为Nginx01的容器,开放外主机端口8081映射到容器的80端......
  • 后端项目部署到腾讯云服务器
    将项目后端接口部署到腾讯云服务器上 在腾讯云服务器上点击登录,进入命令行:一、jdk环境准备1、执行命令rpm-qa|grepjava查看系统当前是否安装了jdk,显然本系统无任何版本的jdk。2、执行yumsearchjdk,查询腾讯云服务器上的jdk有哪些:3、我们安装查询到的第二条记录java-......
  • 软测5班Loadrunner阶段性考试(2019-10-19)
    试题1:用你在Loadrunner中所学习的知识,将“欢迎来到然学科技”保存为一个变量,并且在日志中打印输出(10分)。答案:lr_save_string("欢迎来到科技","ranther");lr_output_message("你好:%s",lr_eval_string("{ran}"));试题2:Loadrunner中如何保持每次参数取值的唯一性(2分)?Unique+Once(保持......
  • clickhouse读写数据库3-- clickhouse_driver 模块
    这是用百度的文心一言生成的代码。刚开始2次都是错误的,明确指出clickhouse_driver没有占位符,让AI重新生成。重新生成了2次之后,才得到正确代码  #!/usr/bin/envpython#-*-coding:utf-8-*-#author:henry#desc:整理clickhouse读写的范例,方便日后读写click......
  • Loadrunner考试题
    Loadrunner考试题试题1:用你在Loadrunner中所学习的知识,将“欢迎来到XXX科技”保存为一个变量,并且在日志中打印输出(10分)。答案:lr_save_string("欢迎来到XXX科技","ranther");lr_output_message("你好:%s",lr_eval_string("{ranther}"));试题2:Loadrunner中如何保持每次参数取值的唯一......
  • 第3天学习Docker-Docker部署常见应用(MySQL、Tomcat、Nginx、Redis、Centos)
    前提须知:(1)搜索镜像命令格式:dockersearch镜像名(2)设置Docker镜像加速器详见文章:Docker设置ustc的镜像源(镜像加速器)1、部署MySQL拉取镜像(这里拉取mysql5.7版本)[root@localhost~]#dockerpullmysql:5.7创建容器(默认运行)[root@localhost~]#dockerrun-di--name=my_mysql-p330......
  • android-脱离AndroidStudio使用AVD
    android-脱离AndroidStudio使用AVD实际上,AVD不需要AndroidStudio图形界面也能独立运行。直接启动模拟器的方法是在终端中输入emulator-avd模拟器名称。默认情况下,emulator程序在C:\Users\users\AppData\Local\Android\Sdk\emulator\文件夹中。进入此文件夹,为emulator.exe......
  • Android获取当前连接的wifi名称
    首先AndroidMainfest.xml文件里加入权限: <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><!--获取WIFI信息状态的权限--><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/><!--获取网络状态改......
  • presto-server-0.152部署文档
    `presto-server-0.152部署文档Presto环境搭建Presto简介Presto结构安装Presto1环境要求2下载presto3配置Presto启动停止登录1启动2停止3登录Presto简介Facebookpresto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎......
  • Android开发 ViewDragHelper使用讲解
     前言  ViewDragHelper需要自定义ViewGroup实现,并且只是针对ViewGroup里的子View进行拖放,在拖放的过程中不能携带数据。也不能跨进程,甚至不能跨activity。所以ViewDragHelper本质上更像是一个ViewGroup里简单实现拖放效果的帮助类。 一个简单拖动的例子  快速了解一下,......