2019独角兽企业重金招聘Python工程师标准>>>

最近在研究 负载均衡。目前研究的是keepalived+lvs模式

1、软件介绍

keepalived:顾名思义是保持存活,常用来搭建设备的高可用,防止业务核心设备出现单点故障。keepalived主要用作realserver的健康检查以及负载均衡主机和backup主机之间的故障漂移。

单点故障:在公司整个业务流程中,某一点出现故障就会导致整个系统架构不可用,单点故障常发生在数据库、核心业务系统等。对此我们的解决办法是对核心业务系统进行高可用负载均衡。

LVS:Linux    Virtual    Server,linux虚拟服务器,是一个虚拟的服务器集群系统。目前有三种负载均衡技术(VS/NAT、VS/TUN和VS/DR);十种调度算法(rrr|wrr|lc|wlc|lblcr|lblc|dh|sh|sed|nq)。

2、实验拓扑图。

本次实验一共用到4台服务器,其中两台服务器用来搭建keepalived+lvs,另两台是对外提供服务的web服务器。

本次实验用到了5个ip地址。

Master:10.68.4.201                  Backup:10.68.4.58

web1:10.68.4.198                    web2:10.68.4.248

virtualIP:10.68.4.199

3、拓扑图介绍

keepalived--master和keepalived--backup  两者之间通过vrrp协议利用组播进行通信,master主机对外接受请求并将请求转发至后方的realserver,backup主机只接受请求而不转发请求。某时刻当backup主机没有接受到master主机发送的信息时,于是发送vrrp通告信息并广播arp信息,宣城自己是master,如果收到其他主机发送的通告信息的优先级比自己的高,那么自己将继续转为backup,优先级别高的机器,此时就是新master主机,并接替原master主机的工作。

每个keepalived机器都对后方的realserver进行监控,只不过master负责将外部请求转发至后方的realserver,backup则不作该处理。

4、keepalived安装

keepalived的安装参照这篇博客http://my.oschina.net/zyc1016/blog/138574?p=2#comments

keepalived的配置参照这篇博客http://bbs.nanjimao.com/thread-845-1-1.html

安装的过程中,如果报错

checking for IPVS syncd support... yes
                    checking for kernel macvlan support... no
                    checking whether SO_MARK is declared... no
                    configure: error: No SO_MARK declaration in headers

那么只需要在编译时,添加--disable-fwmark参数即可。最后确保如下几项为yes状态即可,加粗一定得是yes。

Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes

! Configuration File for keepalivedglobal_defs {notification_email {}router_id LVS_DEVEL
}vrrp_instance VI_1 {    #定义一个vrrp组,组名唯一  state MASTER        #定义改主机为keepalived的master主机interface eth0      #监控eth0号端口  virtual_router_id 58   #虚拟路由id号为58,id号唯一,这个id决定了多播的MAC地址priority 150         #设置本节点的优先级,master的优先级 要比backup的优先级别高,数值要大advert_int 1         #检查间隔,默认为1秒authentication {auth_type PASS    #认证方式,密码认证auth_pass 1111    #认证的密码,这个密码必须和backup上的一致}virtual_ipaddress {    #设置虚拟的ip, 这个ip是以后对外提供服务的ip。10.68.4.199}
}virtual_server 10.68.4.199 80 {    #虚拟主机设置,ip同上。delay_loop 2                  #服务器轮询的时间间隔lb_algo rr                    #lvs的调度算法lb_kind DR                    #lvs的集群模式nat_mask 255.255.255.0persistence_timeout 50        #会话超时50sprotocol TCP                  #健康检查是用tcp还是udpreal_server 10.68.4.248 80 {    #后端真实主机1weight 100                #每台机器的权重,0表示不给该机器转发请求,知道它恢复正常。TCP_CHECK {                #健康检查项目,以下connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port  80}}real_server 10.68.4.198 80 {        #后端真实主机2weight 100                    #每台机器的权重,0表示不给该机器转发请求,知道它恢复正常。TCP_CHECK {                    #健康检查项目,以下connect_timeout 3nb_get_retry 3delay_before_retry 3connect_port  80}}
}

backup主机的配置基本同上,只有以下地方需要修改。

state BACKUP        #定义改主机为keepalived的backup主机,监控主master
priority 100         #设置本节点的优先级,数值要比master主机上的小

测试keepalived的故障漂移,

首先,在10.68.4.201和10.68.4.58上同时启动keepalived,此时观察master主机和backup主机

可以看出虚拟ip此时绑定在4.201--master上,然后停止4.201上的keepalived服务

通过查看4.58上的日志,可以看到4.58已经宣告自己是master了。并且虚拟ip也漂移到新的mater机器上。

以上的配置,keepalived的高可用功能已经实现。

5、realserver服务器配置

本例中,我在4.198和4.248上,分别安装了httpd,模拟两台web服务器。然后要在两台服务器上配置虚拟vip,这里我写了一个脚本。

#!/bin/bash
#description: config realserver lo  and  apply noarpWEB_VIP=10.68.4.199  #虚拟vip,也就是虚拟ip
. /etc/rc.d/init.d/functionscase "$1" instart)ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP/sbin/route add -host $WEB_VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announceecho "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/eth0/arp_announceecho "1" > /proc/sys/net/ipv4/conf/default/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/default/arp_announcesysctl -p >/dev/null 2>&1echo "RealServer Start OK";;
stop)ifconfig lo:0 downroute del $WEB_VIP >/dev/null 2>&1echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "0" > /proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/eth0/arp_announceecho "0" > /proc/sys/net/ipv4/conf/default/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/default/arp_announceecho "RealServer Stoped";;
status)# Status of LVS-DR real server.islothere=`/sbin/ifconfig lo:0 | grep $WEB_VIP`isrothere=`netstat -rn | grep "lo:0" | grep $WEB_VIP`if [ ! "$islothere" -o ! "isrothere" ];then# Either the route or the lo:0 device# not found.echo "LVS-DR real server Stopped."elseecho "LVS-DR Running."fi
;;
*)# Invalid entry.echo "$0: Usage: $0 {start|status|stop}"exit 1
;;
esac
exit 0

将此脚本分别在4.198和4.248上执行下。此时,我们在两台keepalived的主机上可以查看到如下相同信息。

此时,我们通过网页访问10.68.4.199,时,根据ipvsadm查询到的realserver主机的顺序,可以看出此时优先访问4.198.

而当我们将4.198这台机器的httpd的服务停掉,首先可以看到两台keepalived主机都会将4.198这台机器剔除,此时我们再次查询时ipvsadm,只可以看到一台web服务器,再次页面访问,这时就是在访问4.248这台机器了。

而当我们修复好4.198机器后,keepalived又会自动将改服务器添加进来。

从上面的测试可知,lvs的负载均衡功能已经实现。

6、我碰到过的问题

页面乜有任何显示,思来想去就是找不到问题出在哪?    后面从论坛上看到一位网友也出现同样的问题,细问下才知导致这个问题出现是因为我们keepalived.conf 文件   的书写格式存在问题,后面我回去重新检查了下,发现少写了一个 “}”  keepalived启动时不会检测keepalived.conf 配置文件语法格式。 所以以后再配置书写时,一定要格外注意啊。

转载于:https://my.oschina.net/u/2322690/blog/494910

Keepalived+lvs+httpd之负载均衡相关推荐

  1. Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群

    一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...

  2. mysql lvs 读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 目录 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方案 ...

  3. lvs加MySQL读写分离_mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)

    mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言    4 2.原理    4 2.1.概要介绍    4 2.2.工作原理    4 2.3.实际作用    4 3方 ...

  4. LVS(DR)+keepalived实现高可用负载均衡

    一.lvs+keepalived 1.lvs LVS集群采用IP负载均衡技术和基于内容请求分发技术.调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将 ...

  5. Linux下部署lvs+keepalived实现高可用负载均衡

    lvs+keepalived是什么? keepalived工作原理 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalive ...

  6. LVS+Keepalived实现高可用负载均衡

    本文来说下如何使用LVS+Keepalived 实现高可用负载均衡 文章目录 概述 LVS与Keepalived 相关术语 本文小结 概述 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时 ...

  7. mysql从 lvs_mysql主从之LVS+keepalived+双主MySQL 负载均衡

    LVS(Linux Virtual Server)即Linux 虚拟服务器,是一个的开源负载均衡项目,目前LVS 已经被集成到Linux 内核模块中.LVS 是四层负载均衡,也就是说建立在OSI 模型 ...

  8. MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验

    http://blog.csdn.net/wzy0623/article/details/38757561 MySQL主从复制与lvs+keepalived单点写入读负载均衡高可用实验 分类: MyS ...

  9. LVS+Keepalived 实现高可用负载均衡

    一.Keepalived介绍 keepalived是在Linux系统下的一个轻量级的高可用解决方案,是使用C语言编写的,在 Keepalived 中实现了一组检查器,可以根据服务集群中服务器的健康状态 ...

最新文章

  1. IBM将收购Instana公司,持续推进其混合云和人工智能战略
  2. 移动端重构系列5——等分,居中等
  3. Windows核心编程 第六章 线程基础知识 (上)
  4. 从没想过会有一个这样的机会|大疆招聘
  5. 线性代数【14】线性变换 linear transformation
  6. PostgreSQL系列- 3- 客户端工具
  7. win10各个版本激活码到期了
  8. Markdown中数学相关
  9. java 咖啡 典故,解读六大咖啡种类 常见咖啡种类及特点、背后典故、历史和定义...
  10. 在前端爬虫或者插件中,淘宝API/接口调用里签名算法sign是如何实现的?
  11. 计算机化学博士点,2017年新增博士硕士授予单位公布!各高校博士、硕士学位授权点建设的总体情况如何?...
  12. 表单的js验证框架,只提供提示信息及正则表达式即可自动验证及提示
  13. 2015年最新国内十大应用商店广告报价表
  14. 双卡手机管理短信通知 | 屏蔽短信通知
  15. 微信小程序如何改变icon标签的颜色
  16. 使用unity实现桌面宠物
  17. 官方途径 | 知网、维普、万方、中文在线免费下载,不限次!
  18. ArcGIS Runtime SDK for Windows Phone 入门教程
  19. 规范化、标准化、归一化、正则化
  20. Latex简历制作(不借助模板)

热门文章

  1. 记一下uiscrollView不响应协议的问题
  2. 互联网架构师必备技术 Docker仓库与Java应用服务动态发布那些事
  3. MWC2018:阿里云发布8款云计算AI产品,中国科技已领先世界一步
  4. springMVC 时间、js、html处理
  5. 51Nod-1082 与7无关的数【进制+打表】
  6. Linux基础知识99问(一)
  7. 数字转换成中文大小写
  8. Linux 如何实现 VLAN - 每天5分钟玩转 OpenStack(12)
  9. Java基础系列:(2)关于枚举的简单总结
  10. 查看apache、linux、kernel、nginx等版本