部署LVS-DR+Keepalived搭建高可用web群集

  • 实现LVS的DR模式

    一. 实验环境

  • 三台机器:

    • Director节点: (ens33 192.168.10.53 vip ens33:0 192.168.10.80)
    • Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80)
    • Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80)

    二. 安装和配置

    1. 配置两个real server服务器

    (1) 配置虚拟IP地址(VIP)

    VIP地址仅用作发送Web响应数据包的源地址,并不需要监听客户机的访问请求(改由调度器Director监听并分发)。因此使用虚接口lo:0来承载VIP地址。

    cd /etc/sysconfig/network-scripts/
    cp ifcfg-lo ifcfg-lo:0
    vim ifcfg-lo:0
     DEVICE=lo:0
     IPADDR=192.168.10.80
     NETMASK=255.255.255.255   #子网掩码必须全为1
     ONBOOT=yes 1
    ifup lo:0     #开启虚拟接口 


    (2)安装httpd,创建测试网页

    #安装httpd
    yum install httpd -y
    #real server1创建测试网页
    echo "Server 192.168.10.51" > /var/www/html/index.html
    #real server2创建测试网页
    echo "Server 192.168.10.52" > /var/www/html/index.html

    (3)启动httpd服务,关闭防火墙和安全性策略

    #启动httpd服务
    systemctl start httpd.service
    systemctl enable httpd.service 
    #关闭防火墙和安全性策略
    systemctl stop  firewalld.service
    systemctl disable firewalld.service
    setenforce 0

    (4)在两台real server上配置启动脚本

    vim /etc/init.d/rs.sh
      #!/bin/bash
      VIP=192.168.10.80
            case "$1" in
            start)
                    ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
                    /sbin/route add -host $VIP dev lo:0      #为本机添加一条路由记录
                    echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                    echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
                    echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
                    echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
                    sysctl -p >/dev/null 2>&1
                    echo "RealServer Start OK "
                    ;;
            stop)
                    ifconfig lo:0 down
                    route del $VIP /dev/null 2>&1
                    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
                    echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
                    echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
                    echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
                    echo "RealServer Stopd"
                    ;;
            *)
                    echo "Usage: $0 {start|stop}"
                    exit 1
            esac
            exit 0

    这里需要注意的是避免ARP通信紊乱,解决方案是:修改RS上内核参数(arp_ignore和arp_announce)将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求。

    • arp_ignore=1表示系统只响应目的IP为本地IP的ARP请求。
    • arp_announce=2表示系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址。
      (5)运行启动脚本
      chmod +x rs.sh
      service rs.sh start

      最后在本机上自测访问网站服务

      2. 配置Director server服务器

      (1)配置虚拟IP地址,以便响应群集访问

      cd /etc/sysconfig/network-scripts/
      cp ifcfg-ens33 ifcfg-ens33:0
      vim ifcfg-ens33:0
      DEVICE=ens33:0
      ONBOOT=yes
      IPADDR=192.168.10.80
      NETMASK=255.255.255.0
      ifup ens33:0 


      (2)安装ipvsadm管理工具

      yum install ipvsadm -y  

      (3)开启路由功能

      vim /etc/sysctl.conf
      net.ipv4.ip_forward=1
      sysctl -p     #保存

      (4)调整/proc响应参数,关闭Linux内核重定向参数响应

      vim /etc/sysctl.conf
      net.ipv4.conf.all.send_redirects = 0
      net.ipv4.conf.default.send_redirects = 0
      net.ipv4.conf.ens33.send_redirects = 0
      sysctl -p #保存

      (5)配置Director启动脚本

      vim /etc/init.d/dr.sh
      #!/bin/bash
      GW=192.168.10.1
      VIP=192.168.10.80
      RIP1=192.168.10.51
      RIP2=192.168.10.52
      case "$1" in
          start)
          /sbin/ipvsadm --save > /etc/sysconfig/ipvsadm
          systemctl start ipvsadm
          /sbin/ifconfig ens33:0 $VIP broadcast $VIP netmask 255.255.255.255 broadcast $VIP up
          /sbin/route add -host $VIP dev ens33:0
          /sbin/ipvsadm -A -t $VIP:80 -s rr
          /sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
          /sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
          echo "ipvsadm starting --------------------[ok]"
          ;;
          stop)
          /sbin/ipvsadm -C
          systemctl stop ipvsadm
          ifconfig ens33:0 down
          route del $VIP
          echo "ipvsamd stoped----------------------[ok]"
           ;;
          status)
          if [ ! -e /var/lock/subsys/ipvsadm ];then
          echo "ipvsadm stoped---------------"
          exit 1
                  else
                  echo "ipvsamd Runing ---------[ok]"
          fi
          ;;
          *)
          echo "Usage: $0 {start|stop|status}"
          exit 1
      esac
      exit 0

      (6)启动脚本,添加两个Real Server节点服务器

      chmod +x /etc/init.d/dr.sh
      service dr.sh start

      (7)#关闭防火墙和安全策略

      systemctl stop firewalld.service
      systemctl disable firewalld.service
      setenforce 0

      三.测试LVS群集

      用Windows客户端直接访问http://192.168.10.80/, 将能够看到由真实服务器提供的网页内容。

    第一次访问:

    Real Server连接次数查看:

    刷新一次:

    Real Server连接次数查看:

    • LVS结合keepalive

      LVS可以实现负载均衡,但是不能够故障切换和健康检查,也就是当一个rs服务器出现故障时,LVS仍然会把请求转发给故障的rs服务器,这样就会导致请求无效。keepalive软件可以解决 LVS 单点故障的问题,能同时实现 LVS 的高可用性。这里以LVS-DR模式为例。

    一.实验环境

    五台机器:

    • Keepalived1 + lvs1(Director1):192.168.10.53 (主)
    • Keepalived2 + lvs2(Director2):192.168.10.54 (从)
    • Real server1:192.168.10.51
    • Real server2:192.168.10.52
    • NFS Server: 192.168.10.55
    • VIP: 192.168.10.80

    二.安装配置

    在实现LVS的DR模式前提下,在两个Director Server 节点服务器部署keepalived服务。

    (1)安装keepalive软件

    yum install keepalived -y

    (2)主keepalived节点配置(lvs1)

    #主节点( MASTER )配置文件
    vim /etc/keepalived/keepalived.conf
     global_defs {
      ...    #省略部分
      smtp_server 127.0.0.1           #指向本地
      router_id LVS_01               #指定名称,备份服务器不同名称
      ...    #省略部分
    }
    
     vrrp_instance VI_1 {        #定义VRRP热备实例
        state MASTER            #MASTER表示主调度器
        interface ens33         #承载VIP地址的物理接口
        virtual_router_id 51    #虚拟路由器的ID号,每个热备组保持一致
        priority 100            #主调度器优先级
        advert_int 1            #通告间隔秒数
        authentication {        #认证信息
            auth_type PASS      #认证类型
            auth_pass 1111      #字码密串
        }
        virtual_ipaddress {     #指定群集VIP地址,也就是漂移地址
            192.168.10.80
        }
    }
    
    virtual_server 192.168.10.80 80 {  #虚拟服务器VIP地址
        delay_loop 6                   #健康检查的间隔时间
        lb_algo rr                     #轮询rr的调度算法
        lb_kind DR                     #直接路由工作模式
        persistence_timeout 0          #连接保持时间
        protocol TCP                   #应用服务采用的是TCP协议
    
        real_server 192.168.10.51 80 {  
    
                            #第一个web节点的服务器地址、端口
            weight 1
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    
        real_server 192.168.10.52 80 {  
    
                           #第二个web节点的服务器地址、端口
     router_id LVS_01         weight 1
            TCP_CHECK {
                connect_timeout 10
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80
            }
        }
    }
    

    (3)从keepalived节点配置(lvs2)
    拷贝主节点的配置文件keepalived.conf,然后修改如下内容:

    router_id LV ->  router_id LVS_02 #从调度器名称
    state MASTER -> state BACKUP  #从调度器
    priority 100 -> priority 90   #从调度器优先级

    (4)启动keepalive

    #先主后从分别启动keepalive
    systemctl start keepalived

    三.测试 keepalived 的HA特性

    (1)虚拟IP地址漂移

    首先在master(lvs1)上执行命令 ip addr ,可以看到vip在master节点上的;

    这时如果在master上执行 systemctl stop keepalived 命令,这时vip已经不在master上,在slave节点上执行 ip addr 命令可以看到 vip 已经正确漂到slave节点。

    这时客户端去访问 http://192.168.10.80 访问依然正常。

    (2)连通性

    在客户机执行“ping 192.168.10.80 -t”,能够正常ping通。
    禁用master(lvs1)的ens33网卡,发现还是能正常ping通。

    (3)web访问测试

    禁用master(lvs1)的ens33网卡,再次访问上述web服务,网页文档显示正常。


    原文地址:http://blog.51cto.com/11134648/2133893

    时间: 2024-10-14 11:03:59

    部署LVS-DR+Keepalived搭建高可用web群集的相关文章

    keepalived+Haproxy搭建高可用Web群集

    Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,搭建LVS群集可以参考博文:搭建:LVS+Keepalived高可用Web服务群集环境:Nginx的upstream模块支持群集功能,但是相对群集节点健康检查功能不强,性能没有Haproxy好,更多的是应用在企业内网环境中.Nginx群集可以参考博文:centos 7部署Tomcat及其负载均衡配置详解. 上述几个web群集调度器属于软件类型的,还有很多硬件

    Centos 7部署docker+nginx+keepalived实现高可用web集群

    一.体系架构 在Keepalived + Nginx高可用负载均衡架构中,keepalived负责实现High-availability (HA) 功能控制前端机VIP(虚拟网络地址),当有设备发生故障时,热备服务器可以瞬间将VIP自动切换过来,实际运行中体验只有2秒钟切换时间,DNS服务可以负责前端VIP的负载均衡.nginx负责控制后端web服务器的负载均衡,将客户端的请求按照一定的算法转发给后端Real Server处理,而Real Server将响应直接返回给客户端. 二.简单原理 NG

    Nginx+Keepalived搭建高可用负载平衡WEB 集群

    Nginx+Keepalived搭建高可用负载平衡WEB 集群 1.1环境规划: Nginx_master:192.168.5.129 Nginx_backup:192.168.5.131 Tomcat:192.168.5.132 端口:8080,9080 操作系统:CentOS6.5 x86_64 内核版本:2.6.32-696.el6.x86_64 Nginx版本:nginx/1.12.0 nginx-1.12.0 Keepalived版本:Keepalived v1.2.13 前端双Ngi

    使用keepalived搭建高可用的LVS-DR集群

    使用keepalived搭建高可用的LVS-DR集群   一:Keepalived服务概述 keepalived 是一个类似于 layer3, 4 & 5 交换机制的软件,也就是我们平时说的第 3 层.第 4 层和第 5层交换. Keepalived 的作用是检测 web 服务器的状态,如果有一台 web 服务器死机,戒工作出现故障,Keepalived 将检测到,并将有故障的 web 服务器从系统中剔除,当 web 服务器工作正常后 Keepalived 自劢将web 服务器加入到服务器群中,

    InitPHP框架搭建高可用WEB应用01:创建项目

    创建Hello World项目 1. 下载框架 选择最新的版本,进行下载.框架下载地址:http://initphp 2. 创建项目目录 创建项目目录,目录示意图: 1. 文件夹initphp是最新下载的initphp框架文件夹 2. conf/comm.conf.php 放置项目配置文件 3. web/controller/ 文件夹放置控制器文件 4. index.php是项目入口文件 说明:使用initphp开发的项目是单入口,所有请求都会通过index.php进行分发. 3. index.

    Nginx+Tomcat+Keepalived实现高可用web集群

    Nginx+Tomcat+Keepalived实现高可用web集群: 环境:CenOS 6.5Nginx-Master:10.10.10.128Nginx-Backup:10.10.10.129Tomcat1:10.10.10.130Tomcat2:10.10.10.131VIP:10.10.10.100 一.环境基础配置1.更换国内yum源2.关闭防火墙.SELinux3.时间同步 二.Web端安装Web服务 1.查看是否安装JDK [[email protected] ~]# java -v

    Nginx+Keepalived搭建高可用负载均衡集群

    Nginx+Keepalived搭建高可用负载均衡集群   一. 环境说明 前端双Nginx+keepalived,nginx反向代理到后端的tomcat集群实现负载均衡,Keepalived实现集群高可用. 操作系统: Centos 6.6_X64 Nginx版本: nginx-1.9.5 Keepalived版本:keepalived-1.2.13 结构: Keepalived+nginx-MASTER:10.6.1.210         Keepalived+nginx-BACKUP:

    lvs/dr+keepalived搭建成功后,开启防火墙,虚拟IP不能访问,但是真实IP却可以访问

    lvs/dr+keepalived搭建成功后,开启防火墙,虚拟IP不能访问,但是真实IP却可以访问,如果关闭防火墙虚拟IP就可以访问网站了,这个问题肯定是防火墙在作怪. 经过这两的不懈奋斗和大家的帮助,我的lvs在开启了iptables后,终于实现了负载均衡了,添加的几条命令分别是1.在lvs上执行iptables -t nat -A PREROUTING -p tcp -d 192.168.1.200 --dport 80 -j REDIRECT iptables -I INPUT -i et

    RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

    原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. 目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). K