LVS-NAT模式的实现
一、架构如下:
二、安装过程
1、配置“互联网”服务器
1.1、修改服务器ip为192.168.10.101/24
[root@internet ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a8:6f:21 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.101/24 brd 192.168.10.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fea8:6f21/64 scope link
valid_lft forever preferred_lft forever
1.2、修改服务器的主机名为“internet”(可选)
[root@internet ~]# hostnamectl set-hostname internet
2、配置LVS服务器
2.1、安装ipvsadm管理工具
[root@lvs ~]# yum -y install ipvsadm
2.2、配置eth1网卡(模拟连接外网)
2.2.1、添加一块网卡,选择“仅主机模式”
2.2.2、配置eth1网卡地址
[root@lvs /]# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
NAME=eth1
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.10.100
PREFIX=24
2.2.3、启用ip_forward功能
[root@lvs /]# echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
#使其生效
[root@lvs /]# sysctl -p
3、配置RS服务器
3.1、安装apache、mysql、mod_ssl服务(验证功能作用)
[root@rs1 ~]# yum -y install httpd mysql-server mod_ssl
3.2、修改eth0网卡的网关配置,指向LVS服务器的DIP(两台RS服务器都需要修改配置)
[root@rs1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.0.0.67
PREFIX=24
GATEWAY=10.0.0.57
3.3、启动httpd服务(两台RS服务器都需要安装)
[root@rs1 ~]# systemctl enable --now httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
3.4、配置一下显示页面(特意配置不同,生产中应是相同的)
[root@rs1 ~]# cat /var/www/html/index.html
rs1 10.0.0.67
RS2服务类似配置
效果如下:
[root@lvs ~]# curl 10.0.0.67
rs1 10.0.0.67
[root@lvs ~]# curl 10.0.0.77
rs2 10.0.0.77
4、(重点)配置LVS服务器
4.1、创建集群,使用轮询的调度算法
[root@lvs ~]# ipvsadm -A -t 192.168.10.100:80 -s rr
#查看当前集群
[root@lvs ~]# 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.100:80 rr
4.2、添加RS服务到集群中
[root@lvs ~]# ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.67:80 -m
[root@lvs ~]# ipvsadm -a -t 192.168.10.100:80 -r 10.0.0.77:80 -m
#查看当前集群
[root@lvs ~]# 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.100:80 rr
-> 10.0.0.67:80 Masq 1 0 0
-> 10.0.0.77:80 Masq 1 0 0
4.3、验证功能
[root@internet ~]# curl 192.168.10.100
rs2 10.0.0.77
[root@internet ~]# curl 192.168.10.100
rs1 10.0.0.67
[root@internet ~]# curl 192.168.10.100
rs2 10.0.0.77
[root@internet ~]# curl 192.168.10.100
rs1 10.0.0.67
访问成功,并且实现了访问轮询的效果。
三、思考
1、当“互联网”服务器去访问后端服务时,后端服务器看到的请求来自于哪个IP?
答:LVS-NAT模型采用的是DNAT,只对目标IP做地址转换,不对源IP做任何处理,因此后端服务器可以正常看到实际的“互联网”服务器的IP。
2、通讯过程中,“互联网”机器是直接与LVS服务器建立TCP连接,还是和后端服务器建立TCP连接?
2.1、在RS创建一个大文件
[root@rs1 ~]# dd if=/dev/zero of=/var/www/html/f.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 0.41985 s, 250 MB/s
2.2、“互联网”机器模拟去下载RS端的文件
[root@internet ~]# wget --limit-rate=100k http://192.168.10.100/f.img
2.3、查看LVS端口开启情况
[root@lvs ~]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 36 10.0.0.57:22 10.0.0.1:49851
2.4、查看RS服务器端口开启情况
[root@rs1 ~]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 36 10.0.0.67:22 10.0.0.1:61068
ESTAB 0 0 10.0.0.67:22 10.0.0.1:65352
ESTAB 0 386824 ::ffff:10.0.0.67:80 ::ffff:192.168.10.101:10659
2.5、查看“互联网”服务器
[root@internet ~]# ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 192.168.10.101:22 192.168.10.1:56282
ESTAB 0 0 192.168.10.101:22 192.168.10.1:49944
ESTAB 240888 0 192.168.10.101:10659 192.168.10.100:80
上述实验,可见LVS在“互联网”机器与后端服务器通讯过程中,并不参与握手过程。
因此本题答案为:
通讯过程中,“互联网”服务器和后端服务器建立TCP连接。
3、通讯过程中,LVS是否监听80端口?
答:不会。在本实验中,LVS相当于路由器角色,并不会监听到服务的80端口。真正监听80服务端口的,是RS服务器。
四、拓展
1、ipvsadm规则保存
[root@lvs ~]# ipvsadm-save -n > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.10.100:80 -s rr
-a -t 192.168.10.100:80 -r 10.0.0.67:80 -m -w 1
-a -t 192.168.10.100:80 -r 10.0.0.77:80 -m -w 1
2、ipvsadm规则清空
[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
3、ipvsadm规则导入
[root@lvs ~]# ipvsadm-restore -n < /etc/sysconfig/ipvsadm
[root@lvs ~]# 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.100:80 rr
-> 10.0.0.67:80 Masq 1 0 0
-> 10.0.0.77:80 Masq 1 0 0
LVS-NAT模式的实现的更多相关文章
- Vmware虚拟机配置LVS/NAT模式遇到的坑。
这两天在研究LVS的负载均衡,先从最简单的LVS/NAT模式开始入手. 最后配置完之后能够相互之间Ping通,并且能够直接访问real服务器提供的web服务,而且防火墙也已经关闭了. 但是通过访问LV ...
- 负载均衡集群相关、LVS介绍、LVS调度算法、LVS NAT模式搭建
1.负载均衡集群相关 2.LVS的三种模式:NAT.DR .IP tunnel 3. LVS的调度算法(共有8种) 4.LVS NAT模式搭建准备条件: 在分发服务器上安装:yum install ...
- 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
7月4日任务 18.6 负载均衡集群介绍18.7 LVS介绍18.8 LVS调度算法18.9/18.10 LVS NAT模式搭建 扩展lvs 三种模式详解 http://www.it165.net/a ...
- Linux centosVMware 负载均衡集群介绍、LVS介绍、LVS调度算法、LVS NAT模式搭建
一.负载均衡集群介绍 主流开源软件LVS.keepalived.haproxy.nginx等 其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做 ...
- 负载均衡集群介绍 LVS介绍 LVS调度算法 LVS NAT模式搭建
LVS BAT模式搭建 更改主机名: hostnamectl set-hostname centos7-three bash 准备工作 • 三台机器 • 分发器,也叫调度器(简写为dir) • 内网: ...
- [LVS] 用keepalived实现LVS NAT模式高可用性
默认前提是LVS已经可以正常工作了. 因为是NAT模式,RS的路由要指向LVS的接口地址,所以需要一个统一的后台浮动地址,使得RS都指向这个浮动IP.否则在切换时,会导致RS回包到DOWN掉的LVS上 ...
- LVS NAT模式实践
client:192.168.4.10/24 proxy:192.168.2.5/24 192.168.4.5/24 web1:192.168.4.100/24 web2:192.168.4.200/ ...
- 负载均衡 Lvs nat 模式笔记
nat技术(网络地址转换) 缺点就是进入和返回都通过调度器的服务器,未来可能会成为瓶颈 实验:nat 模式 先在调度器安装ipvsadm 后再添加网卡,后面就连不上网了(yum -y install ...
- LVS NAT模式
LVS-NAT 三台虚拟机都是centos 6.5 关闭防火墙和selinux 角色 IP地址 备注 LVS负载调度器 eth0:192.168.119.128(内网) eth1:192.168.94 ...
- CentOS 6.3下部署LVS(NAT模式)+keepalived实现高性能高可用负载均衡
一.简介 VS/NAT原理图: 二.系统环境 实验拓扑: 系统平台:CentOS 6.3 Kernel:2.6.32-279.el6.i686 LVS版本:ipvsadm-1.26 keepalive ...
随机推荐
- $(cd "$(dirname "$0")",pwd) 解析
xx.sh 文件内容如下: #!/bin/bash BIN_FOLDER=$(cd "$(dirname "$0")";pwd) echo $BIN_FOLDE ...
- ltp 测试流程及测试脚本分析
LTP介绍 (2011-03-25 18:03:53) 转载▼ 标签: ltp linux 压力测试 杂谈 分类: linux测试 LTP介绍 一.LTP介绍1.简介LTP(Linux Test Pr ...
- Linux进阶之软件管理
本节内容 一.rpm:管理linux软件程序的 特点:安装方便 不能解决依赖关系 1.安装软件: -i: -v: -h: rpm -ivh 包名 2.卸载软件 -e: 清楚 rpm -e 程序名 3. ...
- 1、大数据 Hadoop配置和单机Hadoop系统配置
#查看服务器ip ip add #设置主机名称 hostnamectl set-hostname master bash #查看 hostname #绑定ip vi /etc/hosts 添加 服务器 ...
- Springboot2.x入门——helloWorld
Springboot2.x入门--helloWorld 一.简介 1.1 Springboot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的 ...
- Django中数据库操作相关的错误
问题:字段修改属性发生错误 1> >python manage.py makemigrations You are trying to add a non-nullable field ' ...
- SpringBoot 实现整合log4j2日志
关于日志级别 共有8个级别,按照从低到高为:All < Trace < Debug < Info < Warn < Error < Fatal < OFF. ...
- NBU Rman异机恢复Oracle
前段时间一个亿级分区表,被分割成历史表和业务表,历史表中保留15天以外的数据,每天都会从业务表中的15天外的数据copy到历史表,并删除业务表15天外的数据,逻辑也很简单,但插入历史表的where 条 ...
- npm ERR! Error: tunneling socket could not be established的解决问题
一般是代理问题 可以通过在命令行运行下列命令解决: npm run server npm run webdriver-update
- 先进一站式IP及定制
先进一站式IP及定制 芯动科技15年来立足中国本土,目前已实现从130nm到5nm工艺高速混合电路IP核全覆盖,且所有IP均自主可控,一站式赋能国产芯片发展. 提供经过批量生产验证或硅验证的IP产品, ...