搭建 keepalived + lvs/DR  集群

使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务:

  • LVS1调度器真实IP地址为192.168.4.50

  • LVS2调度器真实IP地址为192.168.4.55

  • 服务器VIP地址设置为192.168.4.252

  • 真实Web服务器地址分别为192.168.4.51、192.168.4.52

实验拓扑图:


实验步骤:


实验准备:

配置yum源

# service iptables stop            //关闭防火墙

# chkconfig iptables off            //关闭开机自启

# setenforce 0                            //设置SELinux 为宽松模式

配置WEB服务器  pc51 / pc52

#yum -y install httpd

#service httpd start

#chkconfig httpd on

[root@pc51 ~] #echo " 192.168.4.51  " > /var/www/html/test.html

[root@pc52 ~] #echo " 192.168.4.52 " > /var/www/html/test.html

     本次实验有些步骤就不详细介绍了,具体有关 keepalived 和 ipvsadm 的相关配置 可以参考

      keepalived 配置高可用集群 : https://blog.51cto.com/13558754/2060950

      ipvsadm 配置LVS/DR 负载均衡集群:https://blog.51cto.com/13558754/2060405

1 在web服务上 配置 VIP地址  pc51 / pc52

# ifconfig lo:1 192.168.4.252/32    //只拥有ip 就可以

# ifconfig lo:1

lo:1      Link encap:Local Loopback

inet addr:192.168.4.252  Mask:0.0.0.0

UP LOOPBACK RUNNING  MTU:65536  Metric:1

# cd /proc/sys/net/ipv4/conf/

# echo 1 > lo/arp_ignore

# echo 2 > lo/arp_announce

# echo 1 > all/arp_ignore

# echo 2 > all/arp_announce

2 配置分发器 50(主)  55(备) 分别安装keepalived软件    装包 ipvsadm

# rpm -q ipvsadm keepalived

ipvsadm-1.26-4.el6.x86_64

keepalived-1.2.13-5.el6_6.x86_64

4 修改配置文件

[root@pc50 ~]# vim /etc/keepalived/keepalived.conf

 vrrp_instance VI_1 {
      state MASTER                 // 描述信息  MASTER为主服务器
      interface eth0                 // 定义网络接口
      virtual_router_id 51           //主 备VRID号必须一致 
      priority 150                   //服务器优先级
      advert_int 1
      authentication {
          auth_type PASS           //验证方式
          auth_pass 1111           //验证密码     主  备服务器密码必须一致 
      }
      virtual_ipaddress {
          192.168.4.252            //VIP地址
      }   
  }
   
  virtual_server 192.168.4.252 80 {        //配置 VIP为192.168.0.252  80 端口
      delay_loop 6
      lb_algo rr                            //设置LVS调度算法为RR
      lb_kind DR                            //设置LVS的模式为DR
      nat_mask 255.255.255.0
      persistence_timeout 50
      protocol TCP
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
  
     real_server 192.168.4.51 80 {
          weight 1                        //设置权重为1
     }   
     real_server 192.168.4.52 80 {
          weight 1                        //设置权重为1
      }   
          
  }

使用第一个虚拟服务的模版

其余的都删除

主机55

[root@pc55 ~]# vim /etc/keepalived/keepalived.conf

  vrrp_instance VI_1 {
      state BACKUP                // 描述信息 BACKUP为备用服务器
      interface eth0
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
          192.168.4.252
      }
  }
 
  virtual_server 192.168.4.252 80 {
      delay_loop 6
      lb_algo rr
      lb_kind DR
      nat_mask 255.255.255.0
      persistence_timeout 50
      protocol TCP
      connect_timeout 3
      nb_get_retry 3
      delay_before_retry 3
  
      real_server 192.168.4.51 80 {
          weight 1
      }
      real_server 192.168.4.52 80 {
          weight 1
      }
  }

5 启动服务

# service keepalived start

[root@pc50 ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  192.168.4.252:80 rr persistent 50

-> 192.168.4.51:80              Route   1      0          0

-> 192.168.4.52:80              Route   1      0          0

[root@pc50 ~]# ip addr show | grep 192.168.4

inet 192.168.4.50/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.252/32 scope global eth0

[root@pc55 ~]# ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

-> RemoteAddress:Port

TCP  192.168.4.252:80               0        0        0        0        0

-> 192.168.4.51:80                     0        0        0        0        0

-> 192.168.4.52:80                     0        0        0        0        0

[root@pc55 ~]# ip addr show | grep 192.168.4

inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0

6 客户端访问

# elinks --dump 192.168.4.252

192.168.4.52

[root@room1pc32 桌面]# elinks --dump 192.168.4.252

192.168.4.51

[root@room1pc32 桌面]# elinks --dump 192.168.4.252

192.168.4.52

[root@room1pc32 桌面]# elinks --dump 192.168.4.252

192.168.4.51

[root@room1pc32 桌面]# elinks --dump 192.168.4.252

192.168.4.52

# ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

-> RemoteAddress:Port

TCP  192.168.4.252:80               5       25        0     2075        0

-> 192.168.4.51:80                     2       10        0      830        0

-> 192.168.4.52:80                     3       15        0     1245        0

[root@pc55 ~]# ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

-> RemoteAddress:Port

TCP  192.168.4.252:80               0        0        0        0        0

-> 192.168.4.51:80                     0        0        0        0        0

-> 192.168.4.52:80                     0        0        0        0        0

模拟50 故障 验证Keepalived 高可用

[root@pc50 ~]#  service keepalived stop

[root@pc50 ~]# ip addr show | grep 192.168.4

inet 192.168.4.50/24 brd 192.168.4.255 scope global eth0

[root@pc55 ~]# ip addr show | grep 192.168.4

inet 192.168.4.55/24 brd 192.168.4.255 scope global eth0

inet 192.168.4.252/32 scope global eth0

客户端访问

# elinks --dump 192.168.4.252

192.168.4.52

# elinks --dump 192.168.4.252

192.168.4.51

# elinks --dump 192.168.4.252

192.168.4.52

# elinks --dump 192.168.4.252

192.168.4.51

# elinks --dump 192.168.4.252

192.168.4.52

# ipvsadm -Ln --stats

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes

-> RemoteAddress:Port

TCP  192.168.4.252:80               5       25        0     2075        0

-> 192.168.4.51:80                     2       10        0      830        0

-> 192.168.4.52:80                     3       15        0     1245        0

转载于:https://blog.51cto.com/13558754/2061009

RHEL6 搭建 keepalived + lvs/DR 集群的更多相关文章

  1. Keepalived+LVS+nginx搭建nginx高可用集群

    1. 环境准备 1. VMware; 2. 4台CentOs7虚拟主机:192.168.122.248,192.168.122.68, 192.168.122.110, 192.168.122.167 ...

  2. 每秒处理3百万请求的Web集群搭建-用 LVS 搭建一个负载均衡集群

    这篇文章是<打造3百万次请求/秒的高性能服务器集群>系列的第3部分,有关于性能测试工具以及优化WEB服务器部分的内容请参看以前的文章. 本文基于你已经优化好服务器以及网络协议栈的基础之上, ...

  3. 用 LVS 搭建一个负载均衡集群(转)

    http://blog.jobbole.com/87503/ 第一篇:<如何生成每秒百万级别的 HTTP 请求?> 第二篇:<为最佳性能调优 Nginx> 第三篇:<用 ...

  4. Keepalived高可用集群应用

    Keepalived高可用集群应用 1.keepalived服务说明 1.1.keepalived介绍 Keepalived是一个用C语言编写的路由软件.该项目的主要目标是为Linux系统和基于Lin ...

  5. Nginx+Keepalived高可用集群应用实践

    Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令 ...

  6. 使用Kubeadm搭建高可用Kubernetes集群

    1.概述 Kubenetes集群的控制平面节点(即Master节点)由数据库服务(Etcd)+其他组件服务(Apiserver.Controller-manager.Scheduler...)组成. ...

  7. 亿级Web系统搭建——单机到分布式集群

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  8. 亿级Web系统搭建——单机到分布式集群[转]

    当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架构层 ...

  9. 【web】 亿级Web系统搭建——单机到分布式集群

      当一个Web系统从日访问量10万逐步增长到1000万,甚至超过1亿的过程中,Web系统承受的压力会越来越大,在这个过程中,我们会遇到很多的问题.为了解决这些性能压力带来问题,我们需要在Web系统架 ...

随机推荐

  1. 混合app禁止切换输入法英文键盘方案

    前言 在此介绍的是h5的部分,非原生,原生可以直接属性禁止. 需求 禁止中文出现在input中.(如果你认为不显示出来中文,那么请往下看) 效果:只显示英文键盘. 遇到的问题 1.在三星低版本上会出现 ...

  2. 【php】面向对象(二)

    一. 封装: a) 描述:使用成员修饰符修饰成员属性和成员方法,能够最大限度的隐藏对象内部的细节,保证对象的安全 b) PPP修饰符:public(公共的),protected(受保护的),priva ...

  3. ssh秘钥免交互批量分发脚本

    将以下内容保存为.sh文件后运行即可,需根据各自情况修改ip_up和ip_arr #!/bin/bash #脚本功能:ssh秘钥免交互批量分发 #制 作 人:罗钢 联系方式:278554547@qqc ...

  4. Typora+PicGo+GitHub实现md自带图床效果

    1 GitHub创建作为图床的仓库 1.1 在GitHub中创建一个仓库 注意仓库要是public的,不然上传的图片还是无法使用的.如果不知道怎么创建仓库,可以百度一下. 1.2 在GitHub生成一 ...

  5. ASP.NET Core中配置监听URLs的五种方式

    原文: 5 ways to set the URLs for an ASP.NET Core app 作者: Andrew Lock 译者: Lamond Lu 默认情况下,ASP. NET Core ...

  6. Java成长第四集--文本处理IO流

    Java IO流在实际业务中使用的频率还是蛮高的,一些业务场景比如,文件的上传和导出,文件的读取等基本都是通过操作IO流来实现的,所以IO流是我们现在学习过程中必须要掌握的技能之一,熟练的使用IO流, ...

  7. Golang Web入门(2):如何实现一个高性能的路由

    摘要 在上一篇文章中,我们聊了聊在Golang中怎么实现一个Http服务器.但是在最后我们可以发现,固然DefaultServeMux可以做路由分发的功能,但是他的功能同样是不完善的. 由Defaul ...

  8. Jmeter实现multipart/form-data类型请求

    http请求有三种content-type:application/json.x-www-form-urlencoded.multipart/form-data,前两种比较常见,这里主要说multip ...

  9. PHP常量:JSON_UNESCAPED_UNICODE

    函数: json_encode() - 对变量进行 JSON 编码 说明: json_encode ( mixed $value [, int $options = 0 [, int $depth = ...

  10. C# 静态变量、静态函数、实体变量、实体函数在一个类中的执行顺序

    为了弄清这个代码,写了个测试,但是测试的结果和往上的代码有所差别,仁者见仁,智者见智了.如果我的测试用例用问题,欢迎指出. 首先,方法的是在被调用时执行,但是静态方法在所有地方都可以调用,应该在很早的 ...