部署HAproxy+keepalived高可用集群

Haproxy介绍

Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,它支持双机热备、虚拟主机、基于TCP和HTTP应用代理等功能。

其配置简单,而且拥有很好的对服务器节点的健康检查功能(相当于keepalived健康检查),当其代理的后端服务器出现故障时,

Haproxy会自动的将该故障服务器摘除,当服务器的故障恢复后Haproxy还会自动将RS服务器添加

Haproxy特别使用与那些访问量很大。但又需要会话保持或七层应用的业务。Haproxy运行在普通的服务器硬件上,仅仅进行简单的优化就可以支持数以万计的并发连接。

并且它的运行模式使得它可以很简单安全的整合到各种网站的架构中,同时使得应用服务器不会暴露到网络中。

Haproxy软件引入了frontend,backend的功能,frontend(acl规则匹配)可以运维管理人员根据任意HTTP请求头做规则匹配,

然后把请求定向到相关的backend(server pools等待前端把请求转过来的服务器组)。通过frontend和backup,

我们可以很容易的实现haproxy的7层代理功能,haproxy是一款不可多得的优秀代理服务软件

Haproxy支持两种主要代理模式:第一个是4层tcp代理(例如:可用于邮件服务内部协议通信服务器、Mysql服务等)。

第二个是7层代理(如HTTP代理)。在4层tcp代理模式下,Haproxy仅在客户端和服务器之间双向转发流量。

但是在7层模式下Haproxy会分析应用层协议,并且能通过运行、拒绝、交换、增加、修改或者删除请求(request)或者回应(reponse)里指定内容来控制协议。

主服务器配置(从服务器与主服务器配置相同再此只拿主举栗子)

配置HAproxy

由于CentOS7之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境,然后才能编译安装HAProxy

下载lua依赖包
[root@localhost ~]#  yum install gcc libtermcap-devel ncurses-devel libevent-devel readline-devel  -y

下载lua安装包
[root@localhost ~]#  wget http://www.lua.org/ftp/lua-5.4.4.tar.gz
[root@localhost ~]#  tar zxvf lua-5.4.4.tar.gz -C /usr/src/
[root@localhost ~]#  cd /usr/src/lua-5.4.4/
[root@localhost lua-5.4.4]#  make linux test
[root@localhost lua-5.4.4]# src/lua -v
Lua 5.4.4  Copyright (C) 1994-2022 Lua.org, PUC-Rio

编译安装HAproxy

下载haproxy所需的依赖包
[root@localhost ~]#  yum -y install gcc gcc-c++ make  bzip2-devel openssl-devel pcre-devel systemd-devel


下载并解压haproxy
[root@localhost ~]# tar zxvf haproxy-2.7.3.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/haproxy-2.7.3/
[root@localhost haproxy-2.7.3]# make ARCH=x86_64 TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 USE_LUA=1 LUA_INC=/usr/src/lua-5.4.4/src/ LUA_LIB=/usr/src/lua-5.4.4/src/ PREFIX=/usr/local/haproxy
[root@localhost haproxy-2.7.3]# make install PREFIX=/usr/local/haproxy
[root@localhost haproxy-2.7.3]# ls /usr/local/haproxy/
doc  sbin  share
[root@localhost ~]# ln -sv /usr/local/haproxy/sbin/haproxy /usr/bin/
[root@localhost ~]# haproxy -v
HAProxy version 2.7.3-1065b10 2023/02/14 - https://haproxy.org/
Status: stable branch - will stop receiving fixes around Q1 2024.
Known bugs: http://www.haproxy.org/bugs/bugs-2.7.3.html
Running on: Linux 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64

编写HAproxy配置文件

[root@localhost ~]# mkdir /usr/local/haproxy/conf
[root@localhost ~]# vim /usr/local/haproxy/conf/haproxy.cfg 
global  
       log 127.0.0.1 local2 info
       maxconn 4096
       user haproxy
       group haproxy
       daemon
       #nbproc 1
       stats socket    /var/run/haproxy.stat mode 600 level admin
defaults
       log global
       mode http
       maxconn 2048
       retries 3
       option redispatch
       timeout connect 5000
       timeout client  50000
       timeout server  50000
       option abortonclose

       stats uri /admin?stats
       stats realm Private lands
       stats auth admin:123123
       stats hide-version

frontend http-in
        bind 0.0.0.0:80
        mode http
        log global
        option httplog
        option httpclose
        acl html url_reg -i \.html$
        use_backend html-server if html
        default_backend html-server

backend html-server
        mode http
        balance roundrobin
        option httpchk GET /index.html
        cookie SERVERID insert indirect nocache
        server html-A 192.168.100.1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
        server html-B 192.168.100.3:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5

准备HAProxy系统启动文件

[root@localhost ~]# vim /usr/lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target
 
[Service]
ExecStartPre=/usr/bin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -c -q
ExecStart=/usr/bin/haproxy -Ws -f /usr/local/haproxy/conf/haproxy.cfg -p /var/lib/haproxy/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID
LimitNOFILE=100000
 
[Install]
WantedBy=multi-user.target

[root@localhost ~]# systemctl enable haproxy.service --now
[root@localhost ~]# netstat -anptu | grep haproxy
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      3455/haproxy        
udp        0      0 0.0.0.0:60507           0.0.0.0:*                           3455/haproxy      

[root@localhost ~]# firewall-cmd --add-port=80/tcp --permanent 
[root@localhost ~]# firewall-cmd --reload 

搭建keepalived

[root@localhost ~]# yum -y install keepalived.x86_64 

keepalived master配置文件
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
   router_id LVS_1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.200
    }
}

keepalived backup配置文件
[root@localhost ~]# vim /etc/keepalived/keepalived.conf 
global_defs {
   router_id LVS_2
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.200


    }
}

[root@localhost ~]# systemctl enable keepalived.service --now                                                                                                          

查看master上的VIP

[root@localhost ~]# ip a

配置后端web服务器

web1
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /var/www/html/index.html
web1
[root@localhost ~]# systemctl start httpd

web2
[root@localhost ~]# yum -y install httpd
[root@localhost ~]# vim /var/www/html/index.html
web2
[root@localhost ~]# systemctl start httpd

访问测试(建议使用linux测试)

访问HAproxy master VIP地址

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
高可用性是指系统或服务能够持续提供正常的服务,即使部分组件或节点出现故障。VIP+Keepalived+HAProxy+SLB 是一种常见的高可用架构设计,下面我会简单介绍一下其实现原理和各个组件的作用。 1. VIP(Virtual IP):虚拟 IP 是一个不属于任何实际物理接口的 IP 地址,用于将外部请求定向到后端服务器集群。 2. KeepalivedKeepalived 是一个基于 VRRP(虚拟路由冗余协议)的软件,它可以管理 VIP,并确保在主节点故障时快速切换到备份节点。 3. HAProxyHAProxy 是一种高性能的负载均衡器,它能够将外部请求分发到后端服务器上,并提供各种负载均衡算法和健康检查机制。 4. SLB(Server Load Balancer):SLB 是一种云服务,通常由云服务提供商提供,它也是一种负载均衡器,可以将外部请求分发到后端服务器集群上。 实现高可用的过程如下: 1. 部署多台服务器作为后端服务器集群,这些服务器可以运行相同的应用程序或服务。 2. 在服务器集群中配置 Keepalived,并为其分配一个 VIP 地址,用于接收外部请求。 3. Keepalived 通过 VRRP 协议与服务器集群中的所有节点通信,选择其中一台作为主节点,其余节点作为备份节点。 4. 主节点负责接收外部请求并将其传递给 HAProxy 或 SLB。 5. HAProxy 或 SLB 根据负载均衡算法将请求分发到后端服务器集群中的可用节点上。 6. 如果主节点出现故障,Keepalived 会立即将 VIP 转移到备份节点,确保服务的连续性。 这种架构可以提供高可用性和负载均衡,并能够在出现故障时自动切换到备份节点,保证系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笨鸟先飞geigeigei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值