Linux下HAProxy+keepalived双机高可用方案

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

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

系统环境: CenOS 6.5x86_64 Desktop install 将selinux and iptables 设置为disabled

主要用到软件:

haproxy-1.5.14.tar.gz

keepalived-1.1.17.tar.gz

nginx-1.7.8.tar.gz

图1 为基本的架构图:

图2 为IP地址分配。

一:安装过程,在两台HA机器上分别keepalived:
#tar -zxvf keepalived-1.2.17.tar.gz
#ln -s /usr/src/kernels/2.6.18-128.el5-i686/ /usr/src/linux
#cd keepalived-1.2.17
[[email protected] keepalived-1.2.17]#./configure--with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64/

[[email protected]]#make

[[email protected]]#make install
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/

cp/usr/local/etc/sysconfig/keepalived /etc/sysconfig/

mkdir/etc/keepalived/

cp/usr/local/etc/keepalived/keepalived.conf /etc/keepalived/

cp/usr/local/sbin/keepalived /usr/sbin/

修改配置文件为:

Master:

#vim/etc/keepalived/ keepalived.conf

# catkeepalived.conf

! ConfigurationFile for keepalived

vrrp_scriptcheck_haproxy {

script"/etc/keepalived/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

[email protected]

}

[email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instanceVI_1 {

state MASTER

interface eth0

virtual_router_id 151

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress{

192.168.1.201

}

track_script {

check_haproxy

}

}

BACKUP:

# catkeepalived.conf

! ConfigurationFile for keepalived

vrrp_scriptcheck_haproxy {

script"/etc/keepalived/check_haproxy.sh"

interval 2

weight 2

}

global_defs {

notification_email {

[email protected]

}

[email protected]

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id LVS_DEVEL

}

vrrp_instanceVI_1 {

state BACKUP

interface eth0

virtual_router_id 151

priority 50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress{

192.168.1.201

}

track_script {

check_haproxy

}

}

主机上:

#vi /etc/keepalived/check_haproxy.sh
#!/bin/bash

A=`ps -C haproxy --no-header | wc -l`

if [ $A -eq 0 ];then

/usr/local/haproxy/sbin/haproxy -f/usr/local/haproxy/conf/haproxy.cfg

echo "haproxy start"

sleep 3

if [ `ps -C haproxy --no-header | wc -l`-eq 0 ];then

/etc/init.d/keepalived stop

echo "keepalived stop"

fi

fi

备机上:

#!/bin/bash

A=`ip a | grep 10.2.32.201 | wc -l`

B=`ps -ef | grep haproxy | grep -v grep| awk ‘{print $2}‘`

if [ $A -gt 0 ];then

/usr/local/haproxy/sbin/haproxy -f/usr/local/haproxy/conf/haproxy.cfg

else

kill -9 $B

fi

#两台机器分别执行:chmod 755 /etc/keepalived/check_haproxy.sh

haproxy的安装(主备都一样):
#tar -zxvf haproxy-1.5.14.tar.gz
#cd haproxy-1.5.14
#make TARGET=linux26 PREFIX=/usr/local/haproxy

#makeinstall PREFIX=/usr/local/haproxy

#cd/usr/local/haproxy/

#mkdir conf

#mkdir logs
#vi haproxy.cfg
global

log127.0.0.1   local0

log127.0.0.1   local1 notice

maxconn 4096

chroot/usr/local/haproxy

uid 99

gid 99

daemon

#debug

#quiet

nbproc 1

pidfile/usr/local/haproxy/logs/haproxy.pid

defaults

log     global

mode    http

option  httplog

option  dontlognull

retries 3

#redispatch

maxconn 65535

optionredispatch

timeout connect5000

timeout client50000

timeout server50000

stats   uri    /haproxy

stats auth  admin:admin

listen  www.omg.com *:80

cookie  SERVERID rewrite

mode http

balance roundrobin

option httpchkHEAD /index.html HTTP/1.0

server  web1 10.2.32.99:80 cookie app1inst1 weight 5check inter 2000 rise 2 fall 5

server  web2 10.2.32.110:80 cookie app1inst2 weight 3check inter 2000 rise 2 fall 5

二:先主后从,两台机器上都分别启动:

/etc/init.d/keepalivedstart (如果之前没有启动haproxy,这条命令会自动把haproxy启动)

[[email protected] haproxy]# ps -ef | grephaprox

root    30344     1  0 11:43 ?        00:00:00 /bin/bash/etc/keepalived/check_haproxy.sh

nobody  30349     1  0 11:43 ?        00:00:00/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

[[email protected] haproxy]# ps -ef | grepkeepali

root    30337     1  0 11:43 ?        00:00:00 keepalived -D

root    30339 30337  1 11:43 ?        00:00:00 keepalived -D

root    30340 30337  1 11:43 ?        00:00:00 keepalived -D

root    30372  2876  0 11:43 pts/0    00:00:00 grep keepali

三:测试:

1.再两台HA上分别执行ip ad sh |grep 10.2.32

主:

inet10.2.32.100/24 brd 10.2.32.255 scope global eth0

inet10.2.32.201/32 scope global eth0

备:

inet10.2.32.101/24 brd 10.2.32.255 scope global eth0

2.停掉主上的haproxy,3秒后keepalived会自动将其再次启动

3.停掉主的keepalived,备机马上接管服务

备: ip ad sh |grep 10.2.32

inet10.2.32.101/24 brd 10.2.32.255 scope global eth0

inet10.2.32.201/32 scope global eth0

四:通过浏览器进行测试

http://www.omg.com

两台web的页面会在你刷新时进行切换。此文将nginx安装,配置过程省略了,如果有问题可以到我的博客中查看相关文章。

时间: 2024-11-11 10:13:21

Linux下HAProxy+keepalived双机高可用方案的相关文章

haproxy+keepalived实现高可用负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,

HaProxy + Keepalived 实现高可用负载均衡

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且

haproxy+keepalived实现高可用负载均衡(转)

haproxy+keepalived实现高可用负载均衡 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器

haproxy+keepalived实现高可用负载均衡web集群

haproxy+keepalived实现高可用负载均衡web集群 负载均衡集群的概念 负载均衡是设计分布式系统架构必须要考虑的因素之一,它指的是通过调度分发的方式尽可能将"请求"."访问"的压力负载平均分摊到集群中的各个节点,避免有些节点负载太高导致访问延迟,而有些节点负载很小导致资源浪费.这样,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间的动态分配,以实现负载均衡,从而为企业提供更高性能,更加稳定的系统架构解决方案. 高可用集群的概念

CentOS7+MySQL/MariaDB+Galera+HAProxy+Keepalived构建高可用数据库集群

方案优势: Galera能够实现MySQL/MariaDB数据库的主主复制和多主复制等模式,这些复制模式都是同步进行的,同步时间非常短 每一个节点都可以同时写入和读取,当某一节点发生故障时,可自动从集群中自动剔除 HAProxy能提供负载均衡和故障判断等功能解决服务器系统存在的单点故障 Keepalived能提供客户端连接数据库时使用的虚拟IP地址(VIP) 关于HAProxy的负载均衡算法 轮询方式(roundrobin):不适合用于backend为web服务器的情况,因为session.co

Rabbitmq +Haproxy +keepalived 实现高可用集群

搭建rabbitmq的高可用集群,分三步走: 1)搭建rabbitmq集群: 多机集群搭建 1.安装单机版的 教程:<Linux下安装rabbitmq> (安装rpm包或者源码包,这里简单介绍下安装rpm包) wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.5.1/rabbitmq-server-3.5.1-1.noarch.rpm rpm -i --nodeps rabbitmq-server-3.5.1-1.noarch.r

DNS域名服务器双master+ntp时间服务器双主+keepalived企业高可用方案 附脚本

一.环境 [[email protected] ~]# cat /etc/issue Red Hat Enterprise Linux Server release 6.6 (Santiago) Kernel \r on an \m [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 角色 master-backup backup-master client ip 192.168.42.9 192.168.42.11 192.168.42.

haproxy + keepalived 实现高可用负载均衡集群

1. 首先准备两台tomcat机器,作为集群的单点server. 第一台: 1)tomcat,需要Java的支持,所以同样要安装Java环境. 安装非常简单. tar xf  jdk-7u65-linux-x64.tar.gz mv jdk1.7.0_65 /usr/local/java 然后在环境变量中加入Java的运行路径 vim  /etc/profile JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin 修改后,sour

HaProxy+Keepalived+Mycat高可用群集配置

概述 本章节主要介绍配置HaProxy+Keepalived高可用群集,Mycat的配置就不在这里做介绍,可以参考我前面写的几篇关于Mycat的文章. 部署图: 配置  HaProxy安装 181和179两台服务器安装haproxy的步骤一致 --创建haproxy用户 useradd haproxy --解压完后进入haproxy目录 cd haproxy-1.4.25/ --编译安装 make TARGET=linux26 PREFIX=/usr/local/haproxy ARCH=x86