阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

基于Keepalived对HAproxy做高可用集群

419次阅读
没有评论

共计 11150 个字符,预计需要花费 28 分钟才能阅读完成。

一、Keepalived 简介

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

Layer3,4&7 工作在 IP/TCP 协议栈的 IP 层,TCP 层,及应用层, 原理分别如下:

Layer3:Keepalived 使用 Layer3 的方式工作式时,Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既我们平时用的 Ping 程序), 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。

Layer4: 如果您理解了 Layer3 的方式,Layer4 就容易了。Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是 80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中剔除。

Layer7:Layer7 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

Haproxy 实现 Exchange 全透明代理服务 http://www.linuxidc.com/Linux/2014-10/108530.htm

二、安装配置

1. 拓扑图

基于 Keepalived 对 HAproxy 做高可用集群

说明:1. 两个代理服务器通过 VIP 向外提供数据

2. 两个代理服务器都可以代理后端的服务器

3. 为测试方便,后端服务器至提供静态页面

2.ip 规划

功用 ip 地址 安装软件
VIP192.168.1.99 
反向代理 1 192.168.1.201keepalived、haproxy
反向代理 2 192.168.1.204keepalived、haproxy
web 服务器 1 192.168.1.202httpd
web 服务器 2 192.168.1.203httpd

3. 安装配置 haproxy

关于 haproxy 的详细配置,请参照 http://www.linuxidc.com/Linux/2014-12/110816.htm

[root@node1 ~]# cat /etc/haproxy/haproxy.cfg
#———————————————————————
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#  http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#———————————————————————
#———————————————————————
# Global settings
#———————————————————————
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the ‘-r’ option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #  file. A line like the following can be added to
    #  /etc/sysconfig/syslog
    #
    #    local2.*                      /var/log/haproxy.log
    #
    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
#———————————————————————
# common defaults that all the ‘listen’ and ‘backend’ sections will
# use if not designated in their block
#———————————————————————
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
#———————————————————————
# main frontend which proxys to the backends
#———————————————————————
frontend  main *:80
    default_backend static 
#———————————————————————
# static backend for serving up images, stylesheets and such
#———————————————————————
backend static
    balance    roundrobin
    server      node2 192.168.1.202:80 check maxconn 2000
    server      node3 192.168.1.203:80 check maxconn 2000
#———————————————————————
# round robin balancing between the various backends
#———————————————————————

说明:两个节点的 HAproxy 的配置文件应该保持一样

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-12/110815p2.htm

4. 测试 haproxy 的配置

基于 Keepalived 对 HAproxy 做高可用集群

基于 Keepalived 对 HAproxy 做高可用集群

5. 安装配置 keepalived

①、安装 keepalived

keepalived 的安装可以通过 yum 源来安装,也可以通过编译源码来安装,本处通过 yum 源赖安装

②、配置 keepalived 主节点

[root@node1 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {// 全局参数
  notification_email {// 邮件
    sysadmin@firewall.loc // 收件人地址
  }
  notification_email_from Alexandre.Cassen@firewall.loc // 发件人地址
  smtp_server 127.0.0.1  // 邮件服务器的地址
  smtp_connect_timeout 30  // 间隔时间
  router_id LVS_DEVEL  // 邮件服务器的组的 id
}
vrrp_script chk_haproxy {
    script “killall -0 haproxy”  // 检查 haproxy 是否在线
    interval 1    // 检查间隔时间
    weight -5    // 如果检查失败,则权重 -5
}
vrrp_instance VI_1 {// 定义第一个集群
    state MASTER      // 初始状态为主节点,从节点应该为 BACKUP
    interface eth0    // 配置 ip 的端口
    virtual_router_id 51  // 本组集群的 id 号,主从节点必须一样
    priority 100  // 主节点的优先级,备用节点的优先级必须低于主节点
    advert_int 1  // 心跳检查间隔时间
    authentication {
        auth_type PASS  // 通信为明文密码通信
        auth_pass 1111  // 通信的密码,主从节点必须一样
    }
    virtual_ipaddress {
        192.168.1.99    // 定义一个 VIP
    }
track_script {// 调用上面的命令
    chk_haproxy
}
}

 ③、配置 keepalived 从节点

[root@node4 ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
  notification_email {
    sysadmin@firewall.loc
  }
  notification_email_from Alexandre.Cassen@firewall.loc
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id LVS_DEVEL
}
vrrp_script chk_haproxy {
    script “killall -0 haproxy”
    interval 1
    weight -5
}
vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.99
    }
track_script {
    chk_haproxy
}
}

6. 测试

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:56:78:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.204/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.99/32 scope global eth0
    inet6 fe80::20c:29ff:fe56:78cd/64 scope link tentative dadfailed
      valid_lft forever preferred_lft forever

可以看到 ip 地址已经配置上去了

基于 Keepalived 对 HAproxy 做高可用集群

我们可以看到网页访问正常

下面,我们模拟服务器损坏,将 node1 上的 haproxy 关掉,看看 ip 地址是否会转移到 node4 上

 [root@node4 ~]# ip add
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:56:78:cd brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.204/24 brd 192.168.1.255 scope global eth0
    inet 192.168.1.99/32 scope global eth0
    inet6 fe80::20c:29ff:fe56:78cd/64 scope link tentative dadfailed
      valid_lft forever preferred_lft forever

查看网页是否能够访问正常

基于 Keepalived 对 HAproxy 做高可用集群

OK!!可以看到我们的页面访问正常,这就可以实现当前段的一个反向代理服务器宕机或者后端的一个 web 服务宕机,服务都可以正常对外提供

7. 扩展

我们还可以自定义通知机制

#!/bin/bash
# Author: wangfeng7399<wangfeng17399@163.com>
# description: An example of notify script
#
vip=192.168.1.99
contact=’root@localhost’
notify() {
    mailsubject=”`hostname` to be $1: $vip floating”
    mailbody=”`date ‘+%F %H:%M:%S’`: vrrp transition, `hostname` changed to be $1″
    echo $mailbody | mail -s “$mailsubject” $contact
}
case “$1” in
    master)
        notify master
        exit 0
    ;;
    backup)
        notify backup
        exit 0
    ;;
    fault)
        notify fault
        exit 0
    ;;
    *)
        echo ‘Usage: `basename $0` {master|backup|fault}’
        exit 1
    ;;
esac

在 keepalived 的配置文件中通过 notify 来调用,如下所示

notify_master “/etc/keepalived/notify.sh master”
notify_backup “/etc/keepalived/notify.sh backup”
notify_fault “/etc/keepalived/notify.sh fault”

大功告成,由于本人水平有限,可能有逻辑上的错误,请各位大神匹配指正

HAproxy 的详细介绍 :请点这里
HAproxy 的下载地址 :请点这里

一、Keepalived 简介

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

Layer3,4&7 工作在 IP/TCP 协议栈的 IP 层,TCP 层,及应用层, 原理分别如下:

Layer3:Keepalived 使用 Layer3 的方式工作式时,Keepalived 会定期向服务器群中的服务器发送一个 ICMP 的数据包(既我们平时用的 Ping 程序), 如果发现某台服务的 IP 地址没有激活,Keepalived 便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3 的方式是以服务器的 IP 地址是否有效作为服务器工作正常与否的标准。在本文中将采用这种方式。

Layer4: 如果您理解了 Layer3 的方式,Layer4 就容易了。Layer4 主要以 TCP 端口的状态来决定服务器工作正常与否。如 web server 的服务端口一般是 80,如果 Keepalived 检测到 80 端口没有启动,则 Keepalived 将把这台服务器从服务器群中剔除。

Layer7:Layer7 就是工作在具体的应用层了,比 Layer3,Layer4 要复杂一点,在网络上占用的带宽也要大一些。Keepalived 将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则 Keepalived 将把服务器从服务器群中剔除。

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

Haproxy 实现 Exchange 全透明代理服务 http://www.linuxidc.com/Linux/2014-10/108530.htm

二、安装配置

1. 拓扑图

基于 Keepalived 对 HAproxy 做高可用集群

说明:1. 两个代理服务器通过 VIP 向外提供数据

2. 两个代理服务器都可以代理后端的服务器

3. 为测试方便,后端服务器至提供静态页面

2.ip 规划

功用 ip 地址 安装软件
VIP192.168.1.99 
反向代理 1 192.168.1.201keepalived、haproxy
反向代理 2 192.168.1.204keepalived、haproxy
web 服务器 1 192.168.1.202httpd
web 服务器 2 192.168.1.203httpd

3. 安装配置 haproxy

关于 haproxy 的详细配置,请参照 http://www.linuxidc.com/Linux/2014-12/110816.htm

[root@node1 ~]# cat /etc/haproxy/haproxy.cfg
#———————————————————————
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#  http://haproxy.1wt.eu/download/1.4/doc/configuration.txt
#
#———————————————————————
#———————————————————————
# Global settings
#———————————————————————
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the ‘-r’ option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #  file. A line like the following can be added to
    #  /etc/sysconfig/syslog
    #
    #    local2.*                      /var/log/haproxy.log
    #
    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
#———————————————————————
# common defaults that all the ‘listen’ and ‘backend’ sections will
# use if not designated in their block
#———————————————————————
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
#———————————————————————
# main frontend which proxys to the backends
#———————————————————————
frontend  main *:80
    default_backend static 
#———————————————————————
# static backend for serving up images, stylesheets and such
#———————————————————————
backend static
    balance    roundrobin
    server      node2 192.168.1.202:80 check maxconn 2000
    server      node3 192.168.1.203:80 check maxconn 2000
#———————————————————————
# round robin balancing between the various backends
#———————————————————————

说明:两个节点的 HAproxy 的配置文件应该保持一样

更多详情见请继续阅读下一页的精彩内容 :http://www.linuxidc.com/Linux/2014-12/110815p2.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计11150字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7964798
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍

浏览器自动化工具!开源 AI 浏览器助手让你效率翻倍 前言 在 AI 自动化快速发展的当下,浏览器早已不再只是...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
安装并使用谷歌AI编程工具Antigravity(亲测有效)

安装并使用谷歌AI编程工具Antigravity(亲测有效)

  安装并使用谷歌 AI 编程工具 Antigravity(亲测有效) 引言 Antigravity...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...