7月4日任务

18.6 负载均衡集群介绍
18.7 LVS介绍
18.8 LVS调度算法
18.9/18.10 LVS NAT模式搭建

扩展
lvs 三种模式详解 http://www.it165.net/admin/html/201401/2248.html
lvs几种算法 http://www.aminglinux.com/bbs/thread-7407-1-1.html
关于arp_ignore和 arp_announce http://www.cnblogs.com/lgfeng/archive/2012/10/16/2726308.html
lvs原理相关的 http://blog.csdn.net/pi9nc/article/details/23380589

18.6 负载均衡集群介绍

主流开源软件LVS、keepalived、haproxy、nginx等

其中LVS属于4层(网络OSI 7层模型),nginx属于7层,haproxy既可以认为是4层,也可以当做7层使用
keepalived的负载均衡功能其实就是lvs
lvs这种4层的负载均衡是可以分发除80外的其他端口通信的,比如MySQL的,而nginx仅仅支持http,https,mail,haproxy也支持MySQL这种
相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更加灵活,能实现更多的个性化需求

18.7 LVS介绍

LVS是由国人章文嵩开发
流行度不亚于apache的httpd,基于TCP/IP做的路由和转发,稳定性和效率很高
LVS最新版本基于Linux内核2.6,有好多年不更新了
LVS有三种常见的模式:NAT、DR、IP Tunnel
LVS架构中有一个核心角色叫做分发器(Load balance),它用来分发用户的请求,还有诸多处理用户请求的服务器(Real Server,简称rs)

LVS常见的三种模式:NAT、DR、IP Tunnel

、LVS NAT模式

这种模式借助iptables的nat表来实现
用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去
rs需要设定网关为分发器的内网ip
用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈
在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源。

、LVS IP Tunnel模式

这种模式,需要有一个公共的IP配置在分发器和所有rs上,我们把它叫做vip
客户端请求的目标IP为vip,分发器接收到请求数据包后,会对数据包做一个加工,会把目标IP改为rs的IP,这样数据包就到了rs上
rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己。

、LVS DR模式

这种模式,也需要有一个公共的IP配置在分发器和所有rs上,也就是vip
和IP Tunnel不同的是,它会把数据包的MAC地址修改为rs的MAC地址
rs接收数据包后,会还原原始数据包,这样目标IP为vip,因为所有rs上配置了这个vip,所以它会认为是它自己。

18.8 LVS调度算法

LVS调度算法有以下几种,前面4种是用的最多的。

轮询 Round-Robin  简称rr
加权轮询 Weight Round-Robin 简称wrr
最小连接 Least-Connection 简称lc
加权最小连接 Weight Least-Connection 简称wlc
基于局部性的最小连接 Locality-Based Least Connections 简称lblc
带复制的基于局部性最小连接 Locality-Based Least Connections with Replication 简称lblcr
目标地址散列调度 Destination Hashing 简称dh
源地址散列调度 Source Hashing 简称sh

18.9/18.10 LVS NAT模式搭建

需要准备3台机器,分别为A、B、C,以前做实验已经有了2台,现在只需要再克隆一台并修改IP地址就可以了。

A机器为分发器,也叫调度器(简写为dir),B和C机器是rs,用来处理用户请求的服务器。

1、网段分配

A机器设置2个网卡,ens33为内网192.168.52.128,ens37为外网(虚拟机仅主机模式)192.168.228.118

[root@jimmylinux- ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens37

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_DNS_PRIORITY=
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
IPV6_DNS_PRIORITY=
NAME=ens37
DEVICE=ens37
ONBOOT=no
IPADDR=192.168.228.118
PREFIX=
ZONE=

B机器设置一个网卡,ens33为内网192.168.52.129,网关必须是A机器的内网IP 192.168.52.128

C机器设置一个网卡,ens33为内网192.168.52.130,网关必须是A机器的内网IP 192.168.52.128

2、3台机器都需要关闭firewalld和selinux

3、在A机器上面安装ipvsadm工具,这个是实现LVS功能的重要工具。

[root@jimmylinux- ~]# yum install -y ipvsadm

同时需要在A机器上编写脚本

[root@jimmylinux-001 ~]# sh /usr/local/sbin/lvs_nat.sh  执行脚本命令,如果没有任何输出信息表示没有问题。

4、测试实验结果

两台rs上都安装nginx
设置两台rs的主页,做一个区分,也就是说直接curl两台rs的ip时,得到不同的结果。
浏览器里访问192.168.228. 多访问几次看结果差异

也可以使用curl命令进行测试

最新文章

  1. Android Studio NDK初探
  2. 23.实现一个名为Person的类和它的子类Employee,Employee有两个子类Faculty 和Staff。 具体要求如下: (1)Person类中的属性有:姓名name(String类型),地址address(String类型), 电话号码telphone(String类型)和电子邮件地址email(String类型); (2)Employee类中的属性有:办公室office(Stri
  3. tarjan算法求强连通分量
  4. saltstack之(八)配置管理部署LAMP
  5. 详细地jsoncpp编译方法 和 vs2010中导入第三方库的方法
  6. C#&JQuery非缓存式无刷新临时存储数据之仿购物车功能
  7. ORACLE 绑定变量用法总结 .
  8. 移动端h5摇一摇事件
  9. Solr4.7从数据库导数据
  10. MongoDB学习笔记<四>
  11. 如何让div水平居中呢?
  12. bootstrap 列表組
  13. python httplib和urllib的性能比较
  14. 联想y720 淋了雨,字体变得模糊了
  15. input事件在ie9以下不兼容问题完美解决
  16. js获取当天零点的时间戳
  17. php Pthread 多线程基本介绍
  18. 1017 Queueing at Bank (25)(25 point(s))
  19. Eclipse wtp project dependent project facets问题
  20. TreeMap实现原理及源码分析

热门文章

  1. 虚拟机linux centos7 查找ip不到的设置
  2. u检验粗浅理解
  3. 使用float设置经典的网站前端结构
  4. CSPS Oct目标
  5. vue实现tab选项卡切换效果
  6. 来了!GitHub for mobile 发布!iOS beta 版已来,Android 版即将发布
  7. 结合参数接收响应转换原理讲解SpringBoot常用注解
  8. php的精度计算问题(bcadd和bcsub)
  9. nyoj 266-字符串逆序输出 (isdigit(), geline(cin, my_string))
  10. python:类5——Python 的类的下划线命名有什么不同?