网络结构:

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. 第2章 CentOS7集群环境配置

    目录 2.1 关闭防火墙 2.2 设置固定IP 2.3 修改主机名 2.4 添加用户 2.5 修改用户权限 2.6 新建目录 2.7 安装JDK 1.卸载系统自带的JDK 2.安装JDK 2.8 克隆 ...

  2. day 59 MySQL之锁、事务、优化、OLAP、OLTP

    MySQL之锁.事务.优化.OLAP.OLTP   本节目录 一 锁的分类及特性 二 表级锁定(MyISAM举例) 三 行级锁定 四 查看死锁.解除锁 五 事务 六 慢日志.执行计划.sql优化 七 ...

  3. foreach遍历数组

    foreach遍历一维数组 <?php //PHP数组遍历:foreach //定义数组 $arr=array(1,2,3,4,5,6,7,8,9,10); //foreach循环 foreac ...

  4. ACM-ICPC 2018 徐州赛区网络预赛

    A. Hard to prepare #include <bits/stdc++.h> using namespace std; ; ]; ]; int main() { int T; i ...

  5. 51nod_1255字典序最小的子序列

    作为贪心算法的某道例题,赶脚药丸啊..这么简单的代码重构第三遍才过... 首先是贪心算法思想, 1,证明贪心算法有效性:贪心策略,使用栈结构实现,遍历输入串中所有元素,对于某个元素有如下两种情况: 情 ...

  6. linux命令行操作基本知识

    乱七八糟的命令 . 表示当前目录 .. 表示上一级目录 ls 显示文件 -l 列表 -a 隐藏文件 -h 文件大小人性化显示 gedit 自带文本编辑器 subl 打开sublime > 重定向 ...

  7. mysql-copy to tmp table

    今天数据后台数据反映有些迟缓后查看链接 processlist 发下好多 锁 和磁盘写入,   参考文章 : http://bbs.chinaunix.net/forum.php?mod=viewth ...

  8. JMX浅谈

    一 JMX 是什么? JMX(Java Management Extensions,即Java管理扩展) JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构.设计模式.应用程序接口以 ...

  9. TCP/IP网络编程之套接字类型与协议设置

    套接字与协议 如果相隔很远的两人要进行通话,必须先决定对话方式.如果一方使用电话,另一方也必须使用电话,而不是书信.可以说,电话就是两人对话的协议.协议是对话中使用的通信规则,扩展到计算机领域可整理为 ...

  10. datagrid的右键菜单

    1. 2.右键菜单,主要是用onRowContextMenu:function(e,index,row){}方法来实现 onRowContextMenu:function(e,index,row){ ...