LVS和nginx和keepalived四层和7层的一些测试,nginx和keepalived共用环境的部署,lvs,nginx客户端IP透传

news2024/12/27 0:20:07

LVS和nginx的测试

实验DR模式

服务器IP备注
mysql192.168.137.178测试服务器
lvs**vip ** 192.168.137.99 RIP 192.168.137.100lvs服务器
nginx1RIP 192.168.137.101
nginx2RIP 192.168.137.102

LVS四层代理

test----lvs vip—nginx1/ngin2

LVS服务器的配置

[root@lvs openresty-1.17.8.2]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.137.99:80 rr
  -> 192.168.137.101:80           Route   1      0          4994      
  -> 192.168.137.102:80           Route   1      0          5030
[root@lvs openresty-1.17.8.2]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:9a:2c:4d brd ff:ff:ff:ff:ff:ff
    inet 192.168.137.100/24 brd 192.168.137.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet 192.168.137.99/24 brd 192.168.137.255 scope global secondary noprefixroute enp0s3:0
       valid_lft forever preferred_lft forever
    inet6 fe80::9740:e62:24b0:b04d/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

测试

在test服务器上测试,访问均匀的分布在 两个rip上

for i in {1…3000};do curl http://192.168.137.99;done
在这里插入图片描述

在nginx服务器上查看日志,发现日志中remoteip 是client的ip。
在这里插入图片描述

结论

1、在lvs rr算法下,不设置-p参数的话,请求能均匀的分布在两台服务器上。

2、lvs的dr模式,后端nginx获取的remote_ip不是lvs代理服务器的IP。是直接client过来的IP。

3、后端直接给客户端回包。不经过代理,后端与代理也没有链接

nginx七层代理

test----lvs nginx8080—nginx1/ngin2

LVS服务器上的nginx的配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    upstream nginx{ 
       server 192.168.137.101 weight=100 max_fails=2 fail_timeout=30s;
       server 192.168.137.102 weight=100 max_fails=2 fail_timeout=30s;
             }
    server {
        listen       8080;
        server_name  localhost;
        ##让代理设置请求头,传递之前的IP
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        location / {
        proxy_pass http://nginx;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

}

后端nginx配置

#nginx1配置,设置上realip模块,记录真实IP
 server {
        listen       80;
        server_name  localhost;
        set_real_ip_from 192.168.137.100;  #表示来自代理服务器的IP,不是用户的真实IP
        real_ip_header X-Forwarded-For;   #用户真实IP存在X-Forwarded-For请求头中
        real_ip_recursive on;
        location / {
            root   html;
            index  index.html index.htm;
        }
        }

#nginx2,不设置realip模块,记录真实IP
 server {
        listen       80;
        server_name  localhost;
        
        location / {
            root   html;
            index  index.html index.htm;
        }
        }

测试

在test服务器上测试

for i in {1…3000};do curl http://192.168.137.99:8080/;done

for i in {1…3000};do curl http://192.168.137.100:8080/;done
在这里插入图片描述

观察日志中的remote_ip和http_x_forwarded_for
在这里插入图片描述

观察两后台nginx的建立的链接
在这里插入图片描述

观察测试服务器的链接
在这里插入图片描述

结论

1、nginx七层代理的请求均匀的打在了两台机器上

2、用户访问nginx代理,后端实际与代理进行通讯。流量从代理来,走代理出去。不同于lvs的DR模式

3、nginx的七层代理可以通过xff设置IP透传。代理的ip记录在http_x_forwarded_for中。可通过realip模块将clientIP过滤出来,通过remote_ip打印

nginx四层代理

test----lvs nginx8081—nginx1/ngin2

LVS服务器上nginx的配置

stream {
   upstream web{
      server 192.168.137.101:80 weight=100 max_fails=2 fail_timeout=30s;
      server 192.168.137.102:80 weight=100 max_fails=2 fail_timeout=30s;
               }
        server {
                listen 8081;
                proxy_pass web;
        }
}

测试
观察后端nginx日志
在这里插入图片描述

观察后端服务器socket链接
在这里插入图片描述

结论

1、nginx四层代理不能透传IP

2、和7层一样流量经过代理出去。类似lvs的nat模式

keepalive四层

test----nginx1(keepalive vip dr)—nginx1/ngin2

这次在服务器nginx1和nginx2上部署的keepalive nginx1做keepalive的主

keepalived主配置

global_defs {
   router_id nginx1
}
vrrp_instance VI_1 {
    state MASTER
    interface enp0s3
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.103
    }
}
virtual_server 192.168.137.103 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    ###persistence_timeout 0
    protocol TCP
    real_server 192.168.137.101 80 {
        weight 1
        TCP_CHECK{
        connect_timeout 3
        retry 3
        delay_before_retry 3
        }
       }
    real_server 192.168.137.102 80 {
        weight 1
        TCP_CHECK{
        connect_timeout 3
        retry 3
        delay_before_retry 3
        }

    }
}

keepalived备配置

##keepalived配置
global_defs {
   router_id nginx2
}

vrrp_instance VI_1 {
    state BACKUP
    interface enp0s3
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.137.103
    }
}

virtual_server 192.168.137.103 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    ###persistence_timeout 0
    protocol TCP
#此处需要把这个到nginx1的转发注释掉,否则转发会死循环
   # real_server 192.168.137.101 80 {
    #    weight 1
   #     TCP_CHECK{
  #      connect_timeout 3
 #       retry 3
#        delay_before_retry 3
 #       }
 #      }
    real_server 192.168.137.102 80 {
        weight 1
        TCP_CHECK{
        connect_timeout 3
        retry 3
        delay_before_retry 3
        }

    }
}

#路由和ip配置
 ip addr add 192.168.137.103/32  dev lo label lo:2
 route add -host 192.168.137.103 dev lo:2

结论

1、后台realserver需要抑制IP和设置路由

2、备机上的转发规则不能往主机转,否则死循环。因此把备机上的规则只要指向自己。

3、DR模式直接给客户端回包,不需要再经过代理服务器

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506448.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Databend 开源周报第 92 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 在 WHERE 子句中…

算法记录 | Day56 动态规划

583.两个字符串的删除操作 思路&#xff1a; 1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a;dp[i][j]&#xff1a;以i-1为结尾的字符串word1&#xff0c;和以j-1位结尾的字符串word2&#xff0c;想要达到相等&#xff0c;所需要删除元素的最少次数…

别去外包,干了3年,彻底废了......

先说一下自己的情况。大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近3年的测试&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了三年&#xff0c…

存储迁移到vSAN后将oracle rac的共享虚拟磁盘由“精简置备”转换为“厚置备快速置零”格式

在vSAN 6.5.0环境中&#xff0c;将Oracle RAC虚拟机的存储迁移到vSAN数据存储后&#xff0c;共享磁盘在迁移后全部变成了“精简置备”类型&#xff0c;如下所示&#xff1a; 注&#xff1a;从vSAN 6.7 Patch 01开始&#xff0c;vSAN上的Oracle RAC 不再要求共享的 VMDKs为厚置…

【论文阅读】COPA:验证针对中毒攻击的离线强化学习的稳健策略

COPA: Certifying Robust Policies for Offline Reinforcement Learning against Poisoning Attacks 作者&#xff1a;Fan Wu, Linyi Li, Chejian Xu 发表会议&#xff1a;2022ICRL 摘要 目前强化学习完成任务的水平已经和人类相接近&#xff0c;因此研究人员的目光开始转向…

Springboot Security 认证鉴权——使用JSON格式参数登录

在 Spring Security 中&#xff0c;默认的登陆方式是以表单形式进行提交参数的。可以参考前面的几篇文章&#xff0c;但是在前后端分离的项目&#xff0c;前后端都是以 JSON 形式交互的。一般不会使用表单形式提交参数。所以&#xff0c;在 Spring Security 中如果要使用 JSON …

Ansys Lumerical | 单行载流子光电探测器仿真方法

综述 在本例中&#xff0c;我们将研究混合硅基光电探测器的各项性能。单行载流子&#xff08;uni-traveling carrier&#xff0c;UTC&#xff09;光电探测器&#xff08;PD&#xff09;由InP/InGaAs制成&#xff0c;其通过渐变耦合的方式与硅波导相连。在本次仿真中&#xff0c…

04-Docker镜像

镜像 镜像是一种轻量级、可执行的独立软件包&#xff0c;它包含运行某个软件所需的所有内容&#xff0c;我们把应用程序和配置依赖打包好形成一个可交付的运行环境&#xff08;包括代码、运行时需要的库、环境变量和配置文件等&#xff09;&#xff0c;这个打包好的运行环境就是…

上海亚商投顾:沪指午后跳水跌超1% 两市超4000只个股下跌

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 市场情绪 沪指今日冲高回落&#xff0c;盘中一度站上3400点关口&#xff0c;午后跳水跌超1%&#xff0c;深成指、创业板指同…

本科生学数据分析转行,能学会吗?

当然可以&#xff0c;大专及以上都可以学习数据分析转行&#xff0c;本科学历学习更有优势。数据分析职业对于学历方面还是比较看重的&#xff0c;同样技能情况下&#xff0c;学历越高&#xff0c;入行薪资起点也会高个至少一两千&#xff1b;入行以后的升职加薪就看个人的能力…

vue3学习七 toRef 和 toRefs

toRef 和 ref 的作用差不多是一样的&#xff0c;都是可以把一个数据变成响应式的 我们一般使用toRef 或都 toRefs 是用来&#xff0c;简化 template 中的 数据的写法的&#xff0c; 使一个深层次的数据不用书写的时候那么麻烦。 如果不嫌麻烦的话&#xff0c; 这两个api 可以不…

尚硅谷-宋红康-JVM上中下篇完整笔记-JVM中篇

一.Class文件结构 1.概述 1.1 字节码文件的跨平台性 所有的JVM全部遵守Java虚拟机规范:Java SE Specifications&#xff0c;也就是说所有的JV环境都是一样的&#xff0c;这样一来字节码文件可以在各种JVM上运行。 1.2 Java的前端编译器 想要让一个Java程序正确地运行在JVM中&am…

安装Nacos

什么是Nacos 官网中如此说道&#xff1a; Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以…

CSS选择器的常见用法

文章目录 CSS是什么CSS的引入方式内部样式表行内样式表外部样式 选择器基础选择器类选择器id选择器通配符选择器 复合选择器后代选择器 CSS是什么 CSS就是&#xff08;Cascading Style Sheets&#xff09;就是层叠样式表&#xff0c;CSS 能够对网页中元素位置的排版进行像素级…

从项目到技能,软件测试面试高频题总结 (附答案),收割10个offer...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 软件测试面试题简历…

农村供水调度系统在河北某地的建设案例

项目背景 农村饮水安全事关广大农村居民的切身利益&#xff0c;是脱贫攻坚、乡村振兴的基础条件。该县为加快推进农村人饮安全运行管理工作&#xff0c;建立健全运管服务体系&#xff0c;改善当前农村人饮安全运营现状&#xff0c;积极实施城乡供水一体化工程&#xff0c;进一步…

八、使用代码对道路结果进行后处理及iou优化步骤详解

老师又给我画了大饼 没办法 只能按照他们的想法做个尝试 上一篇的方法还没进行下去 就被叫停 又更新了一个新的想法 这里记录一下 我的尝试过程 一、图片膨胀 首先使用代码对道路进行膨胀 这里的代码 import cv2 import numpy as np img cv2.imread(gt_dirname, 0) ke…

李白、高适、杜甫,情义深深,抵不过乱世游离

李白&#xff0c;字太白&#xff0c;是唐朝浪漫主义诗人&#xff0c;被后人誉为“诗仙”&#xff0c;杜甫&#xff0c;字子美&#xff0c;唐代现实主义诗人&#xff0c;李白和杜甫合称为“李杜”。高适&#xff0c;字达夫&#xff0c;唐代诗人。李白&#xff0c;杜甫&#xff0…

JVM学习随笔03——Java堆中new一个对象的步骤

目录 一、进行类加载 二、堆中分配内存 1、怎么输出GC日志&#xff1a; 2、内存分配的两种方式&#xff1a; 3、内存分配过程中并发控制的两种方式&#xff1a; 三、内存空间初始化 四、对象头初始化&#xff08;对象头包含哪些信息&#xff1f;&#xff09; 五、执行构…

【C++】-const对象及成员函数之类和对象中篇完结(中)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 文章目录 前言一、案例的引入二、const对象和成员函数三、取地…