网络结构:

LVS DR工作原理

  LVS集群从客户端上看可以将整个集群看成单个服务器对外提供服务,其IP是集群内部的VIP(虚拟IP)。从内部看,转发服务器(DS)其实并没有启动应用层的服务对接口进行监听,那它是怎么发挥作用的呢?这就是LVS属于内核模块的意思了,因为这个模块是在内核编译的时候就有了,所以只要你的Linux启动了就自然有这项功能了。
而下面讲的给DS配置虚拟IP网络接口的时候,其实对于DS来说只是普通的一张网卡对应出多一个网络接口罢了。
那么特殊的地方在哪里呢?特殊的地方就在于LVS模块是通过ipvsadm这个程序来配置和启用的,所以其实要了解LVS最重要的就是ipvsadm这个命令。
内部网络从Director到RealServer的转发过程并没有改变请求的目标IP(虚拟IP),而是改变了请求包的MAC地址,当到达RealServer之后,才对请求进行响应,并以VIP作为IP包头发送响应,这就是为什么整个内部路由网络必须内部网络进行连接,因为通过外网连接的话一定会涉及IP的变化)。整个过程中Director相当于一个路由器,没有改变源IP和目标IP,自然RS响应客户端请求的时候也不会违反TCP/IP协议。

步骤一:转发服务器(DIRECTOR SERVER)绑定虚拟IP

  概念
   VIP:虚拟IP
   DIP:转发服务器IP
 (1)查看网卡信息: ifconfig
 (2)新增一个网络接口,配置IP为VIP:ifconfig eth0:1 192.168.150.200 netmask 255.255.255.0
  注意:此处是临时增加一个网络接口,重启后就会失效,如果要持久建立网络接口,可以在/etc/sysconfig/network-scripts/目录下新增网络接口的配置文件

步骤二:设置后端服务器(隐藏的VIP)

 (1)修改内核参数:echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
      

   注:/proc文件夹放的是内核映射文件,是内核启动之后存放信息的地方
      内核参数:
      arp_ignore: 定义接收到ARP请求时的响应级别;

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

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

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

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

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

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

 (2)新增隐藏的网络接口:ifconfig lo:1 192.168.150.200 netmask 255.255.255.255 broadcast 192.168.150.200 (此处子网掩码和广播IP是专门设置使其无法正确识别的)
 (3)添加网络接口到路由表:route add -host 192.168.150.200 dev lo:1
 (4)配置hosts文件:在 /etc/hosts文件下新增下列IP域名映射(此步骤不是必须的,只是为了方便主机之间操作)
     192.168.150.128 node1
     192.168.150.129 node2
     192.168.150.130 node3
     192.168.150.131 node4
     并复制到其它主机:scp /etc/hosts root@node1:/etc/hosts
 (5)修改httpd服务器的主页vi /var/www/html/index.html 随便写点什么(注意这是新增的文件,原本这个文件夹是空的)
 (6)启动httpd服务监听:service httpd restart

步骤三:使用ipvsadm管理集群服务(只需在DS上使用)

 (1)ipvsadm的安装:yum -y install ipvsadm
 (2)配置集群服务:
     ipvsadm -A -t 192.168.150.200:80 -s wlc
     ipvsadm -a -t 192.168.150.200:80 -r 192.168.150.130 -g -w 1
     ipvsadm -a -t 192.168.150.200:80 -r 192.168.150.131 -g -w 1
 (3)查询集群的配置列表:ipvsadm -Ln,应当显示以下内容
     

     说明配置成功。
  (4)ipvsadm的部分选项和参数说明
     1)管理集群服务中的DS
        添加:ipvsadm -A -t|u|f service-address [-s scheduler]
             -t: TCP协议的集群

-u: UDP协议的集群

service-address: IP:PORT

-f: FWM: 防火墙标记

service-address: Mark Number

         修改:ipvsadm -E

         删除:ipvsadm -D -t|u|f service-address

        举例: ipvsadm -A -t 172.16.100.1:80 -s rr

         其中-s的后面的调度算法有rr(轮询)、wrr(加权轮询)、lc(最少连接)、wlc(加权最少连接)等,默认wlc

     2)管理集群服务中的RS

     添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight]

         -t|u|f service-address:事先定义好的某集群服务

         -r server-address: 某RS的地址,在NAT模型中,可使用IP:PORT实现端口映射;

         [-g|i|m]: LVS类型

           -g: DR

           -i: TUN

           -m: NAT

         [-w weight]: 定义服务器权重

    修改:-e

    删除:-d -t|u|f service-address -r server-address

    # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.8 –g

    # ipvsadm -a -t 172.16.100.1:80 -r 192.168.10.9 -g

     查看

       -L|l

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

      --stats:统计数据

      --rate: 速率

      --timeout: 显示tcp、tcpfin和udp的会话超时时长

      -c: 显示当前的ipvs连接状况

    删除所有集群服务

       -C:清空ipvs规则

     保存规则

       -S

       # ipvsadm -S > /path/to/somefile

    载入此前的规则:

       -R

       # ipvsadm -R < /path/form/somefile

步骤四:测试

 (1)从浏览器访问VIP:192.168.150.200应该能够正常访问

LVS与keepalived实现高可用

原理:与nginx+keepalived实现高可用类似,转发服务器分两台,一台主机一台备机,只要配置主备机的keepalived配置文件,即可实现两台机器通过vrrp协议进行通信和监控其在线状态。keepalived有专门针对LVS的RS健康检查模块,实时监控RS的工作状态。

步骤一:主机和备机安装keepalived
    yum -y install keepalived

步骤二:修改主备机的keepalived配置文件
    # vi /etc/keepalived/keepalived.conf
    (主机和备机配置文件基本一致,只有状态state和优先级priority的区别。设置的具体内容可以通过man keepalived.conf查看帮助手册)
    主机配置
      ! Configuration File for keepalived

      global_defs {

        notification_email {

        root@localhost #发送提醒邮件的目标地址可有多个

        goldbin@126.com

        }

        notification_email_from test@localhost #发送邮件的from地址,可以随意写,邮件地址不存在都无所谓

        smtp_server 127.0.0.1 #邮件服务的地址,一般写本地

        smtp_connect_timeout 30

        router_id LVS_DEVEL

      }

      vrrp_instance VI_1 {

        state MASTER | BACKUP # MASTER 主 和 从

        interface eth0 #VIP需要绑定的网卡名称

        virtual_router_id 51

        priority 101 | 50 #优先级 主的优先级要高,主备之间相差应超过50

        advert_int 1

        authentication {

          auth_type PASS

          auth_pass 1111

        }

        virtual_ipaddress {

          192.168.150.200/24 dev eth0 label eth0:1 #设置VIP

        }

      }

      virtual_server 192.168.150.200 80 { #设置虚拟lvs服务,VIP PORT

        delay_loop 6

        lb_algo rr #调度算法wrr

        lb_kind DR #lvs的模式

        nat_mask 255.255.255.0

        persistence_timeout 50 #同一个IP地址在50秒内lvs转发给同一个后端服务器

        protocol TCP

        real_server 192.168.150.130 80 { #设置真实服务器的心跳机制 RID PORT

          weight 1#权重

          HTTP_GET { #心跳检测的方式

            url {

              path / #心跳检查的地址

              status_code 200 #心跳检查返回的状态

            }

            connect_timeout 2 #超时时间

            nb_get_retry 3 #重复检查3次

            delay_before_retry 1 #每隔1秒钟再次检查

         }

        }

        real_server 192.168.150.131 80 { #第二个真实服务器设置

          weight 1

        HTTP_GET {

          url {

              path /

              status_code 200

         }

         connect_timeout 2

            nb_get_retry 3

            delay_before_retry 1

        }

       }

      }

  说明:配置好keepalived并启动keepalived之后,服务会自动在主DS上创建VIP的网络接口,以及通过ipvsadm设置相应的集群信息,所以在进行高可用设置的时候,不需要进行像单个LVS那样的设置。

LVS高可用集群的配置的更多相关文章

  1. 使用Keepalived构建LVS高可用集群

    LVS的DR模型配置+Keepalive部署 介绍 下图为DR模型的通信过程,图中的IP不要被扑结构中的IP迷惑,图里只是为了说明DR的通信原理,应用到本例中的拓扑上其工作原理不变. 拓扑结构 服务器 ...

  2. activemq+Zookeper高可用集群方案配置

    在高并发.对稳定性要求极高的系统中,高可用的是必不可少的,当然ActiveMQ也有自己的集群方案.从ActiveMQ 5.9开始,ActiveMQ的集群实现方式取消了传统的Master-Slave方式 ...

  3. ClickHouse高可用集群的配置

    上一篇文章写过centos 7下clickhouse rpm包安装和基本的目录结构,这里主要介绍clickhouse高可用集群的部署方案,因为对于默认的分布式表的配置,每个分片只有一份,这样如果挂掉一 ...

  4. hadoop+yarn+hbase+storm+kafka+spark+zookeeper)高可用集群详细配置

    配置 hadoop+yarn+hbase+storm+kafka+spark+zookeeper 高可用集群,同时安装相关组建:JDK,MySQL,Hive,Flume 文章目录 环境介绍 节点介绍 ...

  5. LVS高可用集群

    高可用LVS 集群构建 在LVS集群当中Director的作用是很关键的,所以我们在生产环境中要保证其高可用. 高可用架构图: 1.通过 piranha搭建LVS高可用性集群 piranha是REDH ...

  6. 003.Keepalived搭建LVS高可用集群

    一 基础环境 1.1 IP规划 OS:CentOS 6.8 64位 节点类型 IP规划 主机名 类型 主 Director Server eth0:172.24.8.10 DR1 公共IP eth1: ...

  7. keepalived+lvs高可用集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  8. FastDFS高可用集群架构配置搭建

      一.基本模块及高可用架构 FastDFS 是余庆老师开发的一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡. FastDFS 系统有 ...

  9. FastDFS高可用集群架构配置搭建及使用

    一,概述FastDFS 是一个开源的高性能分布式文件系统(DFS). 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡.FastDFS 系统有三个角色:跟踪服务器(Tracker ...

随机推荐

  1. php扩展开发-哈希表

    什么是哈希表呢?哈希表在数据结构中也叫散列表.是根据键名经过hash函数计算后,映射到表中的一个位置,来直接访问记录,加快了访问速度.在理想情况下,哈希表的操作时间复杂度为O(1).数据项可以在一个与 ...

  2. 科学计算库Numpy——随机模块

    np.random.rand() 随机生成一个[0,1)之间的浮点数. 参数表示数组的维数 np.random.randint() 生成一个随机的整数数组. 备注:生成一个5*4的二维数组,数组中的每 ...

  3. (WPF&Silverlight)silverlight自定义控件

    2个半小时弄懂了自定义控件是怎么回事儿. 在silverlight中创建一个UserControl,把上面sliderbar的外观和功能都封装在里面. 以自定义控件mapslider控件为例: 1.首 ...

  4. Cuba studio框架中使用thymeteaf模板时中文乱码

    最近公司换了Cuba这个orm框架,框架中使用了thymeteaf模板技术,发现在html中解析汉字一直是乱码的存在 一直以为是tomcat的问题但是tomcat的server.xml,项目中的web ...

  5. Diycode开源项目 UserActivity分析

    1.效果预览 1.1.实际界面预览 1.2. 这是MainActivity中的代码 这里执行了跳转到自己的用户界面的功能. 1.3.点击头像或者用户名跳转到别人的页面 UserActivity的结构由 ...

  6. leetcode 【 Rotate Image 】python 实现

    题目: You are given an n x n 2D matrix representing an image. Rotate the image by 90 degrees (clockwis ...

  7. Halcon18 Linux 下载

    Halcon18 Linux下载地址:http://www.211xun.com/download_page_14.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层的数据 ...

  8. jqgrid postData setGridParam 调用多次时查询条件累加的问题

    var postData = $(gridId).jqGrid("getGridParam", "postData"); $.each(paras, funct ...

  9. random.nextInt方法用法

    1.不带参数的nextInt()会生成所有有效的整数(包含正数,负数,0) 2.带参的nextInt(int x)则会生成一个范围在0~x(不包含X)内的任意正整数 例如:int x=new Rand ...

  10. cf 853 B Jury Meeting [前缀和]

    题面: 传送门 思路: 看完题目以后,首先有一个结论:每个人都是先去到首都,等待开会,开会结束以后再一个个走掉 而且这道题只有去首都和离开首都的机场 因此考虑计算去首都的飞机的前缀最小花费,以及离开首 ...