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

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

C++中的解释器模式实例详解

《C++中的解释器模式实例详解》这篇文章总结了C++标准库中的算法分类,还介绍了sort和stable_sort的区别,以及remove和erase的结合使用,结合实例代码给大家介绍的非常详细,感兴趣... 目录1、非修改序列算法1.1 find 和 find_if1.2 count 和 count_if1

Redis中群集三种模式的实现

《Redis中群集三种模式的实现》Redis群集有三种模式,分别是主从同步/复制、哨兵模式、Cluster,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1. Redis三种模式概述2、Redis 主从复制2.1 主从复制的作用2.2 主从复制流程2

深入理解MySQL流模式

《深入理解MySQL流模式》MySQL的Binlog流模式是一种实时读取二进制日志的技术,允许下游系统几乎无延迟地获取数据库变更事件,适用于需要极低延迟复制的场景,感兴趣的可以了解一下... 目录核心概念一句话总结1. 背景知识:什么是 Binlog?2. 传统方式 vs. 流模式传统文件方式 (非流式)流

MySQL存储过程实践(in、out、inout)

《MySQL存储过程实践(in、out、inout)》文章介绍了数据库中的存储过程,包括其定义、优缺点、性能调校与撰写,以及创建和调用方法,还详细说明了存储过程的参数类型,包括IN、OUT和INOUT... 目录简述存储过程存储过程的优缺点优点缺点存储过程的创建和调用mysql 存储过程中的关键语法案例存储

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

springboot依靠security实现digest认证的实践

《springboot依靠security实现digest认证的实践》HTTP摘要认证通过加密参数(如nonce、response)验证身份,避免明文传输,但存在密码存储风险,相比基本认证更安全,却因... 目录概述参数Demopom.XML依赖Digest1Application.JavaMyPasswo