Linux Load Balancing之NAT与DR模型-阿里云开发者社区

开发者社区> 余二五> 正文

Linux Load Balancing之NAT与DR模型

简介:
+关注继续查看

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

---本文大纲

  • 定义集群的命令(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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6325 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
2153 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
3950 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
4962 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
5660 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
10711 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
3793 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
16265 0
+关注
12613
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载