设为首页 收藏本站
查看: 1048|回复: 0

[经验分享] 例题解析LVS:NAT和DR模型

[复制链接]

尚未签到

发表于 2019-1-6 06:10:11 | 显示全部楼层 |阅读模式
  LVS 的三种模型中,NAT和DR模型最为常见,TUN模型比较复杂,这里就不再举例。

为了简化模拟过程,在这里我不再引入另外的路由设备了。



一、NAT模型:


说明:我在这里准备3台虚拟主机,物理机作为用户端,一台虚拟主机作为Director,另两台作为web服务器,我们演示的场景应该是用户过来的请求应该在两台web服务器中轮询,两台服务器提供相同的页面给用户,但是这里为了演示效果,我这里提供的两台服务器的页面不相同,以更好的显示效果。

为了模拟真实场景,内网使用vmnet2,外网使用Bridged。



根据环境来配置各虚拟主机ip地址并为web服务提供页面(注:RS1和RS2的网关要指向DIP)

Director:


  • ifconfig eth0 172.16.9.1/16
  • ifconfig eth1 192.168.10.1/24

打开转发,并测试下看能否访问RS1和RS2


RS1:


  • ifconfig eth0 192.168.10.2/24
  • route add default gw 192.168.10.1  

RS2:


  • ifconfig eth0 192.168.10.2/24
  • route add default gw 192.168.10.1  

在Director上配置集群服务:

说明:从Linux内核版本2.6起,ip_vs code已经被整合进了内核中,因此,只要在编译内核的时候选择了ipvs的功能,您的Linux即能支持LVS(如果用‘yum list all ipvs*’找不到时,可能是你的yum源没有配置完全哦,检查下yum源看看)


在客户端访问VIP,就会看到两个页面会交替出现了。



也可以将调度方法指定为wrr:


再刷新页面,两次的访问页面就会以2:1的访问形式出现了。

再查看下集群服务中,连接次数的比也是2:1的哦^_^


二、DR模型:



DR模型中要解决的问题:

1、在前面一篇文章中我们提到了在Director和RS上都需要配置VIP,而当用户请求过来的时候,RS必须要隐藏自己的VIP。

在这里我们引入两个参数:arp_announce和arp_ignore ,可以通过配置其参数来设置响应请求。

arp_announce :当ARP请求通过某个端口进来是否利用这个接口来回应。

0(默认)-----将本地所有地址向外通告(不管配置在哪个接口上全响应ARP请求)

1-----表示避免和目标网络不在同一网络内的本地地址向外通告

2-----只用最佳本地地址通告给目标网络



arp_ignore:是否响应通过本地网卡进来的ARP请求

0(默认)-----无论请求是从哪个网卡进来的,在该主机内,只要有和目标地址在同一网络内的地址,就一定给予响应

1-----只有请求的目标地址恰好是在请求的网络中才给予响应



在DR模型内,我们将arp_announce设为2和arp_ignore设为1,并且RS中的VIP不进行广播,即可隐藏RS的VIP。



2、响应客户端的时候,要以RS的VIP进行响应

添加一条路由即可:

route add -host 172.16.66.1 dev lo:0



例、


说明:将虚拟主机都设置为桥接模式

配置RS1:


在RS2上相同的配置:


在Director上配置地址及集群服务:


通过物理机访问http://172.16.66.1,即可出现两页面轮询的效果了。



三、LVS的持久连接:



('-p' 来指定持久连接的超时时间)

如果期望源于同一个客户端的请求都由同一台RS响应时,则需要用到持久连接。



持久连接的三种类型:

PCC--持久客户端连接:可以实现只要是来自于同一个客户端的请求统统定义到某一个特定的RS(默认端口定义为0)



PPC--持久端口连接:将对某种特定应用的请求转发到特定的RS



PFWM--持久防火墙标记连接:将多个PPC合并起来,即多个特定应用定义到某个特定的RS,即根据iptables所定义的标记来定义集群服务;

根据iptables 的规则,可以将对于某类服务/几个不同端口的访问定义为一类,再对打过标记的服务定义其集群服务





例如:我们开启web(80)、ssh(22)、基于ssl的web(443)三种服务,来解析下持久连接下的三种类型;

下面的实验基于DR模型:

web和ssh已经启动,下面为RS启动基于ssl的web服务:

1、先创建证书:

在Director中配置:


  • [root@www ~]# yum -y install mod_ssl
  • vim /etc/pki/tls/openssl.conf
  • 45 dir             = /etc/pki/CA   
  • [root@www ~]# cd /etc/pki/CA/  
  • [root@www CA]# (umask 077;openssl genrsa -out private/cakay.pem 2048)
  • [root@www CA]# openssl req -new -x509 -key private/cakay.pem -out cacert.pem -days 3650
  • [root@www CA]# mkdir certs newcerts tls
  • [root@www CA]# touch index.txt
  • [root@www CA]# echo 01 > serial

在RS上配置:


  • [root@rs1 ~]# mkdir /etc/httpd/ssl
  • [root@rs1 ~]# cd /etc/httpd/ssl
  • [root@rs1 ssl]# (umask 077; openssl genrsa -out httpd.key 1024)
  • [root@rs1 ssl]# openssl req -new -key httpd.key -out httpd.csr  

  • vim /etc/httpd/conf.d/ssl.conf
  • 112 SSLCertificateFile /etc/httpd/ssl/httpd.crt
  • 119 SSLCertificateKeyFile /etc/httpd/ssl/httpd.key   
        #前面数字代表的是行号


2、将申请的证书复制给CA


  • [root@rs1 ssl]# scp httpd.csr 172.16.9.1:/tmp

CA签署证书并将证书颁发给RS


  • [root@www tmp]# openssl ca -in httpd.csr -out httpd.crt  
  • [root@www tmp]# scp httpd.csr httpd.crt 172.16.9.3:/etc/httpd/ssl/

证书只需要一个,将该证书复制给RS2即可(这里不做演示)

重启httpd服务



三种服务开启后,下面演示持久连接的效果:

PCC:

在Director上定义集群服务:


  • [root@www ~]# ipvsadm -C
  • [root@www ~]# ipvsadm -A -t 172.16.66.1:0 -s rr -p  
  • [root@www ~]# ipvsadm -a -t 172.16.66.1:0 -r 172.16.9.2 -g  
  • [root@www ~]# ipvsadm -a -t 172.16.66.1:0 -r 172.16.9.3 -g  

访问三种服务,都会被定向到同一服务器上,刷新也不会改变的;






PPC只需在DR的基础上定义长连接的超时时间即可,这里就不再演示了



PFWM:

先定义iptables规则,为将要绑定的服务所请求的数据包打上同一种标记;


  • [root@www ~]# iptables -t mangle -A PREROUTING -d 172.16.66.1 -p tcp --dport 80 -j MARK --set-mark 5
  • [root@www ~]# iptables -t mangle -A PREROUTING -d 172.16.66.1 -p tcp --dport 443 -j MARK --set-mark 5

为3种服务分别定义集群服务


  • [root@www ~]# ipvsadm -A -f 5 -s rr -p
  • [root@www ~]# ipvsadm -a -f 5 -r 172.16.9.2 -g  
  • [root@www ~]# ipvsadm -a -f 5 -r 172.16.9.3 -g  
  • [root@www ~]# ipvsadm -A -t 172.16.66.1:22 -s rr -p
  • [root@www ~]# ipvsadm -a -t 172.16.66.1:22 -r 172.16.9.2 -g
  • [root@www ~]# ipvsadm -a -t 172.16.66.1:22 -r 172.16.9.3 -g

说明:将web和基于ssl的web服务定义到一起,只让一台服务器为二者提供服务,ssh服务还是按照轮询的方式进行



分别访问3种服务,查看其效果即可……








运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-659763-1-1.html 上篇帖子: 一步步教你为LVS中的Director实现高可用集群 下篇帖子: 集群lvs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表