lvs-nat的https模式设置

news2024/11/24 8:04:33

前言:LVS工作模式分为NAT模式、TUN模式、以及DR模式。在lvs服务器上,设置虚拟ip并做负载均衡使用。使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层(Loader Balancer),中间的服务器群组层,用Server Array表示,最底层的数据共享存储层,用Shared Storage表示。在用户看来所有的应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

官方站点是:http://www.linuxvirtualserver.org

ipvsadm:用户空间的命令行工具,用于管理集群服务器

一、lvs的基本语法和三种模式

NAT模式原理:

这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端

DR模式原理:

DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

TUN模式(隧道模式)

LVS/TUN的工作流程图如下所示,它和NAT模式不同的是,它在LB和RS之间的传输不用改写IP地址。而是把客户请求包封装在一个IP tunnel里面,然后发送给RS节点服务器,节点服务器接收到之后解开IP tunnel后,进行响应处理。并且直接把包通过自己的外网地址发送给客户不用经过LB服务器。

-A 添加一个集群服务

-E 修改已添加的集群服务

-D 删除虚拟服务

-C 清空整个表

-R 从标准输入重载

-S 保存值到标准输出

-a 向指定的client server中添加real server

-e 修改RS

-d 删除真实服务

-L/-l  列出表

-t 服务器地址是host[:port],tcp协议

-u 服务器地址是host[:port],udp协议

-r 服务器地址主机和端口,只支持端口映射的LVS类型才允许此处使用和集群服务中的不同端口

-g dr(direct routing)(default)模式

-i tun模式

-m nat模式

-w 实际服务器容器,指定权重

-n  数字格式显示ip和port,注意-n只能写在-L之后

语法:

ipvsadm  -A -t ip:port -s rr

ipvsadm  -a  -t  ip:port  -r   ip:port  -g/m/i

二、LVS调度算法十种

2.1静态调度算法(4种)

  1. 轮询调度rr

均等的对待每一台服务器,不管服务器上的实际连接数和系统负载

  1. 加权论调wrr

调度器可以自动问询真实服务器的负载情况,并动态调整权值

3源地址散列调度算法 sh
与目标地址散列调度算法类似,但它是根据源地址散列算法进行静态分配固定的服务器资源。

4目标地址散列调度算法 dh
该算法是根据目标 IP 地址通过散列函数将目标 IP 与服务器建立映射关系,出现服务器不可用或负载过高的情况下,发往该目标 IP 的请求会固定发给该服务器。

2.2动态调度算法(6种)

5最少链接 lc
动态地将网络请求调度到已建立的连接数最少的服务器上
如果集群真实的服务器具有相近的系统性能,采用该算法可以较好的实现负载均衡

6 加权最少链接 wlc
调度器可以自动问询真实服务器的负载情况,并动态调整权值
带权重的谁不干活就给谁分配,机器配置好的权重高

7 基于局部性的最少连接调度算法 lblc
这个算法是请求数据包的目标 IP 地址的一种调度算法,该算法先根据请求的目标 IP 地址寻找最近的该目标 IP 地址所有使用的服务器,如果这台服务器依然可用,并且有能力处理该请求,调度器会尽量选择相同的服务器,否则会继续选择其它可行的服务器

8 复杂的基于局部性最少的连接算法 lblcr
记录的不是要给目标 IP 与一台服务器之间的连接记录,它会维护一个目标 IP 到一组服务器之间的映射关系,防止单点服务器负载过高。

9 最少期望延迟 sed
不考虑非活动链接,谁的权重大,优先选择权重大的服务器来接收请求,但权重大的机器会比较忙

10 永不排队 nq
无需队列,如果有realserver的连接数为0就直接分配过去

三、实验

1、实验环境

四台主机,一台dr设置虚拟IP的控制端口,两台做轮循的主机,还要一台客户端访问,看实验结果。关掉防火墙和selinux,所以网关相同,删掉dns。

dr做虚拟ip和CA机构

rs1和rs2ip为192.168.121.30和50

dr为192.168.121.40

rs1和rs2做真实IP,负载均衡的ip

3.1、设置CA证书机构

[root@dr ~]# mkdir -p /etc/pki/CA/private/     

创建私钥的目录

[root@dr ~]# cd /etc/pki/CA/

[root@dr CA]# (umask 077;openssl genrsa -out private/cakey.pem 2024)

创建证书文件

[root@dr CA]# openssl rsa -in private/cakey.pem -pubout 

查看CA证书的私钥

[root@dr CA]#  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 1024
用私钥生成双方要签署的合同cacert.pem,-x509加密,-new生成证书,-days证书有效的天数

记住填写的内容,省份国家,单位和邮箱,双方要一致

[root@dr CA]# touch index.txt

[root@dr CA]# echo 02 > serial

填写一个序列号

3.2设置rs1CA客户端

[root@rs1 ~]# yum -y install mod_ssl httpd

[root@rs1 ~]# mkdir /etc/httpd/ssl

创建httpd下面的ssl协议文件
[root@rs1 ~]#  cd /etc/httpd/ssl/
[root@rs1 ssl]# (umask 077;openssl genrsa -out httpd.key 2048)

生成httpd客户端的私钥,后面天数是2048天,权限是600
[root@rs1 ssl]#  openssl req -new -key httpd.key -days 1024 -out httpd.csr

内容与CA设置的一致

最后两个敲回车,不设置密码

-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:AH
Locality Name (eg, city) [Default City]:AQ
Organization Name (eg, company) [Default Company Ltd]:HY
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:laiyingx
Email Address []:laiyingx.example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
 

[root@rs1 ssl]# ls
httpd.csr  httpd.key
将httpd客户端签署的证书发给CA机构。root目录下

[root@rs1 ssl]# scp httpd.csr root@192.168.121.40:/root/

[root@dr ~]# mkdir /etc/pki/CA/newcerts

[root@dr CA]# cd
[root@dr ~]# openssl ca -in httpd.csr -out httpd.crt -days 1024

输入y

双方签署完成,生成最后的证书httpd.crt,需要发给客户端192.168.121.50rs1

[root@dr ~]# scp httpd.crt root@192.168.121.50:/etc/httpd/ssl

双方签署完成的httpd.crt证书,双方保留

[root@dr ~]#  scp /etc/pki/CA/cacert.pem root@192.168.121.50:/etc/httpd/ssl

将官方可以给别人看的证书发给客户端供用户使用查看

3.3rs2的客户端CA设置ssl

[root@dr2 ~]# mkdir /etc/httpd/ssl

创建存放ssl文件的目录

因为两个是一样的网站,内容也是一样,做负载均衡的,所以使用同一份CA证书就行

将rs1的相关文件发给rs2的ssl目录下

[root@rs1 ssl]# scp cacert.pem httpd.crt httpd.key root@192.168.121.30:/etc/httpd/ssl

更改三个地方,两个路径,一个打开再更改路径

[root@rs1 ~]# vim /etc/httpd/conf.d/ssl.conf   两台都要改

SSLCertificateFile /etc/httpd/ssl/httpd.crt

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key

SSLCACertificateFile /etc/httpd/ssl/cacert.pem

[root@rs2 ~]# vim /etc/httpd/conf.d/ssl.conf 

[root@rs1 ~]# systemctl restart httpd
[root@rs2 ~]# systemctl restart httpd

两台都重启

3.4测试https

关掉rs1/2的selinux和防火墙,再客户端访问成功

[root@client ~]# curl -k https://192.168.121.30
rs2
[root@client ~]# curl -k https://192.168.121.50
rs1

四、lvs的NAT模式

4.1添加一块网卡

需要在dr添加一块网卡,因为nat模式需要使用,也是三种模式中,唯一需要额外添加一块网卡的

#ip a

查看网卡信息,这块网卡是20网段,第二块网卡一定要设置为仅主机模式,

与121网段不一样。

[root@dr ~]# nmcli connection delete Wired\ connection\ 1 

删除原来ens192的,名字太长

[root@dr ~]# nmcli connection add con-name ens192 ifname ens192 type ethernet

添加一块网卡名字为ens192,设备网卡名为ens192,类型以太网

root@dr ~]# nmcli connection modify ens192 ipv4.addresses 192.168.20.66/24 ipv4.method manual connection.autoconnect yes

设置IP,重启网卡
[root@dr ~]# nmcli connection down ens192 
[root@dr ~]# nmcli connection up ens192 

4.2、添加lvs的使用规则,打开路由转发
 

[root@dr ~]# vim /etc/sysctl.conf 

最后写上下面 一行,开启路由转发,不同网段可以通信

net.ipv4.ip_forward = 1
[root@dr ~]# sysctl -p    //执行运行,可以看到写上的内容
net.ipv4.ip_forward = 1

[root@dr ~]# yum -y install ipvsadm
安装ipvsadm命令

[root@dr ~]# ipvsadm -A -t 192.168.20.66:443 -s rr
[root@dr ~]#  ipvsadm -a -t 192.168.20.66:443 -r 192.168.121.50 -m
[root@dr ~]#  ipvsadm -a -t 192.168.20.66:443 -r 192.168.121.30 -m
[root@dr ~]#  ipvsadm -Ln
[root@dr ~]#  ipvsadm -Sn > /etc/sysconfig/ipvsadm

[root@dr ~]# systemctl restart ipvsadm.service

[root@rs1 html]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@rs1 html]# systemctl restart NetworkManager
[root@rs1 html]# nmcli connection up ens160 

删除dns,网关统一

[root@dr2 ~]# vim /etc/NetworkManager/system-connections/ens160.nmconnection 
[root@dr2 ~]# systemctl restart NetworkManager
[root@dr2 ~]# nmcli connection up ens160 

不知道为什么转接不了,不写了,好烦,五条命令的事转接不了。写不下去了,恢复快照,下一个实验了

五、lvs的DR模式

5.1实验环境

关掉防火墙和selinux,删掉dns,网关一样,下载好net-tools和ipvfadm工具和httpd

因为是mac地址更改,所以这里实验lo接口,只需要一张网卡在dr上,就是三个mac地址转来转去,焯,我真的烦了

5.2设置网页,看效果

[root@rs1 ~]#  echo "RS1" > /var/www/html/index.html
[root@rs1 ~]# yum -y install httpd

两个真实ip设置网页看效果

[root@rs2 ~]#  echo "RS2" > /var/www/html/index.html
[root@rs2 ~]# yum -y install httpd

5.2设置虚拟ip,删除dns,所以网关改为一致相同

[root@dr ~]# yum -y install ipvsadm

[root@dr ~]# yum -y install net-tools 

[root@rs1~]# yum -y install net-tools 

[root@rs2~]# yum -y install net-tools 

# vim /etc/NetworkManager/system-connections/ens160.nmconnection 三台的dns都要删除,网关改为相同

[root@dr ~]# yum -y install ipvsadm

[root@dr ~]# yum -y install net-tools   ,在dr,也就是设置虚拟地址vip的主机上安装网络工具包

[root@dr ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up

broadcast是回环地址127.0.0.1,设置自己的ip就行,虚拟地址是192.168.121.66,都是32位子网掩码,因为广播,32位子网掩码区分更细致的IP地址。自己想吧,不想打字了

5.3、s1和rs2配置arp内核参数

arp协议为mac地址转化为ip的一种协议叫arp
[root@rs1 ~]# vim /etc/sysctl.conf 
[root@rs1 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

[root@rs2 ~]# vim /etc/sysctl.conf 
[root@rs2 ~]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#将对应网卡设置为只回应目标IP为自身接口地址的ARP请求

net.ipv4.conf.all.arp_ignore = 1

#将ARP请求的源IP设置为所有接口的IP,也就是RIP

net.ipv4.conf.all.arp_announce = 2

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

5.4RS上配置VIP

一定要先配置好内核参数,再配置VIP,如果先配置VIP,VIP配置好后会立即通告给所有人,而修改内核参数就是为了不通告。

#yum -y install net-tools

[root@rs1 ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up
[root@rs1 ~]# route add -host 192.168.121.50/32 dev lo

[root@rs2 ~]# ifconfig lo 192.168.121.50/32 broadcast 192.168.121.50 netmask 255.255.255.255 up
[root@rs2 ~]# route add -host 192.168.121.50/32 dev lo

添加路由


[root@dr ~]#  ipvsadm -A -t 192.168.121.50:80 -s rr

-A添加集群,-t是指tcp协议,后面接虚拟地址vip的80端口,-s指定类型为轮询
[root@dr ~]#  ipvsadm -a -t 192.168.121.50:80  -r  192.168.121.20:80 -g

-a添加IP地址,真实的。-t为指定为tcp协议,后面接虚拟ip和端口。-r添加真实ip和接口,-g指定模式为dr模式
[root@dr ~]#  ipvsadm -a -t 192.168.121.50:80  -r  192.168.121.30:80 -g
[root@dr ~]#  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.121.66:80 rr
  -> 192.168.121.20:80            Route   1      0          0         
  -> 192.168.121.30:80            Route   1      0          0   

[root@dr ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm

保存刚修改的内容

#ipvsadm -C  //大写的c,清除所有配置

[root@dr ~]# systemctl restart ipvsadm

[root@dr ~]# systemctl enable ipvsadm


 

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

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

相关文章

NCH DrawPad Pro for Mac/Win:强大的图像编辑处理软件

NCH DrawPad Pro for Mac/Win是一款功能全面的图像编辑和设计软件,专为Mac和Windows用户设计。它不仅适用于专业设计师,也深受业余爱好者和创意工作者的喜爱。DrawPad Pro凭借其丰富的绘图工具、强大的编辑功能和便捷的模板库,为用户提供了卓…

书生大模型实战营基础(3)——LangGPT结构化提示词编写实践

目录 0、基础知识 1、准备 1.1环境配置 1.2创建项目路径 2、模型部署 2.1获取模型 2.2部署模型为OpenAI server 3.提示工程(Prompt Engineering) 3.1 什么是Prompt 3.2 什么是提示工程 3.3 提示设计框架 4、任务 4.1利用LangGPT优化提示词 0、基础知识 Prompt&…

在Ubuntu系统上使用Docker部署.NET 6程序

基础用法 1. 安装Docker 首先,确保你的Ubuntu系统上安装了Docker。可以通过以下命令安装Docker: sudo apt update sudo apt install docker.io 安装完成后,启动Docker并设置为开机自启: sudo systemctl start docker sudo sys…

站长神器,AI批量生成原创文章工具免费用还能自动发布到站点

今天给大家带来的一款站长神器软件,一个专业AI原创文章批量自动生成工具,支持多种CMS,站群内容一键式管理分发,支持多任务创建,自动根据文章内容关联配图,每条任务支持独立AI模型、独立创作风格、独立写作模…

一体化运维管理软件在大中型机房管理中的挑战与应对方案

随着信息化技术的不断发展,大、中型机房作为企业数据处理与存储的核心场所,其运维管理的复杂性和挑战性也日益增加。面对日益增长的运维需求和不断变化的业务环境,传统的手工运维方式已经无法满足现代机房管理的要求。因此,一体化…

Vulnhub靶场 | DC系列 - DC5

文章目录 DC-5信息收集扫描靶机的IP地址扫描开放的端口访问80端口 文件包含漏洞渗透过程向日志中写入一句话木马使用蚁剑连接webshell在 /tmp下新建文件 一句话木马(留个后门)使用蚁剑虚拟终端反弹shell到kali在kali开启监听使用蚁剑虚拟终端反弹shell到…

OpenCV库的一些实用代码示例

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频分析功能。除了你提到的灰度转换、图像反转、高斯滤波和图像保存等基本操作外,OpenCV还包含许多其他功能&#xff…

linux Vim的安装和基本使用

Vim 什么是 Vim Vim是一个高度可定制的文本编辑器,源自Unix系统的vi编辑器。它被广泛用于类Unix系统中,包括Linux、Mac OS和Windows平台。Vim特别受到程序员的青睐,因为它提供了丰富的编程功能,如代码补全、编译及错误跳转等。这…

Apache Struts2开发模式漏洞解析与修复

1.引言 在现代Web应用开发中,Apache Struts2是一个广泛使用的MVC框架。然而,当一些开发方便的功能错用在生产环境时,会导致严重的安全隐患。本文将详细解析Struts2开发模式(devMode)带来的安全风险及其修复方法。 2.…

vim常用快捷键问答

vim的光标位置操作快捷键有哪些?怎样记忆它们? 在 Vim 中,光标位置的操作快捷键非常重要,可以帮助你更高效地编辑文本。下面是一些常用的光标位置操作快捷键: 基本移动 h:光标左移一个字符j:光…

【吊打面试官系列-Redis面试题】Redis 是单进程单线程的?

大家好,我是锋哥。今天分享关于 【Redis 是单进程单线程的?】面试题,希望对大家有帮助; Redis 是单进程单线程的? Redis 是单进程单线程的,redis 利用队列技术将并发访问变为串行访问,消除了传统…

Linux-vim

文章目录 vi和vimvim的基本概念vim的基本操作vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作更改跳至指定的行 vim末行模式命令集列出行号跳到文件中的某一行查找字符保存文件推出vim vi和vim vi/vim的区别简单点来说,…

【初学人工智能原理】【14】机器学习:最后一节课也是第一节课(完结)

前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 随着…

制作 Docker 镜像

目录 1 docker镜像介绍 1.1 docker的镜像结构 1.2 镜像运行的基本原理 1.3 镜像获得方式 2 构建 docker 镜像 Dockerfile 2.1 Dockerfile 基础参数介绍 2.2 实现参数功能示例 2.2.1 FROM LABEL COPY 2.2.2 ADD 2.2.3 ENV 和 CMD与ENTRYPOINT 2.2.3.1 CMD的替代性 2.2.3.2 EN…

使用3D数字人做视频

用3D数字人做视频 漂亮精致 3D数字人定制4 动作流畅、音乐上的表现 thatgirl 支持私人定制模型 你愿意捐献所有的财产吗 想搭建这样的数字人的请和我们联系 使用3D数字人做视频https://www.jinshuangshi.com/forum.php?modviewthread&tid248 (出处: 金双石科技)

利用session.upload_progress执行文件包含

1.session.upload_progress的作用: session.upload_progress最初是PHP为上传进度条设计的一个功能,在上传文件较大的情况下,PHP将进行流式上传,并将进度信息放在Session中(包含用户可控的值),即…

Ethercat设备数据 转IEC61850项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 5 设置网关采集ETHERCAT数据 5 6 用IEC61850协议转发数据 7 7 网关使用多个逻辑设备和逻辑节点的方法 9 8 安装NPCAP 10 9 案例总结 11 1 案例说明 设置网关采集EtherCAT设备数据把采集的数据转成IEC61850协议转发给其…

08:Logic软件原理图添加元件

1.导入外部库文件 2.添加元件

Veeam Data Platform 12.2 发布下载,新增功能概览

Veeam Data Platform 12.2 发布下载,新增功能概览 面向混合云和多云的 云端、虚拟和物理环境 备份和恢复 监控和分析 恢复编排 请访问原文链接:https://sysin.org/blog/veeam-data-platform/,查看最新版。原创作品,转载请保留出…

飞致云开源社区月度动态报告(2024年8月)

自2023年6月起,中国领先的开源软件公司FIT2CLOUD飞致云以月度为单位发布《飞致云开源社区月度动态报告》,旨在向广大社区用户同步飞致云旗下系列开源软件的发展情况,以及当月主要的产品新版本发布、社区运营成果等相关信息。 飞致云开源大屏…