HAproxy结合keepalived实现httpd的高可用服务

实验前提:

1、本次实验实验的是RHEL6.4(64bit)的系统

2、确保每台服务器时间同步

3、本次实验共有4台服务器,其相关的地址为:

haproxy1:192.168.108.230

haproxy2:192.168.108.231

web1:192.168.108.199

web2:192.168.108.201

VIP:192.168.108.111

实验拓扑结构为:

一、编译安装keepalived

1、在两台haproxy(1和2上)上编译安装keepalived

# tar xf keepalived-1.2.13.tar.gz

# cd keepalived-1.2.13

# ./configure –prefix=/

# make && make install

# chkconfig  --add keepalived

# chkconfig keepalived on

2、在haproxy1修改配置文件/etc/keepalived/keepalived.conf内容为如下:

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]

}

notification_email_from [email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 120

router_id haproxy1

}

vrrp_instance web {

state MASTER                    #haproxy1这台服务器为MASTER

interface eth0

virtual_router_id 200

priority 100                      #优先级为100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.108.111         #虚拟ip地址为192.168.108.111

}

}

3、将haproxy1上的配置文件/etc/keepalived/keepalived.conf复制给haproxy2

# scp /etc/keepalived/keepalived.conf  192.168.108.231:/etc/keepalived/

复制完成后,还需要在haproxy2修改这个配置文件的如下参数:

router_id haproxy2

state BACKUP

priority 90

4、修改完成后再haproxy1和haproxy2启动keepalived服务

# service keepalived start

5、观察haproxy上是否有VIP地址

# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:5f:a5:e3 brd ff:ff:ff:ff:ff:ff

inet 192.168.108.230/24 brd 192.168.108.255 scope global eth0

inet 192.168.108.111/32 scope global eth0     #VIP地址已经有了

inet6 fe80::20c:29ff:fe5f:a5e3/64 scope link

valid_lft forever preferred_lft forever

至此,keepalived的核心配置已经完成了。

二、配置安装haproxy

由于在RHEL6.4系统平台上自带了haproxy的RPM包。因此,在这里我就使用RPM包的方式来安装haproxy。

说明:以下步骤需要在两台服务器都完成的

1、安装haproxy软件包

# yum –y install haproxy

# chkconfig haproxy on

2、修改器配置文件/etc/haproxy/haproxy.cfg为如下内容:

global

log         127.0.0.1 local2

chroot      /var/lib/haproxy

pidfile     /var/run/haproxy.pid

maxconn     4000

user        haproxy

group       haproxy

daemon

# turn on stats unix socket

stats socket /var/lib/haproxy/stats

defaults

mode                    http

log                     global

option                  httplog

option                  dontlognull

option http-server-close

option forwardfor       except 127.0.0.0/8

option                  redispatch

retries                 3

timeout http-request    10s

timeout queue           1m

timeout connect         10s

timeout client          1m

timeout server          1m

timeout http-keep-alive 10s

timeout check           10s

maxconn                 3000

frontend healthcheck

bind 192.168.108.111:80

mode http

option httpclose

option forwardfor

default_backend webserver

backend webserver

balance     roundrobin

server      web1 192.168.108.199:80 inter 1000 rise 1 fall 2  check  maxconn 2000

server      web2 192.168.108.201:80 inter 1000 rise 1 fall 2  check  maxconn 2000

3、添加日志文件

编辑/etc/sysconfig/rsyslog,修改SYSLOGD_OPTIONS="-c 5"为SYSLOGD_OPTIONS="-c 2"

然后再编辑/etc/rsyslog.conf,添加如下行信息:

local2.*                                                /var/log/haproxy.log

最后,重启2台服务器上的rsyslog服务

# service  rsyslog restart

三、配置安装后端web服务器

说明:以下步骤需要在两台web服务器上都完成

1、安装httpd

# yum –y install httpd

2、修改站点根目录下的默认文件index.html的内容为如下:

hello <h1>web1</h1> My ip is 192.168.108.199

注意:这是web1上的index.html文件的内容

hello <h1>web2</h1> My ip is 192.168.108.201

注意:这是web2上的index.html文件的内容

四、测试

说明:在测试时,请关闭所有服务器上的防火墙(执行iptables –F即可)和关闭selinux(执行getenforce 0即可)

在浏览器上输入:http://192.168.108.111/,显示结果如下:

然后再执行刷新操作,显示结果如下:

默认haproxy采用的调度算法为加权轮调,因此,客户端的请求会均分的发送给后端的服务器进行处理。

五、为haproxy提供基于web界面的统计报告功能

需要在两台haproxy服务器的配置文件添加如下信息:

listen stats

mode http

bind 0.0.0.0:8080

stats enable

stats hide-version

stats uri  /haproxyadmin?stats   #访问时指定的uri

stats realm  "hello\ haproxy"

stats auth  xsl:xsl

stats admin if TRUE

然后创建用户xsl

# useradd xsl

# passwd xsl

测试,访问http://192.168.108.111:8080/ haproxyadmin?stats,显示结果如下:

通过以上步骤,基于keepalived+haproxy实现httpd的高可用服务已经成功实现

六、通过检测脚本来实现MASTER/BACKUP的切换(可选部分)

需要在两台haproxy服务器上编辑/etc/keepalived/keepalived.conf,添加如下内容:

vrrp_script  chk_haproxy {

“[[ -f /etc/keepalived/down ]] && exit 1 || exit 0”

interval 2         表示每隔2秒检测一次

weight 20      如果/etc/keepalived/down文件存在,则这台服务器的优先级降低20

fall 2      如果检测2次该服务器都不在是MASTER的话,则认为该服务器不在是MASTER

rise 1           如果检测到一次该服务器成为MASTER,则认为该服务器成为MASTER

}

track_script {      #这一段的配置需要配置在实例中

chk_haproxy

}

测试,在作为MASTER的服务器上(此处为haproxy1)创建文件/etc/keepalived/down,观察VIP是否飘移到haproxy上了。

#  touch /etc/keepalived/down

# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:5f:a5:e3 brd ff:ff:ff:ff:ff:ff

inet 192.168.108.230/24 brd 192.168.108.255 scope global eth0

inet6 fe80::20c:29ff:fe5f:a5e3/64 scope link

valid_lft forever preferred_lft forever

上述结果可以看出,VIP已经不在haproxy1上了,此时haproxy不在作为MASTER服务器。

在haproxy2上观察是否有VIP,需要执行如下命令即可观察VIP是否已经存在:

# ip addr show

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 00:0c:29:70:89:f4 brd ff:ff:ff:ff:ff:ff

inet 192.168.108.231/24 brd 192.168.108.255 scope global eth0

inet 192.168.108.111/32 scope global eth0

inet6 fe80::20c:29ff:fe70:89f4/64 scope link

valid_lft forever preferred_lft forever

由此可以看出,haproxy2上已经有了VIP,此时haproxy将作为MASTER服务器来接受和转发请求。

通过上述步骤,就可以实现手动完成MASTER/BACKUP的切换了,这样就不需要使用停止keepalived服务的方式来进行切换。

时间: 2024-10-14 08:24:14

HAproxy结合keepalived实现httpd的高可用服务的相关文章

HAProxy + Keepalived + Flume 构建高性能高可用分布式日志系统

一.HAProxy简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理. HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接.并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上. 二.Keepalived简介 它是一个基于VRRP协议来实现的WEB服务高可用方案,

LVS基础及LVS+Keepalived实现双主高可用负载均衡

LVS基础及LVS+Keepalived实现双主高可用负载均衡 LB集群: (Load  Balancing)即负载均衡集群,其目的是为了提高访问的并发量及提升服务器的性能,其    实现方式分为硬件方式和软件方式. 硬件实现方式: 常用的有 F5公司的BIG-IP系列.A10公司的AX系列.Citrix公司的 NetScaler系列等 软件实现方式: LVS工作于传输层.nginx工作于应用层.haproxy工作于传输层和应用层 本文主要讲解LVS. 一.什么是LVS ? 1. LVS:(Li

keepalived实现lvs的高可用

搭建环境: 两台director,两台RS director1:ip(172.16.125.5),安装好keepalived: director2:ip(172.16.125.6),安装好keepalived: RS1:ip(172.16.125.7),安装好httpd: RS2:ip(172.16.125.8),安装好httpd: vip(1):172.16.125.100,vip(2):172.16.125.110. 在此处keepalived实现lvs的高可用,使用了lvs的dr模型.关闭

keepalived lvs 实现lvs高可用

keepalived 简介 keepalived是借用VRRP协议来实现高可用性的,VRRP协议是解决单点故障,使路由器和层三交换机实现冗余功能. keepalived启动后会有三个进程 父进程:内存管理,子进程管理等等 子进程:VRRP子进程 子进程:healthchecker子进程 从图上可以看出,两个子进程都被系统WatchDog看管,两个子进程各自操作自己的事,healthchecker子进程负责检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查

keepalived+nginx 双主模型实现高可用服务

一.keepalived的工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个虚拟路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为mas

apache+inotify-tools+keepalived+lvs-DR模式配置高可用负载均衡集群

环境:虚拟机VMware workstation 9 操作系统:Redhat 5.6 i386 一.keepalived+LVS-DR模式配置高可用负载均衡 拓扑如下: 二.服务器IP配置信息 四台服务器均有VMware虚拟机实现,两台HA主机.两台web服务器.网络方式都设置为NAT模式 1.master:192.168.80.145 2.slaver:192.168.80.137 3.web1:192.168.80.144 4.web2:192.168.80.134 5.VIP:192.16

Nginx (三) 使用Keepalived搭建高可用服务

Nginx可以实现高并发反向代理,实现负载均衡,但是有个问题就是Nginx是单点的.如果Nginx故障,则整个服务将会处于不可用状态.所以我们就需要想办法让nginx高可用,即使一个Nginx宕机,还可以有其他的Nginx来支持服务.现在我们通过Keepalived的就可以实现多台Nginx作为主备机,当主机宕机时,可以让备机切换成主机继续提供服务,对整个用户服务几乎没有影响. 1. Keepalived介绍 Keepalived是一个基于VRRP协议来实现的服务高可用方案,可以利用其来避免IP

keepalived高可用服务总结分享

一.keepalived介绍 keepalived软件起初是为LVS软件设计的,用来监控LVS集群中各个集群的节点状态,后来又加入了vrrp高可用功能,因此keepalived不但可以管理LVS集群节点,还可做其他服务(Nginx.Mysql.Haproxy等)的高可用解决方案 二.keepalived高可用工作原理 keepalived高可用服务之间的故障转移通过虚拟路由冗余协议vrrp来实现的,在keepalived正常工作的时候,主节点会不断的向备节点发送组播包,(224.0.0.18)告

Keepalived 高可用服务

一.Keepalived 详解配置 1.Keepalived 软件介绍:Keeplived 软件起初就是专为 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中各个服务器节点的状态,后来又加入了可以实现高可用的 VRRP 功能.因此 Keepalived 除了能够管理 LVS 软件外,还可以作为其他服务(Nginx.Haproxy.MySQL 等)的高可用解决方案软件.Keeplived 软件主要是通过 VRRP 协议实现高可用功能的,VRRP 出现的目的就是为了解决静态路由单点故障