haproxy+keepalived实现高可用负载均衡(实例配置)_Linux

作者:split_two

环境四台机器都是RedHat4.8(64位)版本:

IP地址             用处
192.168.5.55       MASTER
192.168.2.73       BACKUP
192.168.5.54       负载A
192.168.5.57       负载B
192.168.2.100      VIP

1、MASTER上安装haproxy

复制代码 代码如下:

wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz /root

解压到当前目录
tar zxvf haproxy-1.3.20.tar.gz
进到此目录
cd haproxy-1.3.20
编译及安装,安装到/usr/local目录,但是安装完此目录下没有haproxy文件夹,我也很奇怪!
make TARGET=linux26 prefix=/usr/local/haproxy install
但是出来的结果会提示如下信息

install -d /usr/local/sbin
install haproxy /usr/local/sbin
install -d /usr/local/share/man/man1
install -m 644 doc/haproxy.1 /usr/local/share/man/man1
install -d /usr/local/doc/haproxy
for x in configuration architecture haproxy-en haproxy-fr; do \
        install -m 644 doc/$x.txt /usr/local/doc/haproxy ; \
done

提示你启动haproxy在sbin目录,其余的在doc目录
进入到haproxy目录
cd /usr/local/doc/haproxy
新建一个haproxy主配置文件

复制代码 代码如下:

vi haproxy.cfg
global
   log 127.0.0.1 local0
   maxconn 4096
   chroot /usr/local/doc/haproxy
   uid 501
   gid 501
   daemon
   nbproc 1
   pidfile /usr/local/doc/haproxy/haproxy.pid
defaults
   log    127.0.0.1  local3
   mode   http
   option httplog
   option httpclose
   option dontlognull
   option forwardfor
   option redispatch
   retries 2
   maxconn 2000
   balance roundrobin
   stats   uri    /haproxy-status    查看状态
   stats hide-version       隐藏haproxy版本
   stats realm Gemini\ Haproxy      查看状态需要口令
   stats auth admin:admin           用户名和密码
   contimeout  5000
   clitimeout  50000
   srvtimeout  50000
listen web_proxy 192.168.2.100:80
   server web1 192.168.5.54:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
   server web2 192.168.5.57:8080 cookie app1inst2 check inter 2000 rise 2 fall 5

2、MASTER安装keepalived
tar zxvf keepalived-1.1.15.tar.gz
vi /usr/src/kernels/2.6.9-89.EL-smp-x86_64/include/linux/types.h
将如下两行注释掉,否则编译会出错,跟我这个版本的系统有关系,你的也许不要!

复制代码 代码如下:

/*
typedef __u16 __bitwise __sum16;
typedef __u32 __bitwise __wsum;
*/
cd keepalived-1.1.15
./configure
make
make install

将keepalived作为系统服务启动

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/
vi /etc/keepalived/keepalived.conf内容如下:

复制代码 代码如下:

! Configuration File for keepalived
global_defs {
   router_id LVA_DEVEL
}
vrrp_script chk_http_port {
   script "/root/check_haproxy.sh"
   interval 2
   weight  2
}
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
    chk_http_port
}
    virtual_ipaddress {
        192.168.2.100
    }
}

上面调用了一个脚本check_haproxy.sh,内容如下:

复制代码 代码如下:

#!/bin/bash
A=`ps -C haproxy --no-header | wc -l`
if [ $A -eq 0 ];then
/usr/local/sbin/haproxy -f /usr/local/doc/haproxy/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

3、BACKUP上安装haproxy,步骤就不详细介绍,和MASTER上面一样的。
haproxy.conf内容如下

复制代码 代码如下:

global
   log 127.0.0.1 local0
   maxconn 4096
   chroot /usr/local/doc/haproxy
   uid 501
   gid 501
   daemon
   nbproc 1
   pidfile /usr/local/doc/haproxy/haproxy.pid
defaults
   log    127.0.0.1  local3
   mode   http
   option httplog
   option httpclose
   option dontlognull
   option forwardfor
   option redispatch
   retries 2
   maxconn 2000
   balance roundrobin
   stats   uri    /haproxy-status
   stats hide-version
   stats realm Gemini\ Haproxy
   stats auth admin:admin
   contimeout  5000
   clitimeout  50000
   srvtimeout  50000
listen web_proxy 192.168.2.100:80
   server web1 192.168.5.54:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
   server web2 192.168.5.57:8080 cookie app1inst2 check inter 2000 rise 2 fall 5

4、BACKUP上安装keepalived,步骤也不多介绍,keepalived.conf文件内容就两处有变化,红色字体标出

复制代码 代码如下:

! Configuration File for keepalived
global_defs {
   router_id LVA_DEVEL
}
vrrp_script chk_http_port {
   script "/root/check_haproxy.sh"
   interval 2
   weight  2
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
track_script {
    chk_http_port
}
    virtual_ipaddress {
        192.168.2.100
    }
}

调用脚本check_haproxy.sh内容:

复制代码 代码如下:

#!/bin/bash
A=`ip a | grep 192.168.2.100 | wc -l`
B=`ps -ef | grep haproxy | grep -v grep | awk '{print $2}'`
if [ $A -gt 0 ];then
/usr/local/sbin/haproxy -f /usr/local/doc/haproxy/haproxy.cfg
else
kill -9 $B
fi

5、两台负载机器我就不多介绍了,用的是系统自带的apache
登录192.168.5.54上操作:
echo 'this is 192.168.5.54!' > /var/www/html/index.html
修改/etc/httpd/conf/httpd.conf文件的监听端口为8080
sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
/etc/init.d/httpd start
登录192.168.5.57上操作:
echo 'Hello,This is 192.168.5.57!' > /var/www/html/index.html
修改/etc/httpd/conf/httpd.conf文件的监听端口为8080
sed -i 's/Listen 80/Listen 8080/g' /etc/httpd/conf/httpd.conf
/etc/init.d/httpd start

6、测试步骤

启动MASTER上的keepalived服务,再启动BACKUP上的keepalived服务。
确定MASTER上是否有192.168.2.100地址,用ip a查看即可!
然后手动杀掉MASTER上的haproxy进程,看看是否能马上恢复进程?
停止MASTER上的keepalived服务,确认BACKUP是否接管VIP地址?
最后再启动MASTER上的keepalived服务,再确认MASTER是否再接管VIP地址?
总结:我这测试都没问题,如果有问题请给我留言!原文:http://blog.chinaunix.net/uid-23916356-id-3387261.html

时间: 2024-11-02 10:30:49

haproxy+keepalived实现高可用负载均衡(实例配置)_Linux的相关文章

haproxy+keepalived实现高可用负载均衡(理论篇)_Linux

HAProxy相比LVS的使用要简单很多,功能方面也很丰富.当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器.内部协议通信服务器等),和7层(HTTP).在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量.7层模式下,HAProxy会分析协议,并且能通过允许.拒绝.交换.增加.修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则. 我现在用HAProxy主要在于它有以下优点,这里我

Keepalived+HAProxy实现MySQL高可用负载均衡的配置_Mysql

 Keepalived 由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,这里提供了keepalived+haproxy来实现.       keepalived主要功能是实现真实机器的故障隔离及负载均衡器间的失败切换.可在第3,4,5层交换.它通过VRRPv2(Virtual Router Redundancy Protocol) stack实现的.       Layer3:Keepalived会定期向服务器群中的服务器.发送一个ICMP的数据包(既我们平时用的Ping程

LVS+Keepalived构建高可用负载均衡的配置

一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由 章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org .现在LVS已经是 Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必 须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置 了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功 能.使用LVS技术要达到的目标是:

LVS+Keepalived构建高可用负载均衡(测试篇)_Linux

一. 启动LVS高可用集群服务 首先,启动每个real server节点的服务: [root@localhost ~]# /etc/init.d/lvsrs start start LVS of REALServer 然后,分别在主备Director Server启动Keepalived服务: [root@DR1 ~]#/etc/init.d/Keepalived start [root@DR1 ~]#/ ipvsadm -L IP Virtual Server version 1.2.1 (s

CentOS6.4 LVS+keepalived高可用负载均衡服务配置

CentOS6.4 LVS+keepalived高可用负载均衡服务配置     一:测试环境信息 服务器DELL-R720 虚拟化 KVM 虚拟机4台: ipvs01,ipvs02,web01,web02 [root@KVM01~]# virsh list  Id    Name                           State ----------------------------------------------------  1     SN-web01         

LVS+Keepalived构建高可用负载均衡的测试

一. 启动LVS高可用集群服务 首先,启动每个real server节点的服务: [root@localhost ~]# /etc/init.d/lvsrs  start start LVS  of  REALServer 然后,分别在主备Director Server启动Keepalived服务: [root@DR1 ~]#/etc/init.d/Keepalived  start [root@DR1 ~]#/ ipvsadm -L IP Virtual Server version 1.2.

Nginx+Keepalived(双机热备)搭建高可用负载均衡环境(HA)

基于 Nginx+Tomcat+Redis负载均衡Session共享来实现后续的功能 个人微信小程序.是关于人工智能的.应用是百度大脑 和 腾讯优图的人脸识别 有问题加QQ:783021975 验证问题写明在哪知道的QQ.直接说问的问题.会在不忙的时候回复你.毕竟我也有自己的工作要做. 一张简单的图说下大概的意思 安装Keepalived到CentOS虚拟机环境(2个虚拟机都安装) 使用的版本为keepalived-1.2.24.tar.gz 为了方便安装,在系统里面提前下载好相关的库 yum

RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡

原文地址:http://www.cnblogs.com/mchina/archive/2012/05/23/2514728.html 一.简介 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一. 目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR):十种调度算法(rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). K

tengine + tomcat 安装整合实现高可用负载均衡

先介绍下tengine Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验.它的最终目标是打造一个高效.稳定.安全.易用的Web平台. 好,在做之前呢,说下为什么要做这个东西 1.nginx反向代理不需要tomcat的IP是否为外网IP,只要nginx server能和tomcat进行通讯,安全的同时减少了不必要的外网ip 2.当tomcat宕掉