马哥教育网络班21期+第17周课程练习

1、结合图形描述LVS的工作原理;

nat.jpg

lvs是基于内核的虚拟主机用来做四层的负载均衡,工作在netfilter框架的INPUT链上,有四种模式,上图为lvs-nat

lvs-nat:有DNAT功能,支持端口映射,请求报文和响应报文都需要经过Director

请求过程:cip–>vip,Director,cip–>rip

响应过程:rip–>cip,gw dip Director,vip–>cip

条件和不足:vip公网ip,dir,rip都为私网地址且在相同网段的物理网络中,Director可能会成为系统瓶颈

dr.jpg

lvs-dr:Director在接收到目的为vip的请求后,按算法挑一台Realserver来处理相应请求,Director先获得Realserver的mac之后增加到请求报文的数据帧首部,Realserver的响应报文一定不能经过Director

请求过程:cip–>vip,Director cip–>vip,cip–>vip RealServer 此过程数据帧首部在变化

响应过程:vip–>cip–>gw–>cip internet 或 当rip为公网ip时vip–>cip internet 

条件和不足:vip公网ip,dir,rip可以是公网和私网也可以在不同网段,但必须在同一物理二层交换网络中

疑问:
如何保证Realserver的vip不响应访问请求报文在交换机arp广播和在Realserver使用vip响应给客户端;
arp_ignore:定义linux主机在收到ARP请求数据包后,发送ARP响应数据包的条件级别 
0 - (默认值): 回应任何网络接口上对任何本地IP地址的arp查询请求
1 - 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
2 -只回答目标IP地址是来访网络接口本地地址的ARP查询请求,且来访IP必须在该网络接口的子网段内
3 - 不回应该网络界面的arp请求,而只对设置的唯一和连接地址做出回应
做lvs-dr模型时 每个Realseverarp_ignore=1  
arp_announce:定义linux主机发送ARP请求数据包时如何选择数据包中使用的发送方IP地址(怎样宣告自己arp)
0(默认值)- 允许使用任一网络接口配置的IP地址(即任一本地地址),
通常就是待发送的IP数据包的源IP地址。(通告所有网段)
1 - 尽量避免使用不属于该网络接口(即发送数据包的网络接口)子网的本地地址作为发送方IP地址,
就是说如果主机包含多个子网,而IP数据包的源IP地址属于其中一个子网,
虽然该IP地址不属于本网口的子网,但是也可以作为ARP请求数据包的发送方IP地址,
否则就会按照取值为2的方式选择发送方IP地址。(通告相同网段)
2 - 忽略IP数据包的源IP地址,总是选择网口所配置的最合适的IP地址作为ARP
请求数据包的发送方IP地址(一个网口可能会配置多个IP地址)(一定通告相同的网段)
做lvs-dr模型时,每个Realsever需要设置arp_annonuce=2
各个Realsever上的route add -host $VIP dev lo:0 ,让Realserver从本地物理网卡收到Director
转发的报文交给lo:0,响应客户端时,会以Realserver lo:0 vip作为源地址响应,然后经过本地网卡

tun.jpg

lvs-tun:Director在接收到目的为vip的请求后,按算法挑一台Realserver来处理相应请求,会在原来ip包头上

再封装一个源为dip目的为rip的ip包头,之后Realserver收到请求,处理后通过互联网响应客户端.

请求过程:cv–>Director,cvdr–>cvdr ip包头的变化

响应过程:Realserver vip–>cip

条件和不足:vip,dip,rip必须全部为公网地址,可以跨地域部署,但是要考虑mtu问题,而且Realserver必须支持特定的隧道协议

fullnat.jpg

lvs-fullnat:Director在接收到目的为vip的请求后,按算法挑一台Realserver来处理相应请求,Director和个Realserver可以在不同网段,Director会同时修改源和目的ip,改成dip和rip,Realserver处理完成后,经过各个路由,响应给Director,Director会响应给客户端

请求过程:cip–>vip Director–>dip–>rip Realserver

响应过程:rip–>dip Director–>vip–>cip

这几题想省事简单化下,用lvs-dr做apache的负载均衡,nginx和php分离可以参考上篇博文的Lnmp.sh脚本

2、搭建一套LVS-DR模型的高性能集群,并实现以下功能:

   (1)、wordpress程序通过nfs共享给各个realserver;

   (2)、后端realserver中的nginx和php分离

实验环境
Director:vip 192.168.40.200,dip 192.168.40.120
RS1:vip 192.168.40.200,rip1 192.168.40.130,gw 192.168.40.2 apache
RS2:vip 192.168.40.200,rip2 192.168.40.140,gw 192.168.40.2 apache
实际生产环境则可以根据ip规划情况来部署

 在RS上操作
vim /etc/sysctl.conf
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
或者
[root@centos ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@centos ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@centos ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@centos ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@centos ~]# ifconfig lo:0 192.168.40.200 broadcast 192.168.40.200 netmask 255.255.255.255 up
[root@centos ~]# route add default gw 192.168.40.2
[root@centos ~]# route add -host 192.168.40.200 dev lo:0
[root@centos ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.40.200  0.0.0.0         255.255.255.255 UH    0      0        0 lo
192.168.40.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
0.0.0.0         192.168.40.2    0.0.0.0         UG    0      0        0 eth2
[root@centos ~]# echo "RS1---RS1" > /var/www/html/test.html
[root@centos ~]# service httpd start
[root@centos ~]# curl http://192.168.40.130/test.html
RS1---RS1
以上关于RS1的操作,在RS2上操作一边,确保RS2的测试页为RS2--RS2
在DR上操作
[root@centos ~]# modprobe -l | grep "ip_vs"
kernel/net/netfilter/ipvs/ip_vs.ko
,,,,,
[root@centos ~]# uname -r
2.6.32-504.el6.x86_64
[root@centos ~]# yum install ipvsadm -y
[root@centos ~]# ifconfig eth1:0 192.168.40.200 broadcast 192.168.40.200 netmask 255.255.255.255 up
[root@centos ~]# ipvsadm --version
ipvsadm v1.26 2008/5/15 (compiled with popt and IPVS v1.2.1)
[root@centos ~]# iptables -F
[root@centos ~]# ipvsadm -A -t 192.168.40.200:80 -s rr
[root@centos ~]# ipvsadm -a -t 192.168.40.200:80 -r 192.168.40.130 -g 
[root@centos ~]# ipvsadm -a -t 192.168.40.200:80 -r 192.168.40.140 -g 
[root@centos ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.40.200:http rr
  -> 192.168.40.130:http          Route   1      0          0         
  -> 192.168.40.140:http          Route   1      0          0  
使用笔记本本地浏览器访问几次后的轮训结果
[root@centos ~]# ipvsadm -l
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.40.200:http rr
  -> 192.168.40.130:http          Route   1      1          13        
  -> 192.168.40.140:http          Route   1      1          14

3、基于heartbeat v2 crm实现HA LAMP组合;要求,部署wordpress,用于编辑的文章中的任何数据在节点切换后都能正常访问;

heartbeat或corosync(集群信息层),pacemaker(crm),crmshell或pscd(资源配置cli);
建议使用centos7系列安装测试,或centos6系列升级python为2.7.X 
floating ip ,nfs,httpd为需要高可用的资源

原创文章,作者:Snoo,如若转载,请注明出处:http://www.178linux.com/61698

(0)
SnooSnoo
上一篇 2016-12-26
下一篇 2016-12-26

相关推荐

  • grep 整理

    grep: Linux上文本处理三剑客 grep:文本过滤(模式:pattern)工具;  grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的“模式”…

    Linux干货 2016-10-09
  • Bash的&&,||逻辑运算

    Bash的&&,||逻辑运算 bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。 $?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。 例如: $ true$ echo$?0$ false$ echo$?1 有时候,下一条命…

    Linux干货 2016-04-11
  • 堡垒机-麒麟堡垒机动态口令使用手册

      一.管理员部分 1.在其它-licenses菜单查看动态口令许可是否打开,如果未打开联系厂商重新生成许可   2.找厂商生成密钥文件,密钥文件中包含令牌种子,在其它–动态令牌菜单将密钥文件导入即可看到所有的令牌种子,每个令牌可以绑定给多个用户     3.令牌绑定可以在 资源管理–…

    安全运维 2016-05-29
  • 马哥教育网络班21期+第14周课程练习

    iptables关键点 表:filter(过滤,防火墙);nat(网络地址转换);mangle(拆解报文,做出修改,封装报文);raw(关闭nat表启用的链接追踪机制);上述是根据功能来区分的,写规则要明白要实现的功能 链:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING 数据流向:流入PREROUTING–…

    Linux干货 2016-08-26
  • 【招聘福利】普景/上海/运维工程师/8K起/双休/五险一金

    岗位要求:  经验可无,要求熟悉LANMP、zabbix的配置和维护  了解SQL语句  熟悉shell、会python 更佳岗位职责:  1. 负责zabbix的配置和维护,发现问题及时处理(如果你是有经验的童鞋,找出或者写出如Centreon类的软件优化邮…

    Linux干货 2016-04-15
  • 分布式系统的事务处理

    当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题: 1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。 2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。 于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务: 1)数…

    Linux干货 2016-08-15