配置lvs(DR)

配置lvs(DR)

主机名主机IP地址
lvs1lvs192.168.88.38
web1nginx192.168.88.10
web2nginx192.168.88.20

lvs1上操作

#安装ipvsadm
[root@lvs1 ~]# yum -y install ipvsadm
[root@lvs1 ~]# ipvsadm -A -t 192.168.88.100:80 -s rr
[root@lvs1 ~]# ipvsadm -a -t 192.168.88.100:80 -r 192.168.88.10:80 -g 
[root@lvs1 ~]# ipvsadm -a -t 192.168.88.100:80 -r 192.168.88.20:80 -g
[root@lvs1 ~]# ip addr add 192.168.88.100/24 dev ens37
[root@lvs1 ~]# ip a
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:48:b3:7b brd ff:ff:ff:ff:ff:ffinet 192.168.88.38/24 brd 192.168.88.255 scope global noprefixroute ens37valid_lft forever preferred_lft foreverinet 192.168.88.100/24 scope global secondary ens37valid_lft forever preferred_lft foreverinet6 fe80::dbb5:b534:a44a:a21/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@lvs1 ~]#  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.88.100:80 rr-> 192.168.88.10:80             Route   1      1          0         -> 192.168.88.20:80             Route   1      1          0    

web1,web2上操作

[root@web1 ~]# vim /etc/yum.repos.d/nginx.repo
[root@web1 ~]# cat /etc/yum.repos.d/nginx.repo 
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[root@web1 ~]# yum install -y nginx
[root@web1 ~]# systemctl enable nginx --now
#设置成开机自启
[root@web ~]# cat /etc/nginx/conf.d/www.conf server {listen        80;server_name   localhost;location   / {root  /opt/;index index.php index.html;}location ~ \.php$ {root /html/www;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_pass  127.0.0.1:9000;include fastcgi_params;}
}
这里把nginx的网页根目录修改成了/opt
[root@web ~]# cat /opt/index.html 
test1
[root@web2 ~]# cat /opt/index.html 
test2
[root@web ~]# ip addr add 192.168.88.100/24 dev ens37
[root@web2 ~]# ip addr add 192.168.88.100/24 dev ens37
[root@web ~]#  ip a
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:1d:db:1e brd ff:ff:ff:ff:ff:ffinet 192.168.88.10/24 brd 192.168.88.255 scope global noprefixroute ens37valid_lft forever preferred_lft foreverinet 192.168.88.100/24 scope global secondary ens37valid_lft forever preferred_lft foreverinet6 fe80::e5ba:c25b:cc86:2c12/64 scope link noprefixroute valid_lft forever preferred_lft forever
[root@web2 ~]# ip a
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:a5:68:f6 brd ff:ff:ff:ff:ff:ffinet 192.168.88.20/24 brd 192.168.88.255 scope global noprefixroute ens37valid_lft forever preferred_lft foreverinet 192.168.88.100/24 scope global secondary ens37valid_lft forever preferred_lft foreverinet6 fe80::7de0:34dc:644b:46b5/64 scope link noprefixroute valid_lft forever preferred_lft forever

在真机上测试:**curl 192.168.88.100 **在真机上测试,发现客户端发出请求,通过调度器访问web资源的时候,会一直向同一个web服务器(server3)要资源,并 没有实现轮询

注意:此时客户端访问资源有时候轮询,有时候不轮询,出现这样的现象是为什么呢?
因为DR模式是通过 修改MAC地址 进行访问的,调度器和两台web服务器上都有192.168.88.100这个入口地址VIP,所以客户端在请求的时候,三台虚拟机都有可能回复请求,客户端会记录回复他的那台虚拟机的mac地址,所以下次在访问的时候他会找记录过的mac地址对应的虚拟机(有可能是真实的服务器)直接访问,这在现实中是 不允许 的,因为 如果请求全部发往后端某一台真正的服务器的话,这台服务器会因为压力过大而宕机。而且,直接访问后端的真正的服务器,我们的lvs1(LVS调度器)也就没有起到作用,并没有实现真正意义上的负载均衡,这也是DR模式的一个缺点。这就类似于DDOS攻击,有可能会导致后端服务器瘫痪,造成用户不能正常访问资源。
现在解决DR模式不轮询的问题:

在 web1,web2上,安装针对MAC地址的防火墙管理工具 yum install -y arptables

arptables:用户空间工具,用来 管理 linux内核中的ARP规则表. 这些规则用来检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,DROP等
arptables -nL 可查看设置的访问规则
man arptable 可查看设置规则
设置规则:

[root@web2 ~]# yum install -y arptables
[root@web2 ~]# arptables -A INPUT -d 192.168.88.100 -j DROP
[root@web2 ~]# arptables -A OUTPUT -s 192.168.88.100 -j mangle --mangle-ip-s 192.168.88.20
[root@web2 ~]#  arptables-save > /etc/sysconfig/arptables
[root@web2 ~]#  systemctl restart arptables.service
[root@web2 ~]# cat /etc/sysconfig/arptables
*filter
:INPUT ACCEPT
:OUTPUT ACCEPT
:FORWARD ACCEPT
-A INPUT -j DROP -d 192.168.88.100 
-A OUTPUT -j mangle -s 192.168.88.100 --mangle-ip-s 192.168.88.20 
web1节点也做同样步骤

在真机上测试:curl 192.168.88.100 实现了轮询

[root@ceph01 ~]# curl 192.168.88.100
test2
[root@ceph01 ~]# curl 192.168.88.100
test1
[root@ceph01 ~]# curl 192.168.88.100
test2
[root@ceph01 ~]# curl 192.168.88.100
test1
[root@ceph01 ~]# curl 192.168.88.100
test2
[root@ceph01 ~]# curl 192.168.88.100
test1
[root@ceph01 ~]# curl 192.168.88.100
test2
[root@ceph01 ~]# curl 192.168.88.100
test1
[root@ceph01 ~]# curl 192.168.88.100
test2
[root@ceph01 ~]# curl 192.168.88.100
test1

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

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

相关文章

【记录搭建elk 如何在linux共享文件】

『如何在linux共享文件 &#xff0c;搭建elk直接看第二部分』 新增用户a b c adduser a adduser b adduser c新增用户组 A groupadd developteam将用户a b c 加入 组 usermod -a -G developteam hadoop usermod -a -G developteam hbase usermod -a -G developteam hive设置um…

【学习笔记】云原生的关键技术初步

云原生&#xff08;Cloud Native&#xff09;作为云计算领域的一种新型技术体系&#xff0c;旨在提高应用程序的可靠性、性能和响应速度。它通过整合容器、微服务、DevOps等一系列关键技术&#xff0c;使得应用从设计开发到部署上线和运营维护的各个环节都基于云平台构建&#…

【GPT-SOVITS-06】特征工程-HuBert原理

说明&#xff1a;该系列文章从本人知乎账号迁入&#xff0c;主要原因是知乎图片附件过于模糊。 知乎专栏地址&#xff1a; 语音生成专栏 系列文章地址&#xff1a; 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…

microk8s使用本地私服registry的镜像http协议

开发环境为了能部署服务到microk8s&#xff0c;我们开启了一个本地私库&#xff0c;地址为&#xff1a;http://localhost:5000&#xff0c;那么如何在microk8s中能拉取本地私库中的镜像呢? 直接部署的话&#xff0c;microk8s会用https协议去拉取镜像&#xff0c;所以必须要配置…

springboot/ssm电子印章管理系统Java印章审批信息管理系统web

springboot/ssm电子印章管理系统Java印章审批信息管理系统web 基于springboot(可改ssm)vue项目 开发语言&#xff1a;Java 框架&#xff1a;springboot/可改ssm vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;…

Unity游戏项目接广告

Unity游戏项目中接入GoogleAdMob 先看效果图 接入测试横幅广告&#xff0c;代码如下&#xff1a; using System.Collections; using System.Collections.Generic; using UnityEngine; using GoogleMobileAds.Api; using System;public class GoogleAdMobManager : MonoBehavi…

面试算法-38-最小覆盖子串

题目 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串&#xff0c;则返回空字符串 “” 。 注意&#xff1a; 对于 t 中重复字符&#xff0c;我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。 如果…

Godot 学习笔记(1):环境配置

文章目录 前言Godot 环境配置相关链接最简单的按钮项目Sence打包最简单的按钮事件 总结 前言 我从小就有个梦想&#xff0c;我想做游戏。虽然我大学的时候选择了计算机&#xff0c;工作也是计算机&#xff0c;但是我一直没有时间去学游戏引擎。原因有二&#xff1a;第一&#…

问题解决:关于tomcat无法连接问题的解决

安装tomcat并配置环境变量 下载tomcat并安装 首先去tomcat官方网站,下载tomcat 进入tomcat官方网站之后&#xff0c;查看jdk应该对应的tomcat版本&#xff0c;点击图示的按钮 点击完毕之后&#xff0c;可以看到下述的页面 图中的表格可以看到对应的jdk版本与tomcat的版本之…

docker基础用法-2

文章目录 什么是dockerOCI&OCFOCIOCF docker架构docker镜像与镜像仓库docker对象安装及使用dockerdocker安装docker加速docker常用操作docker event state防火墙状态及规则 什么是docker docker中的容器&#xff1a; lxc --> libcontainer --> runC docker最开始是…

Qt for Mac阻止MacOS系统休眠

Qt开发的应用程序如果电脑休眠了会影响软件的使用&#xff0c;因此在软件的使用过程中需要防止电脑休眠&#xff0c;在Win上有专门的API进行处理&#xff0c;在Mac上也必需使用Mac平台自身的API&#xff0c;本篇介绍在Mac平台下使用Qt阻止Mac系统休眠。 要调用Mac系统的API&am…

关机恶搞小程序的开发程序

关机恶搞小程序的开发程序 目录 关机恶搞小程序的开发程序 一、引言 二、开发思路 三、代码实现 1. 界面设计 2. 关机动画 3. 关机逻辑 4. 恢复功能 5. 异常处理 四、相关术语解释 一、引言 关机恶搞小程序是一种基于C#语言开发的应用程序&#xff0c;旨在通过一些有…

病毒物种注释:多方案

Blastn比对IMG/VR 下载IMG/VR数据库&#xff08;见下面的教程&#xff09; Linux 下载 JGI 的 IMG_VR-CSDN博客 安装Blast&#xff08;这个太简单了&#xff09; gunzip IMGVR_all_nucleotides-high_confidence.fna.gz makeblastdb -in img_vr.fasta -dbtype nucl -out img…

如何用Selenium通过Xpath,精准定位到“多个相同属性值以及多个相同元素”中的目标属性值

前言 本文是该专栏的第21篇,后面会持续分享python爬虫干货知识,记得关注。 相信很多同学,都有使用selenium来写爬虫项目或者自动化页面操作项目。同样,也相信很多同学在使用selenium来定位目标元素的时候,或多或少遇见到这样的情况,就是用Xpath定位目标元素的时候,页面…

html5cssjs代码 023 公制计量单位进位与换算表

html5&css&js代码 023 公制计量单位进位与换算表 一、代码二、解释 这段HTML代码定义了一个网页&#xff0c;用于展示公制计量单位的进位与换算表。 一、代码 <!DOCTYPE html> <html lang"zh-cn"> <head><meta charset"utf-8&quo…

新!PCA+DBO+K-means聚类,蜣螂优化算法DBO优化K-means,适合学习,也适合发paper。

PCADBOK-means聚类&#xff0c;蜣螂优化算法DBO优化K-means&#xff0c;适合学习&#xff0c;也适合发paper。 一、 蜣螂优化算法 摘要&#xff1a;受蜣螂滚球、跳舞、觅食、偷窃和繁殖等行为的启发&#xff0c;提出了一种新的基于种群的优化算法(Dung Beetle Optimizer, DBO…

【5G NR 协议解读】3GPP TS 38.212 (R18) 复用和信道编码(一)

前言 本文基于3GPP TS 38.212 (R18) 复用和信道编码协议。 本文档规定了5G NR的编码、多路复用和物理信道映射。 4 映射到物理信道 4.1 上行链路 表4.1-1规定了上行传输信道到其对应物理信道的映射。表4.1-2规定了上行控制信道信息到其对应物理信道的映射。 Table 4.1-1 T…

微服务的无状态、版本控制向后兼容、流量整型

如何理解微服务的无状态化&#xff1a; 单机Session 如果代码逻辑依赖SessIon中的某个kv 就是有状态的 如果将Session中的kv放在 redis 就成了无状态服务 应用无状态 在线服务扩容或者迁移时 业务不受影响 配置管理有状态&#xff0c; 不同配置文件参数值不同 如何通过接口版…

【开源】SpringBoot框架开发就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

数学建模博弈理论与实践国防科大版

目录 4.博弈模型 4.1.Nash平衡点和帕雷托最优 4.2.囚徒困境 4.3.智猪博弈 4.4.脏脸之谜 5.军事问题数学建模 5.1.兰彻斯特作战模型 5.1.1.一般战斗模型 5.1.2游击战模型 5.1.3.混合战模型 5.2.硫磺岛战役 4.博弈模型 本讲介绍博弈模型&#xff0c;包括博弈论&#x…