Haproxy+keepalied实现web负载均衡

一、实验拓扑图;

keepalived;

keepalived的主要目的是为ipvs提供高可用性,因此keepalived除了能够实现资源转移之外,自身能够调用ipvsadm命令来生成规则,而且还能够检测后端Rserver服务的健康状态检测。keepalived自身就是一个服务 ,启动之后工作在两个节点上(可以是多个节点),一个为当前活动节点,一个为备用节点简称为一主(master)一备(backup)。master会不时的向backup传递通告信息(这种通告信息机制是基于vrrp协议),备用节点会一值处于存活状态,backup节点一但接收不到master的通告信息,就会把资源转移到自身节点上,生成规则,继续工作,这一转移的过程,对于用户来是说透明的.

HAProxy;

haproxy是高效,可靠的高可用及负载均衡解决方案,非常适用于处理高负载站点的七层数据请求。haproxy的工作模式使其可以非常容易且安全地集成到现有的站点架构当中。并且使用类似代理软件还可以对外屏蔽内部的真实web服务,防止内部服务器受到外部攻击,用户通过访问haproxy代理服务器获得站点页面,而代理服务器在收到客户端请求后会根据自身规则将数据请求转发后端真实服务器。

二、后端服务的安装与配置;

[[email protected] ~]# yum install httpd
[[email protected] ~]# echo "<h1>web1.yang.com</h1>" > /var/www/html/index.html
[[email protected] ~]# service httpd start
[[email protected] ~]# cat /var/www/html/index.html
<h1>web1.yang.com</h1>

[[email protected] ~]#  yum install httpd
[[email protected] ~]# echo "<h1>web2.yang.com</h1>" > /var/www/html/index.html
[[email protected] ~]# service httpd start
[[email protected] ~]# cat /var/www/html/index.html
<h1>web2.yang.com</h1>

[[email protected] ~]# yum install php php-mysql mysql mysql-server mysql-devel
[[email protected] html]# cat index.php
<?php
    $link = mysql_connect(‘172.16.34.1‘,‘ouyang‘,‘redhat‘);
    if ($link)
        echo "<h1>数据库连接成功...</h1>";
    else
        echo "<h1>数据库连接失败...</h1>";
    mysql_close();
    phpinfo();
?>

三、 haproxy的安装配置;

HA服务器上编译安装Haproxy;两台都需要安装,配置是一样的,这里只做一台服务器的配置,而后将其配置文件复制另一台HA即可;

#cd haproxy-1.4.24
[[email protected] haproxy-1.4.24]# uname -n
[[email protected] haproxy-1.4.24]# make TARGET=linux26 ARCH=x86_64
[[email protected] haproxy-1.4.24]# make install
[[email protected] haproxy-1.4.24]# mkdir /etc/haproxy
[[email protected] haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/
[[email protected] haproxy-1.4.24]# cp examples/haproxy.init /etc/init.d/haproxy
[[email protected] haproxy-1.4.24]# chmod +x /etc/init.d/haproxy
[[email protected] haproxy-1.4.24]# chmod +x /etc/init.d/haproxy
[[email protected] haproxy-1.4.24]# chkconfig --add haproxy
[[email protected] haproxy-1.4.24]# mkdir /usr/share/haproxy
[[email protected] haproxy-1.4.24]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

修改主配置文件;

[[email protected] haproxy-1.4.24]# vim /etc/haproxy/haproxy.cfg
global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        chroot /usr/share/haproxy
        uid 99
        gid 99
        daemon
        #debug
        #quiet
defaults
        log     global
        mode    http
        option  httplog        使用http日志
        option  dontlognull     不记录空连接日志,主要用于不记录健康检查日志
        retries 3         服务器连接失败后的重试次数
        option  redispatch    在http模式,如果使用cookie的服务器宕机,客户端还会坚持连接它,该选项在后端服务器宕机时强制将请求转发给其它的健康主机
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000
        timeout check   1s   设置检查超时时间
        timeout http-request    10s   连接超时时间
        timeout queue   1m
        timeout connect 10s   连接最大超时时间
        timeout client  1m   客户端最大超时时间
        timeout server  1m  服务器端最大超时时间
        timeout http-keep-alive 10s
listen  stats
        mode http
        bind 0.0.0.0:8080             #指定的IP地址与Port
        stats enable                  #开启Haproxy统计状态
        stats refresh 5s              #统计页面自动刷新的时间间隔
        stats hide-version            #状态页面不显示版本号
        stats uri   /admin           #统计页面的uri为"/admin"
        stats realm Haproxy\ admin    #统计页面认证时提示内容信息
        stats auth  admin:admin       #统计页面的用户名与密码
        stats admin if TRUE
frontend allen                    #定义前端服务器
        bind *:80
        mode http
        option httpclose              #每次请求完成主动关闭http连接
        option forwardfor             #后端服务器获取客户端的IP地址,可以从http header中获取
        acl url_static path_end -i .html .jpg .gif #定义ACL规则以如".html"结尾的文件;-i:忽略大小写
        acl url_dynamic path_end -i .php
        default_backend webservers    #客户端访问时默认调用后端服务器地址池
        use_backend lamp if url_dynamic #调用后端服务器并检查ACL规则是否被匹配
backend webservers                #定义后端服务器
        balance roundrobin            #定义算法;基于权重进行轮询
        server web1 172.16.34.2:80 check rise 2 fall 1 weight 3
        server web2 172.16.34.3:80 check rise 2 fall 1 weight 1
backend lamp
        balance source            #定义算法;源地址hash运算;类似于Nginx的ip_hash
        server lamp 172.16.34.1:80 check rise 2 fall 1

把ha-1定义好的配置文件传送至ha-2/etc/keepalived/目录下

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

#service haproxy start


启动haproxy服务,查看其状态检测页面;

四、keepalived的安装配置;两个ha互为主从;

ha-1 vip 172.16.34.100  ha1为主,ha2为从    当主服务ha-1设备宕机了会自动切换去从服务ha-2服务

ha-2 vip 172.16.34.200  ha2为从,ha1为主    当主服务ha-2设备宕机了会自动切换去从服务ha-1服务

ha-1安装配置keepalived;

[[email protected] ~]#yum -y install keepalived
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
   notification_email {
   [email protected]        定义邮件列表,当主服务器出现故障时进行主从切换时会发送邮件给邮件列表当中的所有人;
}
! Configuration File for keepalived
   notification_email_from [email protected]     定义邮件的发送者
   smtp_server 127.0.0.1          邮件服务器的IP
}
vrrp_script chk_proess {
        script "killall -0 haproxy"
        interval 1
        weight -2
}
vrrp_instance ha_1 {           定义第一个主设备ha-1
    state MASTER           ha-1主服务器
    interface eth0
    virtual_router_id 60       设置虚拟路由IP,相同的vrid为一个组,要求主从需不一致,为0-255;
    priority 100    虚拟路由组中设备的优代级,优化级高被推荐为主设备;
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.34.100       虚拟路由IP(VIP)
    }
        track_script {    调用上面所定义的脚本
            chk_proess
        }
}
vrrp_instance ha_2 {     定义第二个主设备ha-2
    state BACKUP    ha-2为从服务器
    interface eth0
    virtual_router_id 57        设置虚拟路由IP,相同的vrid为一个组,要求主从需不一致,为0-255;
    priority 87      虚拟路由组中设备的优代级,优化级高被推荐为主设备;
    advert_int 1
    authentication {
        auth_type PASS
         auth_pass 1111
    }
    virtual_ipaddress {
        172.16.34.200   从服务器的虚拟IP (VIP)
    }
}

ha-2安装配置keepalived;

[[email protected] ~]# #yum install -y keepalived
[[email protected] ~]# vim /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
}
vrrp_script chk_proess {
        script "killall -0 haproxy"
        interval 1
        weight -2
}
vrrp_instance ha_1 {
    state BACKUP       ha-1为从服务
    interface eth0
    virtual_router_id 60
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
virtual_ipaddress {
        172.16.34.100
    }
        track_script {
            chk_proess
        }
}
vrrp_instance ha_2 {
    state MASTER    ha-2为主服务器
    interface eth0
    virtual_router_id 57
    priority 88
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.34.200
    }
        track_script {
           chk_proess
        }
}

启动keepalived;

[[email protected] ~]#service keepalived start

[[email protected] ~]#service keepalived start

ha-1查看VIP是否启动;

[[email protected] ~]#ip addr show

[[email protected] ~]#ip addr show

五、测试静态web;分别使用两个VIP进行测试;

测试php;

六、故障测试;对ha-1宕机操作;

ha-1的VIP地址已没有;而后到ha-2上查看;如下图;

当再次启动ha-1的时候,ha-1的VIP还会自动回来;


如有错误,请各位大神指出........

Haproxy+keepalied实现web负载均衡,布布扣,bubuko.com

时间: 2024-10-11 09:08:33

Haproxy+keepalied实现web负载均衡的相关文章

Haproxy+Nginx实现web负载均衡群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx,相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持群集功能,但是对群集节点的健康检查功能不强,性能没有Hapr oxy好.Haproxy的官方网站是http://haproxy.1wt.eu/.本案例介绍使用Haproxy及Nginx搭建一套web群集. 一.案例环境 使用三台服务器模拟搭建一套web群集,具体的拓补图如下: 主机 系统 IP地址 主要软件 Haproxy

基于HAProxy+Keepalived高可用负载均衡web服务的搭建

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

RedHat 7配置HAProxy实现Web负载均衡

本文将简单介绍使用HAProxy实现web负载均衡,主要内容包括基于权重的轮询.为HAProxy配置https.配置http重定向为https.配置HAProxy使用独立日志. 一.测试环境 HAProxy: 主机名:RH7-HAProxy IP地址:192.168.10.20 操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)最小化安装 防火墙与SELinux:关闭 安装的服务:HAProxy-1.5.14 WEB01: 主机名:R

[转]Haproxy 1.5.0 正式发布,Web 负载均衡

From : http://www.oschina.net/news/53070/haproxy-1-5-0 经过 4 年的不懈努力,HAProxy 1.5.0 终于发布了! 相对于 1.4 版本来说,1.5 版本包括了许多新特性和性能改进: 支持 SNI/NPN/ALPN 和 OCSP stapling 的原生 SSL: 支持 IPv6 和 UNIX sockets: full HTTP keep-alive for better support of NTLM and improved ef

linux 下Haproxy实现简单四层负载均衡

HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. Haproxy的四层负载均衡搭建 主机规划: server 192.168.1.148  提供haproxy服务 后台  web1  192.168.1.150 web2  192.168.1.136 使用源码包安装 解压: tar -zxvf haproxy-1.4.24.tar.gz 进入到解压目录: cd  haproxy-1.4.24 编译: make TARGE

web负载均衡整理

参考:http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166350.html http://www.cnblogs.com/lovingprince/archive/2008/11/13/2166349.html http://news.cnblogs.com/n/208124/ http://network.51cto.com/art/201108/281452.htm 负载均衡的概念 Web集群是由多个同时运行同一个web应用的

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

总概:       Keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器       HAProxy提供高可用性

Web负载均衡的几种方式

Web负载均衡的几种实现方式 摘要:负载均衡(Load Balance)是集群技术(Cluster)的一种应用.负载均衡可以将工作任务分摊到多个处理单元,从而提高并发处理能力.目前最常见的负载均衡应用是Web负载均衡.根据实现的原理不同,常见的web负载均衡技术包括:DNS轮询.IP负载均衡和CDN.其中IP负载均衡可以使用硬件设备或软件方式来实现. 什么是web负载均衡服务器集群(Cluster)使得多个服务器节点能够协同工作,根据目的的不同,服务器集群可以分为: 高性能集群:将单个重负载的请

NFS共享MySQL使用DNS轮询实现Web负载均衡

NFS共享MySQL使用DNS轮询实现Web负载均衡 前言: 今天学习了NFS,遂结合前面学习的LAMP+Bind做一个实验,实现两台Web服务器采用同一个MySQL数据库和相同的网页文件,对LAMP和Bind不了解的可以去查看我以前写的博客: AnyISalIn的文章 实验拓扑图 实验环境 主机名 IP地址 实现 storage.anyisalin.com 192.168.2.5 NFS ns.anyisalin.com 192.168.2.2 dns,MySQL www.anyisalin.