lvs的NAT模式实践

2024-06-09 19:48
文章标签 模式 实践 nat lvs

本文主要是介绍lvs的NAT模式实践,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、环境规划

二、集群结构图

三、实验过程

1、网络环境搭建

2、lvs配置

3、验证


一、环境规划

打算配置四台虚拟机,其中一台作为客户端,一台作为lvs服务器,两台作为RS。

网络环境规划如下:

客户端:IP:192.168.44.6 GW:无 模式:仅主机
lvs:IP:192.168.44.44 模式:仅主机IP:10.10.0.2 模式:NAT
RS1:IP:10.10.0.3 GW:10.10.0.2 模式:NAT
RS2:IP:10.10.0.13 GW:10.10.0.2 模式:NAT

NAT模式配置要点:1.lvs需要配置两个网络,一个负责与客户端通信,一个负责与RS通信。2.RS网关需要指向DIP,才能保证RS与lvs通信。

二、集群结构图

集群结构图如下,为了方便理解,加上了防火墙和交换机。本次配置是在虚拟机上进行,用不到。

三、实验过程

1、网络环境搭建

下面按照规划和架构图进行配置。

由于我使用的无线网,默认的网络设置在ens33里。

(1)客户端网络设置

设置客户端的网络为仅主机模式。

需要设置主机模式的子网IP:

 开启虚拟机,并编辑客户端网络配置:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

重启网络服务,使之生效。

service network restart

 

或者使用如下命令使配置生效:

nmcli connection reload
nmcli connection up ens33

(2)lvs网络设置

lvs虚拟机上需要先下载好ipvsadm,用于配置和管理lvs。

为lvs设置两个网络适配器,一个为NAT负责与RS通信,一个为仅主机,负责与客户端通信。

 设置NAT模式的子网IP和网关IP

无线网连接时,第二个网络适配器对应ens37。分别编辑ens33和ens37(如果没有该配置,需要创建一个配置文件)。

vim /etc/sysconfig/network-scripts/ifcfg-ens33

 配置DIP:

vim /etc/sysconfig/network-scripts/ifcfg-ens37

配置VIP: 

编辑完成后,需要重启网络服务,同上。 

另外,lvs上需要配置ip_forward参数开启路由转发。出于安全考虑,linux中该参数默认禁用,也就是不能进行路由转发,即默认情况下无法将本机一块网卡的数据发往另一块网卡。通过编辑/etc/sysctl.conf可以开启。

vim /etc/sysctl.conf

 使之生效:

sysctl -p

 

(3)RS配置

RS需要提供http服务,先在两个RS上下载好http支持服务。分别安装好,并在各自首页写入不同内容,用以区分调用的那台服务器。

yum -y install httpd;echo `hostname -I` RS1 >/var/www/html/index.html
yum -y install httpd;echo `hostname -I` RS2 >/var/www/html/index.html

开启http服务:

systemctl enable --now httpd
或者
systemctl restart httpd

 

 RS都是使用NAT模式,配置其IP并将网关指向DIP10.10.0.2,然后重启网络服务,使之生效。相关命令同上。

RS的网络配置如下:

RS2的网络配置如下:

2、lvs配置

使用ipvsadm工具配置服务器负载均衡:

#lvs的VIP为192.168.44.44,使用wrr负载均衡算法
ipvsadm -A -t 192.168.44.44:80 -s wrr
#添加RS1到lvs管理列表中,-m表示nat模式
ipvsadm -a -t 192.168.44.44:80 -r 10.10.0.3:80 -m
#添加RS2到lvs管理列表中
ipvsadm -a -t 192.168.44.44:80 -r 10.10.0.13:80 -m

 在这里有几点需要注意:(1).lvs和各RS上seLinux和防火墙都要关闭。否则有可能访问不到。(2).-t参数后跟的是VIP,不要配成DIP了。

3、验证

在客户端访问VIP,发现可以正确地负载到不同的RS上。

当然,在网页上输入VIP进行访问也是可以的。

   

NAT模式支持端口映射,这里将10.10.0.3的端口改为8088进行验证。

(1)修改ipvs调用RS1的端口,此处不能用-e参数直接修改。需要先删除再重新加进来。

#先删除
ipvsadm -d -t 192.168.44.44:80 -r 10.10.0.3:80
#之后重新添加
ipvsadm -a -t 192.168.44.44:80 -r 10.10.0.3:8088

此时,由于RS1上还没有换成8088的端口,客户端调用到RS1时会失败。

  

 (2)编辑RS1上的httpd配置文件/etc/httpd/conf/httpd.conf,将监听端口换成8088。

 

(3)重启RS1上的http服务

使用systemctl restart httpd或者service httpd restart都可以。

重启后,客户端可以正常访问RS1,端口映射正常。 

这篇关于lvs的NAT模式实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046137

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

Spring WebFlux 与 WebClient 使用指南及最佳实践

《SpringWebFlux与WebClient使用指南及最佳实践》WebClient是SpringWebFlux模块提供的非阻塞、响应式HTTP客户端,基于ProjectReactor实现,... 目录Spring WebFlux 与 WebClient 使用指南1. WebClient 概述2. 核心依

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Spring事务传播机制最佳实践

《Spring事务传播机制最佳实践》Spring的事务传播机制为我们提供了优雅的解决方案,本文将带您深入理解这一机制,掌握不同场景下的最佳实践,感兴趣的朋友一起看看吧... 目录1. 什么是事务传播行为2. Spring支持的七种事务传播行为2.1 REQUIRED(默认)2.2 SUPPORTS2

Java设计模式---迭代器模式(Iterator)解读

《Java设计模式---迭代器模式(Iterator)解读》:本文主要介绍Java设计模式---迭代器模式(Iterator),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录1、迭代器(Iterator)1.1、结构1.2、常用方法1.3、本质1、解耦集合与遍历逻辑2、统一

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

深度解析Spring AOP @Aspect 原理、实战与最佳实践教程

《深度解析SpringAOP@Aspect原理、实战与最佳实践教程》文章系统讲解了SpringAOP核心概念、实现方式及原理,涵盖横切关注点分离、代理机制(JDK/CGLIB)、切入点类型、性能... 目录1. @ASPect 核心概念1.1 AOP 编程范式1.2 @Aspect 关键特性2. 完整代码实