网络结构:

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. 【CSS】非常简单的css实现div悬浮页面底部

    <div id="demo_div"></div> <style> #demo_div{ left:; position: fixed; bot ...

  2. thinkphp 3.2.3 - Think.class.php 解析

    class Think { public static function start() { // 注册AUTOLOAD方法 spl_autoload_register('Think\Think::a ...

  3. 【mysql】 数据库字符集和排序规则

    库的字符集影响表和字段的字符集 数据库字符集 >表的字符集 > 字段的字符集 (从前往后优先级由低到高,从左往右继承,如果表没设置字符集,继承数据库的,如果字段没设置,继承表的) 数据库的 ...

  4. JZOJ 5775. 【NOIP2008模拟】农夫约的假期

    5775. [NOIP2008模拟]农夫约的假期 (File IO): input:shuru.in output:shuru.out Time Limits: 1000 ms  Memory Lim ...

  5. Memory loss【记忆缺失】

    Memory Loss Losing your ability to think and remember is pretty scary. We know the risk of dementia ...

  6. CSAPP 缓冲区溢出试验

    缓冲区溢出试验是CSAPP课后试验之一,目的是: 更好的理解什么是缓冲区溢出 如何攻击带有缓冲区溢出漏洞的程序 如何编写出更加安全的代码 了解并理解编译器和操作系统为了让程序更加安全而提供的几种特性 ...

  7. js武器库

    打造自己的 JavaScript 武器库 2017-12-14 SlaneYang JavaScript 自己打造一把趁手的武器,高效率完成前端业务代码. 前言 作为战斗在业务一线的前端,要想少加班, ...

  8. Python框架之Django学习笔记(七)

    标签 eif/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% endif %} 之间的 ...

  9. 『编写高质量代码Web前端开发修炼手册』读书笔记--高质量的CSS

    1.怪异模式和DTD 标准模式:浏览器根据规范表现页面 怪异模式:模拟老浏览器行为防止老站点无法工作(为了兼容老式浏览器的代码),如果漏写DTD(Document Type Definition文档定 ...

  10. Box 类

    public class Box extends JComponent implements Accessible使用 BoxLayout 对象作为其布局管理器的一个轻量级容器.Box 提供几个对使用 ...