HAProxy基于KeepAlived实现Web高可用及动静分离

    前言

    软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载均衡。LVS是基于Linux操作系统实现的一种软负载,而Haproxy则是基于第三方应用实现的软负载。Haproxy相比LVS的使用要简单很多,但跟LVS一样,Haproxy自己并不能实现高可用,一旦Haprox节点故障,将会影响整个站点。本文是haprox基于keepalived实现web高可用及动静分离。

    相关介绍

   

    HAProxy

    haproxy是一款提供高可用性、负载均衡以及基于TCP和HTTP应用的代理软件,Haproxy是完全免费的,借助Haproxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。Haproxy适用于那些负载较大的Web站点,这些站点通常又需要会话保持或七层出来。Haproxy可以支持数以万计的并发连接,并且Haproxy的运行模式使得它可以很简单安全的整合进架构中,同时可以包含web服务器不被暴露在网络上。

keepalived

keepalived是基于VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议工作的,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案----由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。

高可用解决方案拓扑

一、测试环境:Centos6.5;使用5台虚拟机

分别对他们设置主机名:
主机名                    ip地址                软件包
mail                      192.168.9.9           ansible
node1                     192.168.9.6           haproxy+keepalived
node2                     192.168.9.7           haproxy+keepalived
node3                     192.168.9.233         httpd
node4                     192.168.9.232         LAMP

二、准备工作:这里基于ansible做一下简单部署

1、基于ssh通信,先做密钥;
# ssh-copy-id  -i /root/.ssh/id_rsa.pub node1
# ssh-copy-id  -i /root/.ssh/id_rsa.pub node2
# ssh-copy-id  -i /root/.ssh/id_rsa.pub node3
# ssh-copy-id  -i /root/.ssh/id_rsa.pub node4

2、ansible设置及管理节点探测:
# cd /etc/ansible/
# vim hosts
[haproxy]
node1
node2

[images]
node3

[dynamic]
node4

# ansible all -m ping
node3 | success >> {
    "changed": false, 
    "ping": "pong"
}

node1 | success >> {
    "changed": false, 
    "ping": "pong"
}

node2 | success >> {
    "changed": false, 
    "ping": "pong"
}

node4 | success >> {
    "changed": false, 
    "ping": "pong"
}


三、在node1和node2上安装haproxy和keepalived

时间同步
# ansible haproxy -m shell -a ‘ntpdate cn.pool.ntp.org‘
node1 | success | rc=0 >>
21 Jan 16:34:32 ntpdate[3481]: step time server 202.112.29.82 offset -2.284555 sec

node2 | success | rc=0 >>
21 Jan 16:34:47 ntpdate[3286]: step time server 202.112.29.82 offset -2.287749 sec

# ansible haproxy -m shell -a ‘date‘
node1 | success | rc=0 >>
Thu Jan 21 16:43:37 HKT 2016

node2 | success | rc=0 >>
Thu Jan 21 16:43:37 HKT 2016

主机互信
[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub node2
[[email protected] ~]# ssh-keygen -t rsa
[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub node1

安装所需程序
# ansible haproxy -m shell -a ‘yum -y install haproxy keepalived‘

1、配置keepalived
在node1节点上修改keepalived
[[email protected] keepalived]# cp keepalived.conf{,.bak}
[[email protected] keepalived]# ls
keepalived.conf  keepalived.conf.bak
[[email protected] keepalived]# vim keepalived.conf

vrrp_instance VI_1 {        #定义VRRP实例,实例名自定义
    state MASTER            #指定keepalived的角色,MASTER为主服务器,BACKUP为备用服务器
    interface eth0          #指定HA监测的接口
    virtual_router_id 61    #虚拟路由标识(1-255),在一个VRRP实例中主备服务器ID必须一样
    priority 100            #优先级,数字越大优先级越高,主必须大于备
    advert_int 1            #设置主备之间同步检查时间间隔,单位秒
    authentication {        #设置验证类型和密码
        auth_type PASS      #验证类型
        auth_pass 12345678  #设置验证密码,同一实例中主备密码
    }
    virtual_ipaddress {
        192.168.9.8
}

[[email protected] keepalived]# scp keepalived.conf node2:/etc/keepalived
keepalived.conf                                     100%  515     0.5KB/s   00:00

在node2节点上修改keepalived

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 61
    priority 98
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.9.8
}

# ansible haproxy -m shell -a ‘service keepalived start‘
node1 | success | rc=0 >>
Starting keepalived: [  OK  ]

node2 | success | rc=0 >>
Starting keepalived: [  OK  ]

# ansible haproxy -m shell -a ‘ip addr show‘
node2 | success | rc=0 >>
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:a3:a6:aa brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.7/22 brd 192.168.11.255 scope global eth0
    inet6 fe80::20c:29ff:fea3:a6aa/64 scope link 
       valid_lft forever preferred_lft forever

node1 | success | rc=0 >>
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:20:16:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.9.6/22 brd 192.168.11.255 scope global eth0
    inet 192.168.9.8/32 scope global eth0
    inet6 fe80::20c:29ff:fe20:162e/64 scope link 
       valid_lft forever preferred_lft forever
       
###可以看出VIP在node1上

2、配置Haproxy
时间: 2024-10-12 08:44:32

HAProxy基于KeepAlived实现Web高可用及动静分离的相关文章

HAProxy+KeepAlived实现web服务高可用、动静分离等

大致规划: 主机 IP 描述 VIP 192.168.0.222 对外提供高可用IP haproxy+keepalived (node1) 192.168.0.111 haproxy为后端两台WEB服务的做动静分离:keepalived为haproxy做高可用. haproxy+keepalived (node2) 192.168.0.112 WEB                (node3) 192.168.0.113 提供静态请求响应 Apache+PHP+MySQL   (node4)

基于Keepalived实现Mysql高可用

前言 由于最近要使用Mysql数据库,而目前公司服务器与业务有限,于是只使用了一台Mysql.所以,问题很明显,如果这台Mysql坏了,那么将会影响整个公司的业务,所以考虑做Mysql的高可用方案.目前,Mysql的高可用方案很多,这里选择Keepalived+Mysql实现高可用. 环境介绍 ID OS IP Role node1 CentOS6.5_X64 192.168.1.159 Master node2 CentOS6.5_X64 192.168.1.160 Slave  Mysql

基于keepalived的nginx高可用

#nginx,keepalived安装略过 MASTER 节点配置文件(192.168.1.11) vi /etc/keepalived/keepalived.conf global_defs { ##keepalived自带的邮件提醒需要开启sendmail服务.建议用独立的监控或第三方SMTP ##标识本节点的字条串,通常为 hostname router_id 192.168.1.11 } ##keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance

Haproxy、Keepalived双主高可用负载均衡

一.HAPROXY介绍 提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的负载均衡软件. 它是免费.快速并且可靠的一种解决方案 特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理 二.衡量负责均衡器性能的因素 Session rate 会话率 – 每秒钟产生的会话数 Session concurrency 并发会话数 – 服务器处理会话的时间越长,并发会话数越多 Data rate 数据速率 – 以MB/s或Mbps衡量 – 大的对象导致并发会话数增加

[转] Haproxy、Keepalived双主高可用负载均衡

http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepalived双主模式做了测试,双主的模式充分利用了服务器资源,这样不会导致服务器浪费. 这里举例说明: 默认情况下,第一台负载均衡器主要分发www.zhirs.com的请求,第二台负载均衡器主要分发img.zhirs.com的请求. 任意一台宕机都不会影响网站分发. 实验环境 VIP1=192.168.13

Haproxy实现大并发web高可用群集部署

Haproxy web群集部署 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理,HAProxy实现了一种 单一进程模型,此模型支持非常大的并发连接数多进程或多线程模型受内存限制 .系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接. 部署环境: 主机 IP地址 主机名 软件 操作系统 Haproxy服务器 192.168.1.

LVS-DR+keepalived 搭建web高可用负载均衡

实验环境 redhat6.5 2.6.32-431.el6.x86_64 keepalived-1.2.16版本 ipvsadm-1.26-2.el6.x86_64 所有的虚拟机  都  关闭防火墙和selinux  配置好了本地yum源 搭建要求是对LVS-DR模式的原理熟悉,先配置好LVS-DR所需的环境.这里的环境是配置VIP DIP DIP 在同一个网段,并在realserver的lo接口上做好了arp抑制.具体见后面的脚本 当keepalived和LVS结合时,注意不需要在direct

keepalived实现web高可用集群

1.实验环境 两台CentOS-7.5虚拟机web1:10.0.11.203web2:10.0.11.204VIP :10.0.11.210web类型:nginx客户端:自用笔记本(win10) 2.准备两台web服务器 1)web1网卡情况[[email protected] ~]# [[email protected] ~]# ip a 2)web2网卡情况[[email protected] ~]# [[email protected] ~]# ip a 3)安装nginx web1端:[

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

1.实验环境 4台CentOS-7.5虚拟机web-1:192.168.18.103web-2:192.168.18.104keepalived-1(LVS-DR模式):192.168.18.107 keepalived-2(LVS-DR模式):192.168.18.108 vip:192.168.18.110其中keepalived和lvs安装在同一台机器,web单独一台安装客户端为:个人win10笔记本(192.168.18.102)4台虚机防火墙和selinux均已关闭 2.安装keepa