Linux Load Balancing之NAT与DR模型

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

温馨提示:集群的基础知识请点击此链接

---本文大纲

  • 定义集群的命令(ipvsadm)

  • NAT模型演示

  • DR模型演示

  • 持久连接演示

一、定义集群的命令

命令格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ipvsadm -A|E -t|u|f service-address [-s scheduler]
               [-p [timeout]] [-M netmask]
       ipvsadm -D -t|u|f service-address
       ipvsadm -C
       ipvsadm -R
       ipvsadm -S [-n]
       ipvsadm -a|e -t|u|f service-address -r server-address
               [-g|i|m] [-w weight] [-x upper] [-y lower]
       ipvsadm -d -t|u|f service-address -r server-address
       ipvsadm -L|l [options]
       ipvsadm -Z [-t|u|f service-address]
       ipvsadm -- set  tcp tcpfin udp
       ipvsadm --start-daemon state [--mcast-interface interface]
               [--syncid syncid]
       ipvsadm --stop-daemon state
       ipvsadm -h

常用选项

(1).管理集群服务

添加

-t :tcp协议的集群 service-address后面必须写成ip:port

-u :udp协议的集群 service-address后面必须写成ip:port

-f :防火墙的标记 service-address后面必须写成mark numbe

-s :指定调试算法

-p :保存session会话 -p  times

修改

ipvsadm -E -t|u|f server-adddress

-E: (实例中会有说明)

删除

ipvsadm -D -t|u|f server-adddres

-D:删除集群服务

(2).管理集群服务中的realserver

-t|u|f service-address 实现定义好的某集群服务

-r server-address rs的地址在nat模型中可使用ip:port实现端口映射

-g : DR(所使用的模型)

-i : TUN

-m : NAT

[-w weight] 指定权重(此处为数值)

修改

ipvsadm -e -t|u|f server-adddress    

删除

ipvsadm -d -t|u|f server-adddress

(3).查看

-n 显示主机地址和端口为数字格

--stats 显示进出站数据

--rate 显示速率

--timeout 显示每一个tcp tcpfin udp 的超时时间值

--deamon 显示进程信息

--sort 显示排序规则 默认是升序的

-c 显示多少个客户连接进来

(4).删除所有集群服务

ipvsadm -C

(5).保存定义的规则

service ipvsadm save(默认保存于/etc/sysconfig/ipvsadm文件中,当中没有集群服务,只有转发记录)

ipvsadm -S > /path/to/somefile

(6).载入此前的规则

ipvsadm -R(以默认文件/etc/sysconfig/ipvsadm为模板)

ipvsadm -R < /path/to/somefile

二、NAT模型演示

注:

NAT原理请参阅DNAT原理

1、资源分配

服务类型 软件版本/服务/说明 IP地址
OS Centos6.5.x86_64
Director

ipvsadm

vip:192.168.1.111

dip:172.16.32.111

real server 1 http rip:172.16.32.110
real server 2 http rip:172.16.32.112

2、实验拓扑图

wKiom1NS5cez-6tBAAHEt1QveK8091.jpg

3、配置过程

第一步、Director

VIP(eth0):192.168.1.111

DIP(eth1):172.16.32.111/16

配置命令

1、配置外网IP(VIP)

2、配置内网IP(DIP)

3、开启路由间转发功能

4、安装ipvsadm程序包

1
2
3
4
5
#ifconfig eth0 192.168.1.111 netmask 255.255.255.0 up
#ifconfig eth1 172.16.32.111 netmask 255.255.0.0 up
#sysctl -w net.ipv4.ip_forward=1
#sysctl -p
#yum install -y ipvsadm

第二步、rs1

rip(eth0):172.16.32.110

配置命令

1、配置内网IP

2、添加默认网关

3、安装http服务

4、设置默认页面

5、启动http服务

1
2
3
4
5
#ifconfig eth0  172.16.32.110 netmask 255.255.0.0 up
#route add default gw 172.16.32.111
#yum install -y http
#echo "172.16.32.110" > /var/www/html/index.html
#service httpd start

第三步、rs2

rip(eth0):172.16.32.112

配置命令

1、配置内网IP

2、添加默认网关

3、安装http服务

4、设置默认页面

5、启动http服务

1
2
3
4
5
#ifconfig eth0  172.16.32.112 netmask 255.255.0.0 up
#route add default gw 172.16.32.111
#yum install -y http
#echo "172.16.32.112" > /var/www/html/index.html
#service httpd start

第四步、配置集群服务

配置命令

1
2
3
4
#ipvsadm -C
#ipvsadm -A -t 192.168.1.111:80 -s rr
#ipvsadm -a -t 192.168.1.111:80 -r 172.16.32.110:80 -m
#ipvsadm -a -t 192.168.1.111:80 -r 172.16.32.112:80 -m

第五步、测试

wKiom1NTAnfCt8RjAAPXVjsPQaM548.jpg

wKiom1NTBCWjUpB9AAEwZTxYptU172.jpg

====================================NAT模型演示完毕======================================

三、DR模型演示

1、资源分配

服务类型 软件版本/服务/说明 IP地址
OS Centos6.5.x86_64
Director

ipvsadm

vip(eth0:0):192.168.1.10

dip(eth0):192.168.1.11

real server 1 http

vip(lo:0):192.168.1.10

rip(eth0):192.168.1.21

real server 2 http

vip(lo:0):192.168.1.10

rip(eth0):192.168.1.31

2、实验拓扑图

wKioL1NTD5qzSjOKAAJuxD_VxGI379.jpg

3、配置过程

第一步、配置Director

1
2
#ifconfig eth0 192.168.1.11 netmask 255.255.255.0 up
#ifconfig eth0:0 192.168.1.10 netmask 255.255.255.0 up

第二步、配置RS1

1
2
3
4
5
6
7
8
9
#ifconfig eth0 192.168.1.21 netmask 255.255.255.0 up
#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#ifconfig lo:0 192.168.1.10 netmask 255.255.255.255 broadcast 192.168.1.10 up
#yum install -y http
#echo "192.168.1.21" >/var/www/html/index.html
#service httpd restart

第三步、配置RS2

1
2
3
4
5
6
7
8
9
#ifconfig eth0 192.168.1.31 netmask 255.255.255.0 up
#echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
#ifconfig lo:0 192.168.1.10 netmask 255.255.255.255 broadcast 192.168.1.10 up
#yum install -y http
#echo "192.168.1.31" >/var/www/html/index.html
#service httpd restart

说明:

arp_ignore: 定义接收到ARP请求时的响应级别;

0:只要本地配置的有相应地址,就给予响应;

1:仅在请求的目标地址配置请求到达的接口上的时候,才给予响应;

arp_ignore = 1

arp_announce:定义将自己地址向外通告时的通告级别;

0:将本地任何接口上的任何地址向外通告;

1:试图仅向目标网络通告与其网络匹配的地址;

2:仅向与本地接口上地址匹配的网络进行通告;

arp_announce = 2

第四步、增加主机路由

Director

1
#route add -host 192.168.1.10 dev eth0:0

RS1

1
#route add -host 192.168.1.10 dev lo:0

RS2

1
#route add -host 192.168.1.10 dev lo:0

第五步、配置集群服务

1
2
3
#ipvsadm -A -t 192.168.1.10:80 -s rr
#ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.21:80 -g
#ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.31:80 -g

第六步、测试

wKiom1NTI6TAx-HbAAD-59h7XKI118.jpg

注:

如果反复刷新只有一个页面,可能是有缓存,过一会再刷新就可能切换到另一个页面了。

=================================DR模式演示完毕=====================================

四、持久连接演示

说明

尽管我们选择了LVS的分发方法,但是大多时候我们要保证返回给客户端的所有响应请求必须来自于同一台Real Server,这里我们就要用到LVS Persistence(持久性)。

1、LVS 持久连接和类型

  • PCC 来自同一客户端所有服务的请求都被重定向到同一台Real Server上,以IP地址为准。

  • PPC 来自同一服务的请求都被重定向到同一台Real Server上,以端口号为准。

  • PNMP 基于防火墙标记的持久连接,根据iptables 的规则,将对于某类服务几个不同端口的访问定义为一类

2、PCC 演示

PCC是一个虚拟服务没有端口号(或者端口号为0),以"-p" 来标识服务。

缺陷:定向所有服务,期望访问不同的Real Server无法实现。

1
2
3
4
5
6
7
8
9
10
# ipvsadm -A -t 192.168.1.10:0 -s rr -p 200
# ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.21 -g
# ipvsadm -a -t 192.168.1.10:0 -r 192.168.1.31 -g
# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
   -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.10:0 rr persistent 200
   -> 192.168.1.21:0               Route   1      0          0     
   -> 192.168.1.31:0               Route   1      0          0

用ssh连接到192.168.1.10

wKioL1NTI8OBwDAjAALDOYPQQUw366.jpg

3、PPC 演示

缺陷:期望访问不同的端口到同一台RS上,无法实现。

1
2
3
#ipvsadm -A -t 192.168.1.10:80 -s rr -p 600
#ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.21:80 -g
#ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.31:80 -g

4、PNMP 演示

先对某一特定类型的数据包打上标记,然后再将基于某一类标记的服务送到后台的Real Server上去,后台的Real Server 并不识别这些标记。将持久和防火墙标记结合起来就能够实现端口姻亲功能,只要是来自某一客户端的对某一特定服务(需要不同的端口)的访问都定义到同一台 Real Server上去。假设这样一种场景:一个用户在访问购物网站时同时使用HTTP(80)和HTTPS(443)两种协议,我们需要将其定义到同一台 Real Server上,而其他的服务不受限制。

1
2
3
4
5
#iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 80 -j MARK --set-mark 3
#iptables -t mangle -A PREROUTING -d 192.168.1.10 -i eth0 -p tcp --dport 443 -j MARK --set-mark 3
#ipvsadm -A -f 3 -s rr -p 600
#ipvsadm -a -f 3 -r 192.168.1.21 -g
#ipvsadm -a -f 3 -r 192.168.1.31 -g

五、ipvs集群内生性不足

1、后端RS的健康状态检测?

补救方法

   ⑴、脚本

   ⑵、ldirectord

2、Director自身的可用性

补救方法

   ⑴、ldirectord(heartbeat,corosync)

   ⑵、keekalived

===============================完=================================================










本文转自 jinlinger 51CTO博客,原文链接:http://blog.51cto.com/essun/1398868,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
13天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
40 2
|
4月前
|
并行计算 Linux TensorFlow
【Deepin 20系统+Tensorflow 2】Linux系统解决Could not load dynamic library ‘libcudart.so.10.0‘
本文描述了在Deepin 20系统中使用TensorFlow 2时遇到GPU未被利用的问题,并给出了相关的调试日志信息。
55 2
|
4月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模型的特性是什么?
在Linux中,LVS-NAT模型的特性是什么?
|
4月前
|
负载均衡 算法 Linux
在Linux中,LVS-NAT模式的原理是什么?
在Linux中,LVS-NAT模式的原理是什么?
|
4月前
|
负载均衡 Linux 网络虚拟化
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
在Linux中,什么是NAT,常见分为那几种,DNAT与SNAT有什么不同,应用事例有那些?
|
4月前
|
Oracle Java 关系型数据库
简单记录在Linux上安装JDK环境的步骤,以及解决运行Java程序时出现Error Could not find or load main class XXX问题
本文记录了在Linux系统上安装JDK环境的步骤,并提供了解决运行Java程序时出现的"Error Could not find or load main class XXX"问题的方案,主要是通过重新配置和刷新JDK环境变量来解决。
145 0
|
5月前
|
Linux 网络安全 虚拟化
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
Ngnix04系统环境准备-上面软件是免费版的,下面是收费版的,他更快的原因使用了epoll模型,查看当前Linux系统版本, uname -a,VMWARE建议使用NAT,PC端电脑必须使用网线连接
|
12天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
97 6
|
13天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
52 3
|
13天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
39 2
下一篇
无影云桌面