背景知识:

  keepalived:Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web 服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

  LVS:LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。

实验系统:CentOS 6.6_x86_64

实验前提:提前准备好编译环境,防火墙和selinux都关闭

实验说明:本实验共有4台主机,其中keep1和keep2为2台前端的keepalived服务器,real1和real2为LVS中的realserver,IP地址对应如拓扑图。

实验软件:httpd-2.2.15 keepalived-1.2.19

实验拓扑:

    

一、配置realserver

  1.安装httpd:

yum -y install httpd

  2.配置内核参数:

echo  > /proc/sys/net/ipv4/conf/lo/arp_ignore           //仅在请求的地址配置在请求报文的接口进行响应
echo > /proc/sys/net/ipv4/conf/all/arp_ignore
echo > /proc/sys/net/ipv4/conf/lo/arp_announce //表示仅通告网络直连的接口的地址
echo > /proc/sys/net/ipv4/conf/all/arp_announce

  3.增加测试页面并配置VIP:

    real1上:

ifconfig lo: 192.168.19.150 netmask 255.255.255.255 broadcast 192.168.19.150 up    //配置VIP
ifconfig lo:1 192.168.19.151 netmask 255.255.255.255 broadcast 192.168.19.151 up
route add -host 192.168.19.150 dev lo:0 //配置路由
route add -host 192.168.19.151 dev lo:1
vim /var/www/html/index.html
---------------------------------------------
<h1>realserver1</h1>
---------------------------------------------
service httpd start

    real2上:


ifconfig lo:0 192.168.19.150 netmask 255.255.255.255 broadcast 192.168.19.150 up
ifconfig lo:1 192.168.19.151 netmask 255.255.255.255 broadcast 192.168.19.151 up
route add -host 192.168.19.150 dev lo:0
route add -host 192.168.19.151 dev lo:1
vim /var/www/html/index.html
---------------------------------------------
<h1>realserver2</h1>
---------------------------------------------
service httpd start

    

二、安装并配置keepalived

  1.编译安装keepalived,在keep1和keep2上操作:

wget http://www.keepalived.org/software/keepalived-1.2.19.tar.gz
tar xf keepalived-1.2..tar.gz
cd keepalived-1.2.19
./configure --prefix=/usr/local/keepalived --sbindir=/usr/sbin/ --sysconfdir=/etc/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-504.30.3.el6.x86_64/ //内核版本换成自己主机的
make && make install
chkconfig --add keepalived
chkconfig keepalived on
yum -y install ipvsadm //安装LVS工具

  2.配置keepalived:

    keep1上:

vim /etc/keepalived/keepalived.conf
----------------------------------------------------
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass abcd
}
virtual_ipaddress {
192.168.19.150
}
} vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass abcd
}
virtual_ipaddress {
192.168.19.151
}
} virtual_server 192.168.19.150 {
delay_loop
lb_algo rr //LVS算法
lb_kind DR //调度类型
protocol TCP real_server 192.168.19.29 80 {
weight 1
       inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
} real_server 192.168.19.34 80 {
weight 1
       inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
}
} virtual_server 192.168.19.151 {
delay_loop
lb_algo rr
lb_kind DR
protocol TCP real_server 192.168.19.29 80 {
weight 1
       inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
} real_server 192.168.19.34 80 {
weight 1
       inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
}
}

    keep2上:

vim /etc/keepalived/keepalived.conf 
----------------------------------------------
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 31
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass abcd
}
virtual_ipaddress {
192.168.19.150
}
} vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 41
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass abcd
}
virtual_ipaddress {
192.168.19.151
}
} virtual_server 192.168.19.150 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP real_server 192.168.19.29 80 {
weight 1
inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
} real_server 192.168.19.34 80 {
weight
inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
}
} virtual_server 192.168.19.151 80 {
delay_loop 6
lb_algo rr
lb_kind DR
protocol TCP real_server 192.168.19.29 80 {
weight 1
inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
} real_server 192.168.19.34 80 {
weight
inhibit_on_failure
            TCP_CHECK {
            connect_timeout 3
            nb_get_retry 2
            delay_before_retry 1
            connect_port 80
            }
}
}

  3.两台机器启动keepalived:

service keepalived start
ipvsadm -L -n //用LVS工具查看keepalived运行
ip addr show //查看VIP

    

    两台机器上LVS规则都已经生效,且2个VIP分别运行在2个节点:

      keep1上:

    

      keep2上:

    

    分别打开测试页面进行测试:

    

    

    停掉任何一个节点,资源都会自动转移:

    

  至此,演示完毕,谢谢!如有问题,请与我联系,QQ:82800452

基于keepalived双主模型的高可用LVS的更多相关文章

  1. Mysql+Keepalived双主热备高可用操作记录

    我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互为Mast ...

  2. keepalived + haproxy 实现web 双主模型的高可用负载均衡--转

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xz159065974.blog.51cto.com/8618592/140581 ...

  3. mysql+keepalived 双主热备高可用

    理论介绍:我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务.当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短.MySQL双主复制,即互 ...

  4. haproxy + keepalived 实现web 双主模型的高可用负载均衡

    参考文章 http://xz159065974.blog.51cto.com/8618592/1405812 http://blog.chinaunix.net/uid-25266990-id-398 ...

  5. 使用Keepalived实现Nginx的自动重启及双主热备高可用

    1.概述 之前我们使用Keepalived实现了Nginx服务的双机主备高可用,但是有几个问题没有解决,今天一起探讨一下. 1)在双机主备机制中,Keepalived服务如果宕了,会自动启用备机进行服 ...

  6. 企业级-Mysql双主互备高可用负载均衡架构(基于GTID主从复制模式)(原创)

    前言:          原理与思想        这里选用GTID主从复制模式Mysql主从复制模式,是为了更加确保主从复制的正确性.健康性与易配性.这里做的是两服务器A,B各有Mysql实例331 ...

  7. 通过keepalived搭建MySQL双主模式的高可用集群系统

    1. 配置MySQL双主模式 1.修改my.cnf配置文件 默认情况下,MySQL的配置文件是/etc/my.cnf,在配置文件的[mysqld]段添加如下内容: server-id=1 log-bi ...

  8. 【Keepalived+MySQL】MySQL双主互备+高可用

    一.基本信息说明 [DB1] IP: 192.168.102.144 hostname: LVS-Real1 [DB2] IP: 192.168.102.145 hostname: LVS-Real2 ...

  9. 【 Linux 】Keepalived实现双主模型高可用集群

    要求:    1. 两台web服务器安装wordpress,数据库通过nfs共享    2. 使用keepalived实现双主模型 环境:    主机:        系统:CentOS6.7 x64 ...

随机推荐

  1. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  2. VS2010中dll不可用问题

    最近做项目的时候,深圳那边提供了一个算法.算法在那边跑的好的很,但是在我这边怎么跑都跑不起来,总是报错:说找不到dll. 1.第一种想法:找不到dll,是不是dll放的位置不对.找了一下目录,导入的路 ...

  3. 如何直接在 PC 端获取其它端设备的 UserAgent 信息呢?

    如何直接在 PC 端获取其它端设备的 UserAgent 信息呢 [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5909615.html 序 希望收 ...

  4. 如何重新注册VMware Update Manager(VUM)至vCenter Server中

    在VMware的vSphere化境中,VUM的角色相当于Windows 环境中的WSUS(Windows 更新服务器),可以批量,自动化的完成所管辖ESXi主机的大版本迁移,小版本升级的任务,深受管理 ...

  5. Hibernate(2)——Hibernate的实现原理总结和对其模仿的demo

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: 开源框架的学习思路(个人总结) Hibernate的运行原理总结 Hibernate实现原理中的两个主要技术 ...

  6. TCP四种计时器

    TCP共使用以下四种计时器,即重传计时器.坚持计时器.保活计时器和时间等待计时器 .这几个计时器的主要特点如下:      1.重传计时器      当TCP发送报文段时,就创建该特定报文段的重传计时 ...

  7. TeamCity : 自动触发 Build

    创建了 build 的配置以后,您既可以手动点击 "Run" 按钮来触发一次 build 过程,也可以通过 Triggers 配置实现自动触发 build 过程.一个 trigge ...

  8. 关于 ASP.NET MVC 中的视图生成

    在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通 ...

  9. Both must set "document.domain" to the same value to allow access.

    有两个域名指向我的网站,其中一个域名访问我的网站的话就可以看到日期控件 另一个域名访问我的网站不能看到日期控件, 在EF中使用日期控件,浏览器审查元素后看到,报这个错误“Both must set & ...

  10. 【Java每日一题】20161226

    package Dec2016; public class Ques1226 { static{ num = 1; } public static int num = 2; public static ...