Keepalived高可用集群来实现web服务器负载均衡集群

一、Keepalived的介绍

Keepalived是一个提供HA重要的底层工具,最早期的作用是为ipvs提供HA功能的,还是一个可以提供vrrp已经health-check功能的服务软件,可以只用它提供双机浮动的vip(vrrp虚拟路由功能),这样可以简单实现一个双机热备高可用功能。同时我们还可以利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。 Keepalived是一个基于VRRP协议来实现的WEB 服务高可用方案,可以利用其来避免单点故障。一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

二、VRRP的介绍

VRRP:Virtual Router Redundancy Protocol,是虚拟路由冗余协议,通过此协议我们可以把多个路由器做成一个虚拟路由器,从而来保证其中某个路由宕掉的时候不会造成我们内部外出网络的全部中断。VRRP中的各个路由器都有一个唯一的标识VRID,其范围为0-255,路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]。主控路由器负责对ARP请求用该MAC地址做应答。这样,无论如何切换,保证给终端设备的是唯一一致的IP和MAC地址,减少了切换对终端设备的影响。其中的VRID中的0和255是保留的,0用于IP地址所有者主动放弃主控者角色时使用,255用于VRRP路由器的IP地址和虚拟路由器的接口IP地址相同时所拥有

三、LVS的配置与安装,

启用四台虚拟机,我选择是192.168.0.x.的网段,虚拟主机是172.16.9.1,由于不在一个网段,需要加一个路由Routdde add default gw 172.16.0.1

Real Server1:192.168.0.54 Real Server2:192.168.0.55

HA1:192.168.0.53 HA2;192.168.0.57

VIP:172.16.9.1

配置之前keepalived之前,先下载好yum软件包,配置好http的软件安装,解决好依赖关系,更有利于后面的进行

RIP不能被外部主机解析使用脚本vipset.sh进行设置,要用vipset.sh脚本如配置VIP和arp参数

测试一下

Real Server1

Real Server2

Vipset.sh脚本如下所示:

#!/bin/bash
#
# Script to start LVS DR real server.
# description: LVS DR real server
#
. /etc/rc.d/init.d/functions
VIP=172.16.9.1          #VIP地址
host=`/bin/hostname` #定义host变量
case"$1"in
start) #start的时候设置本机arp不被外部主机解析
# Start LVS-DR real server onthismachine.
/sbin/ifconfig lo down
/sbin/ifconfig lo up
echo1> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo2> /proc/sys/net/ipv4/conf/lo/arp_announce
echo1> /proc/sys/net/ipv4/conf/all/arp_ignore
echo2> /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0$VIP broadcast $VIP netmask255.255.255.255up
#配置vip在lo:0,并且设置广播地址和子网掩码,此处使用32位是保证此vip不能与其他地址通信。
/sbin/route add -host $VIP dev lo:0#增加路由
;;
stop) #stop的时候恢复到系统的初始化arp参数
# Stop LVS-DR real server loopback device(s).
/sbin/ifconfig lo:0down
echo0> /proc/sys/net/ipv4/conf/lo/arp_ignore
echo0> /proc/sys/net/ipv4/conf/lo/arp_announce
echo0> /proc/sys/net/ipv4/conf/all/arp_ignore
echo0> /proc/sys/net/ipv4/conf/all/arp_announce
;;
status)
# Status of LVS-DR real server.
islothere=`/sbin/ifconfig lo:0| grep $VIP`
isrothere=`netstat -rn | grep"lo:0"| grep $VIP`
if[ !"$islothere"-o !"isrothere"];then
# Either the route or the lo:0device
# not found.
echo"LVS-DR real server Stopped."
else
echo"LVS-DR real server Running."
fi
;;
*)
# Invalid entry.
echo"$0: Usage: $0 {start|status|stop}"
exit1
;;
Esac

四、DR上的相关软件的配置和安装

(1)下载keepalived-1.2.7-5.el5.i386.rpm

(2)安装keepalived软件,一定要解决依赖关系

安装之前一定要与服务器时间同步 ntpdate 172.16.9.1

(3)、ipvsadm软件安装

五、LVS的配置包括两部分,虚拟主机组和虚拟主机

virtual_server 192.168.200.100 443 {        #设置VIP port    delay_loop 6                     #多少秒检查一次real server的健康状态     lb_algo rr                      #调度算法     lb_kind NAT                     #lvs模型     nat_mask 255.255.255.0              #虚拟VIP的掩码     persistence_timeout 50              #长连接时间     protocol TCP                     #协议类型real_server 192.168.201.100 443 {          #定义real server    weight 1                          #定义权重     SSL_GET {                          #检查web服务的SSL状况     url {     path /     digest ff20ad2481f97b1754ef3e12ecd3a9cc     }     url {                          #检查服务器的web服务状况     path /mrtg/     digest 9b3a0c85a887a256d6939da88aabd8cd     }     connect_timeout 3           #连接超时时间     nb_get_retry 3             #重试次数     delay_before_retry 3         #重试连接时间间隔     }     }
}

六、keepalived配置文件的详解

(1)RS1里面的keepalived.conf上的配置

  Keepalived.conf的脚本
! Configuration File for keepalivedglobal_defs {notification_email {root@localhost
}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 101advert_int 1authentication {auth_type PASSauth_pass keepalivedpass}virtual_ipaddress {172.16.9.1}
}virtual_server 172.16.9.1 80  {delay_loop 6lb_algo rrlb_kind NATnat_mask 255.255.0.0persistence_timeout 50protocol TCPreal_server 192.168.0.54 80 {weight 1SSL_GET {url {path /status_code 200}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}virtual_server 172.16.9.1 80 {delay_loop 6lb_algo rrlb_kind DRnat_mask 255.255.0.0# persistence_timeout 50protocol TCPreal_server 192.168.0.54 80 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 1}}real_server 192.168.0.55 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 1connect_port 80}}
}

然后把RS1上的keepalived.com复制到RS2上,并把其中的stata改成BACKUP,priority修改为100,其他内容不变

RS2里面的keepalived.conf脚本

! Configuration File for keepalivedglobal_defs {notification_email {root@localhost
}notification_email_from root@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVEL
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass keepalivedpass}virtual_ipaddress {172.16.9.1}
}virtual_server 172.16.9.1 80 {delay_loop 6lb_algo rrlb_kind DRnat_mask 255.255.0.0# persistence_timeout 50protocol TCPreal_server 192.168.0.54 80 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 1}}real_server 192.168.0.55 {weight 2TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 1connect_port 80}}
}

启动keepalived服务;

访问虚拟IP地址

主备转换测试

# cd /etc/keepalived/

# touch down

在备用节点node2上查看

访问虚拟IP

现在把down文件删除,MASTER节点会夺回资源,因为在node1上的优先级(101)比nod2上的优先级(100)高

双主模式实现

两个主机web服务同时开启,配置的VIP不同,让他们互为主从

修改keepalived.conf配置文件(只需修改配置文件末尾“vrrp_instance VI_2”中的内容)

vrrp_instance VI_2 {
interface eth0
state BACKUP  # BACKUP for slave routers
priority 100  # 100 for BACKUP
virtual_router_id 52
garp_master_delay 1authentication {
auth_type PASS
auth_pass password
}
track_interface {
eth0
}
virtual_ipaddress {
172.16.51.80/16 dev eth0 label eth0:1
}
track_script {
chk_httpd
chk_schedown
}notify_master "/etc/keepalived/notify.sh master eth0:1"
notify_backup "/etc/keepalived/notify.sh backup eth0:1"
notify_fault "/etc/keepalived/notify.sh fault eth0:1"
}

在node2上启用“vrrp_instance VI_2”中的内容后,修改一下第二VIP地址与脚本名称(track_httpd, chk_schedown)

修改完成后,启动keepalived服务,查看node1与node2上的VIP地址配置

node1主机

node2主机

测试

模拟node1出现故障

# cd /etc/keepalived/

# touch down

查看node2上虚拟IP地址

此时,访问172.16..9.1与192.16.53都是由node2主机返回结果

转载于:https://blog.51cto.com/749806593/1202925

Keepalived高可用集群来实现web服务器负载均衡集群相关推荐

  1. 利用集群技术实现Web服务器负载均衡

    集群和负载均衡的概念 集群(Cluster) 所谓集群是指一组独立的计算机系统构成的一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算 ...

  2. 集群(一)——LVS负载均衡集群

    集群(一)--LVS负载均衡集群 一.企业群集应用 1.群集的含义 2.问题出现 3.解决办法 4.根据群集所针对的目标差异进行分类 ①.负载均衡群集 ②.高可用群集 ③.高性能运算群集 二.负载均衡 ...

  3. Nginx+Keepalived实现Web服务器负载均衡

    说明: 操作系统:CentOS 5.X 64位 Web服务器:192.168.21.127.192.168.21.128 站点:bbs.osyunwei.com和sns.osyunwei.com部署在 ...

  4. LVS详解及基于LVS实现web服务器负载均衡

    前言 LVS(Linux Virtual Server)Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.通过LVS提供的 ...

  5. web服务器负载均衡实现

    摘要: 负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根据实现的 ...

  6. 关于数据库和web服务器负载均衡

    我先简要说说,基与dotNET的系统随着用户规模的增长,一般情况下有3个方面的瓶颈. 第一,很快你会遇到图片带宽的压力和图片服务器并发的压力. 第二,IIS并发连接的压力. 第三,数据库CPU使用率出 ...

  7. 利用nginx+tomcat+memcached组建web服务器负载均衡

    1 起因 最近对新开发的web系统进行了压力测试,发现tomcat默认配置下压到600人的并发登录首页响应速度就有比较严重的影响,一轮出现2000多个的500和502错误.我把登录的时间统计做了一下, ...

  8. linux集群系列(4) --- LVS之负载均衡集群 --- 持久连接

    一.简介 1.1. lvs的持久连接简介 先说说lvs的持久连接能干什么:无论你选择lvs的何种转发策略,如果你想确定来自某一个客户端的所有连接均返回到同一台Real Server,就需要LVS的持久 ...

  9. 实践 | Centos 7搭建LVS+Keepalived高可用Web服务群集群

    LVS + Keepalived 高可用集群 Keepalived的设计目标是构建高可用的LVS负载均衡的集群,可以调用ipvsadm工具创建虚拟机,不仅仅用作双机热备,还可以使用keepalived ...

最新文章

  1. 关于LDD3 setconsole.c Alesssandro Rubini 的邮件回复
  2. tomcat会自动解压webapps目录下的war包
  3. 明明白白你的Linux服务器——日志篇
  4. Angular里使用createEmbeddedView动态加入新的模板元素
  5. cvi中c语言只保留两位小数,CVI编程常见问题与错误-2012.9
  6. while语句的使用
  7. clickhouse 获取几天前的日期
  8. C++函数和类的封装
  9. matlab实心黑点怎么活,matlab画实心圆点
  10. python爬取起点中文网小说
  11. 深入理解SSIM(两图像结构相似度指标)(附matlab代码)
  12. Rpg maker mv角色扮演游戏制作大师简介
  13. html导航栏自动调间距,HTML CSS导航栏间距
  14. Quuppa_基站灯闪烁原因
  15. SAT写作例子之Frank Lloyd Wright
  16. HTML+CSS打造简单的横向时间轴
  17. 文档数据防泄密需求分析
  18. 爬取哔哩哔哩网站数据
  19. java编写程序实现乐手弹奏乐器。乐手可以弹奏不同的乐器从而发出不同的声音。可以弹奏的乐器包括二胡、钢琴和琵琶。定义乐器类Instrument,包括方法makeSound() 。定义乐器类的子类
  20. 如何用elasticsearch构架亿级数据采集系统(第1集:elasticsearch概述)

热门文章

  1. 自考计算机软件基础交作业,全国2009年7月自考计算机软件基础(二)试题及答案...
  2. java8 接口调用默认方法_Java8接口里的默认方法特性
  3. c++计算eigen随笔(8)-数组、矩阵、向量(1)
  4. C指针原理(2)-ATT汇编
  5. @AI大神们 前方31万巨额奖金,别走好吗跑起来!!!
  6. 我们的合作伙伴Datawhale两岁啦!
  7. Math4DS 直播 NO.10 | “机器学习之父”、加州大学伯克利分校迈克尔·乔丹
  8. 16 大常考算法知识点,你掌握了吗?
  9. arXiv 精选:一文看尽六月最热五篇论文
  10. 限时免费报名丨网易新消费CXO论坛 - 深圳站