keepalived+Haproxy搭建高可用Web群集

Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂,搭建LVS群集可以参考博文:搭建:LVS+Keepalived高可用Web服务群集环境;Nginx的upstream模块支持群集功能,但是相对群集节点健康检查功能不强,性能没有Haproxy好,更多的是应用在企业内网环境中。Nginx群集可以参考博文:centos 7部署Tomcat及其负载均衡配置详解

上述几个web群集调度器属于软件类型的,还有很多硬件群集调度器,硬件一般使用比较多的是F5,也有很多公司使用国产的一些产品,如梭子鱼、绿盟等。硬件群集调度器有一些比较显而易见的缺点,如果说出问题了,还要需要厂家的技术支持,厂家维护时还需要我们的错误日志,在出现问题到问题解决这段时间,可能一个月的时间都过去了。若是使用软件型的群集调度器,那么只要我们运维人员技术过硬,发现问题到解决问题,很快的。

关于Haproxy常用的调度算法、配置文件及参数优化可以参考博文:

现在以下面的环境,进行搭建一个keepalived的高可用web群集(关于高可用存储服务器,这里就省略了,将在以后的文章写出如何搭建高可用的存储服务器),环境如下:

一、准备工作:

1、调通网络,防火墙放行相关流量(我这里直接将防火墙关闭了);

2、准备系统映像,配置本地yum(自行配置)。

3、下载haproxy源码包,可以从我提供的网盘链接下载使用:haproxy下载链接
提取码:54iv 。

4、web网站使用apache、Nginx、Tomcat搭建都可,只要可以访问就行,这里自行搭建吧,我为了测试方便,直接使用系统映像自带的httpd服务,web网站搭建可以参考:基于Linux搭建Apache网站服务配置详解基于centos 7搭建Nginx网站服务器

5、我这里使用的全部是centos 7系统,注意,该环境不是生产环境,若是在生产环境中,肯定还有后端存储来存放网页文件,web服务器读取存储服务器上的网页返回给客户端。这样才可保证网页内容的一致性。

二、开始搭建:

1、配置keepalived+haproxy主服务器:

[[email protected] ~]# yum -y install keepalived pcre-devel bzip2-devel
#挂载系统映像,安装相关软件包
[[email protected] media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src/     #解包
[[email protected] media]# cd /usr/src/haproxy-1.5.19/       #切换至源码包目录
[[email protected] haproxy-1.5.19]# make TARGET=linux26 && make install
#编译安装,TARGET配置项表示64位系统。haproxy无须./configure配置。
[[email protected] haproxy-1.5.19]# mkdir /etc/haproxy             #创建配置文件目录
[[email protected] haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
#将源码包自带的配置文件目录复制过来。
[[email protected] haproxy-1.5.19]# cd
[[email protected] ~]# vim /etc/haproxy/haproxy.cfg
#编辑主配置文件,根据当前环境,将主配置文件修改如下:
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log /dev/log    local0 info
        log /dev/log    local0 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
        option  dontlognull
     retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen  webcluster 0.0.0.0:80    #webcluster为群集名称,可自定义,修改后面的端口号。
        option  httpchk /index.html
        balance roundrobin        #表示采用轮询算法。
        server  inst1 192.168.1.3:80 check inter 2000 fall 3             #web节点1
         server  inst2 192.168.1.4:80 check inter 2000 fall 3  #web节点2,注意相关端口号
#注意,在配置文件下,有很多listen配置项,找到和我们需要的差不多的listen项复制到
#default配置项下,然后将后面所有的配置项删除,若不删除,可能服务启动时会报错。
[[email protected] ~]# cd /usr/src/haproxy-1.5.19/examples/           #切换至指定目录
[[email protected] examples]# cp haproxy.init /etc/init.d/haproxy    #复制服务控制脚本
[[email protected] examples]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
#创建软连接
[[email protected] examples]# chmod +x /etc/init.d/haproxy          #赋予文件执行权限
[[email protected] examples]# chkconfig --add /etc/init.d/haproxy       #添加为系统服务
[[email protected] examples]# systemctl restart haproxy              #启动haproxy服务
[[email protected] examples]# netstat -anpt | grep 80                #查看是否在监听
#haproxy服务默认监听80端口
tcp        0      0 0.0.0.0:80    0.0.0.0:*      LISTEN  12640/haproxy
[[email protected] ~]# vim /etc/rsyslog.d/haproxy.conf              #配置haproxy日志,写入下面内容

if ($programname == ‘haproxy‘ and $syslogseverity-text == ‘info‘) then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == ‘haproxy‘ and $syslogseverity-text == ‘notice‘) then -/var/log/haproxy/haproxy-notice.log
& ~
#写入后,保存退出即可。以下部分开始配置keepalived,haproxy已经配置完成了,
#现在client可以访问该服务器IP地址,看看是否可以刷到两个web服务器提供的网页。
#需要多刷新几次,web服务器准备不一样的网页才可看到效果。
[[email protected] ~]# vim /etc/keepalived/keepalived.conf    #编辑keepalived配置文件
#只改动以下标注的配置项即可
! Configuration File for keepalived

global_defs {
   notification_email {
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL1             #定义服务器名称,不可与其他服务器名称冲突
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33            #修改承载漂移IP地址的物理网卡
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    192.168.1.100              #指定漂移IP地址
    }
}
#配置项至此保存退出就可以了,将后面的所有配置项删除,以免影响服务启动。
[[email protected] ~]# systemctl restart keepalived               #重启keepalived服务。

2、配置keepalived+haproxy备份服务器:

[[email protected] ~]# systemctl stop firewalld          #关闭防火墙
[[email protected] ~]# yum -y install keepalived pcre-devel bzip2-devel
#挂载系统映像,安装相关软件包
[[email protected] media]# tar zxf haproxy-1.5.19.tar.gz -C /usr/src            #解包
[[email protected] media]# cd /usr/src/haproxy-1.5.19/
[[email protected] haproxy-1.5.19]# make TARGET=linux26 && make install    #安装
[[email protected] haproxy-1.5.19]# cd
[[email protected] ~]# mkdir /etc/haproxy            #创建配置文件目录
[[email protected] ~]# scp [email protected]:/etc/haproxy/haproxy.cfg /etc/haproxy/
#直接将主服务器的haproxy配置文件复制过来
[email protected] s password:          #输入主服务器的用户密码
haproxy.cfg                                 100%  566   460.5KB/s   00:00
[[email protected] ~]# scp [email protected]:/etc/init.d/haproxy /etc/init.d/haproxy
[email protected] password:
haproxy                                     100% 2553     2.1MB/s   00:00
[[email protected] ~]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy        #创建链接文件
[[email protected] ~]# chkconfig --add /etc/init.d/haproxy            #添加为系统服务
[[email protected] ~]# systemctl start haproxy              #启动服务
[[email protected] examples]# netstat -anpt | grep 80                #查看是否在监听
#haproxy服务默认监听80端口
tcp        0      0 0.0.0.0:80    0.0.0.0:*      LISTEN  12640/haproxy
[[email protected] ~]# vim /etc/rsyslog.d/haproxy.conf              #配置haproxy日志,写入下面内容

if ($programname == ‘haproxy‘ and $syslogseverity-text == ‘info‘) then -/var/log/haproxy/haproxy-info.log
& ~
if ($programname == ‘haproxy‘ and $syslogseverity-text == ‘notice‘) then -/var/log/haproxy/haproxy-notice.log
& ~
#写完保存退出即可。
[[email protected] ~]# systemctl restart rsyslog                  #重启日志服务
[[email protected] ~]# scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/
#将主服务器的keepalived配置文件复制过来
[email protected] password:                  #输入主服务器的用户密码
keepalived.conf                             100%  630   622.3KB/s   00:00
[[email protected] ~]# vim /etc/keepalived/keepalived.conf
#修改下面三个配置项:
                     ................
router_id LVS_DEVEL2       #将服务器名称改一下,别和主服务器冲突
                     ..............
state BACKUP            #将状态改为BACKUP
                     ...............
priority 90            #修改一下优先级,要比主服务器优先级低

#改完以上三行,保存退出即可。
[[email protected] ~]# systemctl start keepalived           #启动keepalived服务

至此,keepalived+haproxy就配置完成了,可以使用client进行访问测试,模拟主服务器宕机等问题,测试高可用。

原文地址:https://blog.51cto.com/14154700/2417579

时间: 2024-12-14 18:50:06

keepalived+Haproxy搭建高可用Web群集的相关文章

Keepalived + LVS-DR搭建高可用Web服务器集群

导航: Keepalived概述 LVS概述 编译安装keepalived 配置主调度器 双机热备 一.Keepalived概述 keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层.第4层和第5层交换.Keepalived是自动完成,不需人工干涉,需要人工做的只是修复故障的web服务器.Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:Layer3:Keepalived使用Layer3的方式工作式时,Ke

部署LVS-DR+Keepalived搭建高可用web群集

实现LVS的DR模式 一. 实验环境 三台机器: Director节点: (ens33 192.168.10.53 vip ens33:0 192.168.10.80) Real server1: (ens33 192.168.10.51 vip lo:0 192.168.10.80) Real server2: (ens33 192.168.10.52 vip lo:0 192.168.10.80) 二. 安装和配置 1. 配置两个real server服务器 (1) 配置虚拟IP地址(VIP

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

global_defs { notification_email { [email protected] } notification_email_from [email protected] smtp_server smtp.163.com stmp_connect_timeout 30 router_id lnmp_node2 } # 检测haproxy脚本 vrrp_script chk_haproxy { script "/etc/keepalived/check_haproxy.sh&

HAproxy+Keepalived负载均衡-高可用web站

haproxy+keepalived负载均衡高可用web站   OS IP 子网掩码 路由网关 Centos6.6 HAproxy Keepalived Eth0:192.168.26.210 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6 HAporxy Keepalived Eth0:192.168.26.211 255.255.252.0 192.168.25.3 VIP:192.168.27.210 Centos6.6(WE

keepalived+haproxy实现高可用

实验环境: 2台centos 6.5作为keepalived+haproxy的高可用,3台centos6.5配置httpd作为后端server,haproxy的轮询采用rr调度算法.vip:192.168.8.199 ha1:eth1:192.168.8.41,keepalived+haproxy ha3:eth1:192.168.8.43,keepalived+haproxy  rs1:192.168.8.21.httpd rs2:192.168.8.22.httpd rs3:192.168.

keepalived+nginx搭建高可用and负载均衡集群

keepalived+nginx搭建高可用and负载均衡集群 前言 因生产环境需要,现需要搭建一个前端为nginx的HA双向互备.后端为nginx代理的loadbalance负载均衡集群.nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worke

InitPHP框架搭建高可用WEB应用01:创建项目

创建Hello World项目 1. 下载框架 选择最新的版本,进行下载.框架下载地址:http://initphp 2. 创建项目目录 创建项目目录,目录示意图: 1. 文件夹initphp是最新下载的initphp框架文件夹 2. conf/comm.conf.php 放置项目配置文件 3. web/controller/ 文件夹放置控制器文件 4. index.php是项目入口文件 说明:使用initphp开发的项目是单入口,所有请求都会通过index.php进行分发. 3. index.

搭建高可用web和数据库集群

1.项目简介即拓扑图本次设计使用keepalived与lvs搭建一个调度器集群,实现lvs调度器的高可用,当lvs调度器的master宕机后,keepalived会自动切换到backup上.调度后面的web集群,实现web集群的负载均衡,前方调度器会根据lvs算法把服务发给web集群中的主机去响应.在web集群后面搭建数据库集群,数据库设置主主结构,并添加keepalived来实现高可用.具体拓扑图如下: 2.环境准备机器名称 IP配置 服务角色 备注LVS1-master 192.168.4.

RabbitMq 基于 keepalived+haproxy实现高可用

1  概述 rabbitmq作为消息队列,广泛用于生产环境,但是,如果单节点,将导致故障后,生产环境不可用,因此,需要部署高可用环境 本文将介绍基于keepalived+haproxy实现rabbitmq的高可用 rabbitmq的集群中,所有节点都可读写,因此,可用haproxy调度到后端的任意一台rabbitmq上. 环境准备 三个节点mq-01 mq-02 mq-03 ,这里服务器复用了redis的服务器节点,所以机器名忽略. 添加hosts文件 #这一步很关键,所有的节点都要配置一样,否