搭建HAProxy+Keepalived 高可用负载均衡

在搭建HAProxy+Keepalived 高可用负载均衡之前先来简单了解一下HAProxy和keepalived的原理。

HAProxy

HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

keepalived

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

HAProxy+Keepalived 高可用负载均衡工作示意图:

在这里插入图片描述
对上图做个说明,前端的haproxy负责代理后端的web服务器,可以防止后端web服务器暴露在网络上,相对的提高了后端web服务器的安全性,keepalived负责热备份,当主服务器由于故障宕机后,从服务器可以代替其工作,从而保证了服务的不间断运行。

配置后端web服务(以Nginx为例)

以web_server1为例,web_server2同web_server1:
安装Nginx服务,并启动

yum -y install epel-release     # 安装Nginx源
yum -y install nginx   # 安装Nginx
systemctl start nginx   # 启动Nginx服务
systemctl enabled nginx   #开机自启动

创建测试页面

mv /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html_bak   #备份默认页面
vim /usr/share/nginx/html/index.html
This is Server 111111

关闭防火墙和selinux

systemctl stop firewalld
setenforce 0

验证
在这里插入图片描述
在这里插入图片描述

配置HAProxy

安装haproxy

yum -y install haproxy

haproxy配置
配置文件路径为/etc/haproxy/haproxy.cfg,配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。

mv /etc/haproxy/haproxy.cfg  /etc/haproxy/haproxy.cfg_bak   #先备份原配置文件
vim /etc/haproxy/haproxy.cfg
# 全局配置
global
    log 127.0.0.1 local3 info # 定义全局性的日志
    chroot /var/lib/haproxy # 修改haproxy的工作目录
    maxconn 4000 # haproxy接受的最大并发数
    daemon # 用守护进程的方式运行haproxy
    user haproxy # 运行haproxy的用户
    group haproxy # 运行haproxy的组
# 代理设置
defaults # 用于提供默认参数的配置
    log global # 日志使用global的全局定义
    mode http # 模式http
    option httplog # 记录http请求
    retries 3 # 重试3次
    timeout connect 5000 # 转发后端的超时时间
    timeout client 50000 # 客户端超时时间
    timeout server 50000 # 等待服务器响应的超时时间

listen stats # 监听统计状态
    mode http
    bind 0.0.0.0:8080 # 绑定地址端口
    stats enable # 启用统计报告
    stats uri /stats # 定义访问统计页面路径
    stats realm Haprroxy\ Statistics 
    stats auth admin:admin # 定义认证用户账号密码

listen nginxserver # 监听的服务名称
    bind *:80 # 绑定的地址和端口
    mode http # 定义运行的模式
    default_backend nginx # 设定代理对应的后端

backend nginx # 代理后端服务器的配置
    balance roundrobin # 定义轮训算法
    option httpchk GET /index.html # 设定检查方式
    server nginx1 192.168.1.10:80 check inter 2000 rise 3 fall 3 weight 30 # 定义轮训后端以及代理健康检查
    server nginx2 192.168.1.20:80 check inter 2000 rise 3 fall 3 weight 30

启动服务

systemctl restart haproxy
systemctl enable haproxy

关闭防火墙和selinux

systemctl stop firewallld
setenforce 0

验证haproxy代理
在这里插入图片描述
在这里插入图片描述
说明:haproxy在两台服务器上的配置相同

配置keepalived

安装keepalived,并启动服务

yum -y install keepalived
systemctl start keepalived
systemctl enable keepalived

主服务器的配置

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak   #备份原配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
    router_id LVS_TEST
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 101
    advert_int 1
    authentication {
        auth_type PASS
        auth_type 1234
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

从服务器的配置

mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak   #备份原配置文件
vim /etc/keepalived/keepalived.conf
global_defs {
    router_id LVS_TEST
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_type 1234
    }
    virtual_ipaddress {
        192.168.1.100
    }
}

重启服务

systemctl restart keepalived

关闭防火墙和selinux

systemctl stop firewalld
setenforce 0

验证keepalived服务
在这里插入图片描述
说明:在主服务器上能看到虚拟IP就说明keepalived已经配置成功了


以上所有的配置都是单独的,下面对haproxy和keepalived做一个结合,从而实现高可用负载均衡。想要haproxy和keepalived结合,只需在haproxy配置文件中将监听地址设置成keepalived设置的虚拟IP地址即可,具体配置如下:

vim /etc/haproxy/haproxy.cfg
......
# 修改监听地址即可
listen nginxserver
    bind 192.168.1.100:80     # 主从服务器配置相同
    mode http
    default_backend nginx

验证HAProxy和keepalived

在这里插入图片描述
在这里插入图片描述
关掉主服务器上的keepalived服务验证。

systemctl stop keepalived

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42342456/article/details/86356310