| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 系统运维 -> [高可用系列|LVS]LVS NAT模型详解 -> 正文阅读 |
|
|
[系统运维][高可用系列|LVS]LVS NAT模型详解 |
背景
LVS? NAT模型介绍?????????Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器。地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址。外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点。优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的数据包经过调度器,导致调度器压力过大。 ?
??数据包流转的过程如上图所示: (1)当用户请求到达DirectorServer,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP (2) PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链。 (3) IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP ,在这个过程完成了目标IP的转换。 (4) POSTROUTING链通过选路,将数据包发送给Real Server。 (5) Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP 。 (6) Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP。 ?补充: (1)lvs-nat的本质是多目标ip的DNAT,通过将请求报文中的目标地址和目标端口修改为后端real server的ip和port (2)DIP和Rip建议在同一网段(也可以不在), (3)请求报文和相应报文必须经过lvs服务器,因此lvs就会成为该架构的瓶颈 (4)支持端口映射可以更改请求报文的目标端口 (5)lvs服务器必须是linux系统,real server可以为任意os系统 LVS-NAT 实验?
|
| 设备 | ip | 网关 |
| Client | 10.10.10.128/24 | - |
| Route-link1 | 10.10.10.129/24 | - |
| Route-link2 | 192.168.10.10/24 | - |
| LVS-vip | 192.168.10.100/24 | 192.168.10.10 |
| nginx-1 | 192.168.10.12/24 | 192.168.10.100 |
| nginx-2 | 192.168.10.13/24 | 192.168.10.100 |
| web-1 | 192.168.10.15/24 | - |
| web-2 | 192.168.10.16/24 | - |
? ? ? ? 配置Route节点的路由转发,以及配置设备ip。结合实际生产环境路由器上面需要开启端口映射。
## 由于是linux模拟的路由器,设置Route节点ip转发功能
root@Route:~# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
root@Route:~# sysctl -p
##开启端口映射
root@Route:~# iptables -t nat -A PREROUTING -d 10.10.10.129 -j DNAT --to 192.168.10.200
?
? ? ? ? ?1.? ?配置路由转发;
? ? ? ? 2.? 配置IP地址,网关指向路由;
? ? ? ? 3.? 配置keepalived设置vip。
? ? ? ? 4.? ?配置ipvs转发
## 主备节点均配置
root@Lvs-Master:~#echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
root@Lvs-Master:~# sysctl -p
?
###Master节点
root@Lvs-Master:~# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen
}
notification_email_from xhz@qq.com
smtp_server 192.168.65.129
smtp_connect_timeout 30
router_id keepalived-MASTER
}
vrrp_instance VI_1 {
state MASTER
interface ens33
garp_master_delay 10
smtp_alert
virtual_router_id 51
priority 100
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.200
}
}
##Backup节点
root@LVS-Backup:~# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen
}
notification_email_from xhz@qq.com
smtp_server 192.168.65.129
smtp_connect_timeout 30
router_id keepalived-MASTER
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
garp_master_delay 10
smtp_alert
virtual_router_id 51
priority 10
advert_int 1
nopreempt
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.10.200
}
}
## 主备节点均要配置
##192.168.10.12和192.168.10.13节点为后端的nginx服务器
##192.168.10.200为VIP
root@Lvs-Master:~# ipvsadm -A -t 192.168.10.200:80 -s rr
root@Lvs-Master:~# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.12:80 -m
root@Lvs-Master:~# ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.13:80 -m
root@Lvs-Master:~# 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.10.200:80 rr
-> 192.168.10.12:80 Masq 1 0 0
-> 192.168.10.13:80 Masq 1 0 0
? ? ? ? ?Nginx配置七层负载均衡!
root@proxy-1:/etc/nginx/conf.d# cat web1.conf
upstream lvsservers {
server 192.168.10.15:80;
server 192.168.10.16:80;
}
server {
listen 80;
server_name lvs_test.com www.lvs_test.com;
root /https;
location / {
proxy_pass http://lvsservers;
include proxy_params;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
## web1节点
root@web-1:~# cat /etc/nginx/conf.d/web.conf
server {
listen 80;
server_name lvs_test.com www.lvs_test.com;
location / {
root /https;
index index.html;
}
}
root@web-1:~# cat /https/index.html
web1
root@web-1:~#
##web2节点
root@web-2:~# cat /etc/nginx/conf.d/web.conf
server {
listen 80;
server_name lvs_test.com www.lvs_test.com;
location / {
root /https;
index index.html;
}
}
root@web-2:~# cat /https/index.html
web2
root@web-2:~#


?前面在介绍keepalived说过,keepalived是为了LVS而生的,因此我们在配置lvs四层转发的时候可以直接通过keepalived的配置文件进行设置,后续我们在说DR模型的时候,在着重通过该方式进行实验配置。
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年11日历 | -2025/11/21 2:46:24- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |