HAproxy+pacemaker实现apache的负载均衡

本文介绍了如何使用HAproxy和pacemaker在Linux环境下实现Apache服务器的负载均衡和高可用性。首先,详细阐述了在集群节点上安装和配置HAproxy的步骤,包括安装软件、修改配置文件和设置虚拟IP。接着,描述了后端Apache服务器的配置,确保它们能够响应HTTP请求。然后,讲解了pacemaker的安装和配置,作为集群资源管理器,它能监控节点状态并在故障发生时自动恢复服务。最后,通过实际操作展示了当一个节点关闭时,pacemaker如何将服务切换到另一个节点,确保服务的连续性。

实验环境

主机名功能
server1集群节点
server2集群节点
server3后端服务器
server4后端服务器

一.安装配置HAproxy

配置集群节点server1:

1.安装haproxy

 yum install haproxy -y

2.修改配置文件

vim /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     65535
    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
    stats uri 		    /admin/stats  ##健康检查
    monitor-uri             /monitoruri	   ##监控管理	

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:5000
   # acl url_static       path_beg       -i /static /images /javascript /stylesheets
   # acl url_static       path_end       -i .jpg .gif .png .css .js

   # use_backend static          if url_static
   bind 	172.25.77.100:80 
   default_backend             static

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 172.25.77.3:80 check
    server      static 172.25.77.4:80 check

3.添加虚拟IP

ip addr add 172.25.77.100/24 dev eth0

在这里插入图片描述
4.重启

/etc/init.d/haproxy start

二.配置后端服务器

后端服务器server3和server4:
1.安装httpd

yum install httpd -y

2.在默认发布目录填写默认发布.html文件

vim /var/www/html/index.html

3.开启httpd

/etc/init.d/httpd start

在这里插入图片描述
在这里插入图片描述
4.测试:
浏览器访问172.25.77.100可以实现轮询访问后端服务器server3和server4:
在这里插入图片描述
在这里插入图片描述
健康检查:
在这里插入图片描述
监控管理界面:
在这里插入图片描述与server1相同的配置备用节点服务器server2,防止一个节点坏掉使得服务无法正常访问。

三.配置pacemaker

Pacemaker是一个集群资源管理器。它利用集群基础构件(OpenAIS、heartbeat 、 corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性。

1.安装pacemaker

yum install pacemaker corosync -y

2.安装 crmsh和pssh

rpm -ivh crmsh-1.2.6-0.rc2.2.1.x86_64.rpm --nodeps
rpm -ivh pssh-2.3.1-2.1.x86_64.rpm --nodeps

在这里插入图片描述在这里插入图片描述
3.修改配置文件

##复制配置文件模版
cp /etc/corosync/corosync.conf.example /etc/corosync/corosync.conf
##修改配置文件
vim /etc/corosync/corosync.conf
# Please read the corosync.conf.5 manual page
compatibility: whitetank

totem {
	version: 2
	secauth: off
	threads: 0
	interface {
		ringnumber: 0
		bindnetaddr: 172.25.77.0
		mcastaddr: 226.94.1.1
		mcastport: 5405
		ttl: 1
	}
}

logging {
	fileline: off
	to_stderr: no
	to_logfile: yes
	to_syslog: yes
	logfile: /var/log/cluster/corosync.log
	debug: off
	timestamp: on
	logger_subsys {
		subsys: AMF
		debug: off
	}
}

amf {
	mode: disabled
}
service {
	name:pacemaker
	ver:0
} 
aisexce {
	user:root
	group:root
} 

quorum {
	provider:corosync_votequorum
	expected_votes:2
	two_node:1
}

4.重启pacemaker和corosync

/etc/init.d/pacemaker start
/etc/init.d/corosync start

5.在server1配置pacemaker后,查看。在未在server2配置时,只有一个节点。
在这里插入图片描述
6.将配置文件复制给server2。server2与server1做以上相同的配置!
在这里插入图片描述7.查看有两个集群节点
在这里插入图片描述8.当关闭server1集群节点服务时
在这里插入图片描述9.移除server2集群节点

crm node standby

在这里插入图片描述

<think>嗯,用户让我介绍一下Linux的Pacemaker服务,我需要先回想一下自己对这个项目的了解。Pacemaker是一个高可用性的集群资源管理器,对吧?通常和Corosync一起使用,用来确保关键服务在服务器故障时能自动迁移到其他节点,避免服务中断。不过,可能有些细节需要确认一下,比如它的架构、主要功能和配置方式。 首先,我应该明确Pacemaker的定位,它属于集群资源管理的一部分,不同于负载均衡器,比如HAProxy或Nginx,后者是分配请求,而Pacemaker是确保服务本身在节点故障时转移到健康节点。这可能容易混淆,需要解释清楚两者的区别。 然后,核心功能方面,资源监控和故障转移是重点。Pacemaker会检测节点和服务状态,当检测到故障时,按照配置的策略重新启动服务或迁移到其他节点。另外,资源依赖和启动顺序也很重要,比如数据库服务要先于Web服务启动,否则Web服务可能无法连接数据库,导致问题。这些依赖关系需要正确配置。 高可用集群的架构通常是主备(Active/Passive)或者多主(Active/Active),但Pacemaker更常见于主备模式,尤其是在使用共享存储的情况下。比如,两个节点,一个运行服务,另一个待命,当活动节点故障时,备用节点接管。不过,用户可能想知道是否支持多主模式,需要查证。或者是否有案例支持多主,比如某些无状态服务可能可以同时运行在多个节点,但资源管理可能需要更复杂的配置。 配置方面,Pacemaker可以通过命令行工具如crm或pcs,或者图形界面如Hawk。需要提到这些工具,特别是pcs(Pacemaker/Corosync Configuration System),因为现在可能更多使用pcs而不是crm。用户可能需要基本的命令示例,比如如何创建资源、设置约束等。 资源代理(Resource Agents)是Pacemaker管理服务的关键,分为LSB、OCF、Systemd等类型。比如,使用OCF脚本可以更灵活地定义资源的行为,包括启动、停止、监控等操作。可能需要举例说明常见的资源类型,如IP地址、Apache服务、DRBD存储等。 约束条件部分,位置约束、顺序约束和共置约束。比如,某个服务更倾向于在某个节点运行,除非节点故障;服务A必须在服务B启动之后才能启动;两个服务必须运行在同一个节点上。这些约束的正确配置对于集群行为至关重要。 可能用户的实际应用场景包括Web服务器、数据库、虚拟化管理等。例如,运行一个高可用的MySQL集群,或者保证企业的关键应用如ERP系统持续可用。需要举一些实际的例子,帮助用户理解适用场景。 不过,用户可能存在的疑问包括:Pacemaker和Keepalived有什么区别?Pacemaker是否适用于云环境?配置复杂吗?有没有常见的问题或最佳实践?这些可能需要简要提及,但用户当前的问题主要是介绍,所以可能不需要深入,但需要考虑是否点到为止。 另外,需要注意Pacemaker通常与Corosync配合使用,Corosync负责集群通信和成员管理,而Pacemaker负责资源管理。可能应该提到这两个组件的关系,以及与其他工具如DRBD、STONITH(Shoot The Other Node In The Head)的关系,比如STONITH用于避免脑裂问题,通过强制关闭故障节点来保证数据一致性。 最后,可能应该给出一个简单的配置示例,比如配置一个虚拟IP资源,并设置主备节点,这样用户能有一个直观的认识。或者说明如何安装和启动Pacemaker服务,比如在基于RHEL的系统上使用yum或dnf安装相关的软件包,然后配置Corosync和Pacemaker。 总结下来,回答的结构应该是:定义Pacemaker,核心功能,架构组件,配置工具,资源代理,约束类型,应用场景,以及与相关技术的关系。同时,要注意用简洁的中文解释,避免过于技术化的术语,必要时举例说明。需要确保信息准确,比如确认Pacemaker是否支持多主模式,或者最新的版本特性是否有变化,可能需要查阅资料确认,不过根据已有的知识,Pacemaker支持多种配置模式,包括主备和多主,但通常主备更常见。</think>Pacemaker 是 Linux 系统中一个开源的高可用性(High Availability, HA)集群资源管理器,用于确保关键服务在服务器故障时能够自动恢复或迁移到其他节点,从而最大限度地减少服务中断时间。它通常与 **Corosync**(集群通信框架)配合使用,共同管理集群中的资源状态和故障转移。 --- ### **核心功能** 1. **资源监控与故障转移** 监控节点和服务状态,若检测到故障(如节点宕机、服务崩溃),自动将资源(如数据库、虚拟IP、Web服务)迁移到健康节点。 2. **资源依赖与启动顺序管理** 定义资源间的依赖关系(例如“数据库必须在Web服务之前启动”),确保服务按正确顺序启停。 3. **灵活的约束配置** 通过位置约束(偏好节点)、顺序约束(启动顺序)、共置约束(资源必须在同一节点)等规则,精确控制资源分配。 4. **脑裂(Split-Brain)防护** 配合 STONITH(Shoot The Other Node In The Head)机制,强制断开故障节点,避免集群因网络分区导致数据冲突。 --- ### **架构与组件** - **Pacemaker**:核心资源管理器,决策资源分配和故障恢复策略。 - **Corosync**:负责节点间通信和集群成员状态同步。 - **资源代理(Resource Agents)**:定义如何管理特定服务(如启动/停止Apache、挂载文件系统)。常见类型: - **OCF**(Open Cluster Framework):标准化脚本,支持自定义操作。 - **LSB**(Linux Standard Base):兼容系统Init脚本。 - **Systemd**:直接管理系统服务单元。 --- ### **典型应用场景** - **Web服务器高可用**:在多个节点间迁移虚拟IP和HTTP服务。 - **数据库容灾**(如MySQL、PostgreSQL):主库故障时自动切换至备库。 - **存储高可用**:管理DRBD(分布式复制块设备)或共享存储。 - **云与虚拟化**:与OpenStack、KVM等集成,保障虚拟机的高可用。 --- ### **配置工具** - **pcs**(Pacemaker/Corosync Configuration System):命令行工具,主流配置方式。 - **crm**(Cluster Resource Manager):旧版命令行工具(逐步被pcs替代)。 - **Hawk**:基于Web的图形管理界面。 --- ### **简单示例:配置虚拟IP高可用** ```bash # 安装Pacemaker和Corosync(以RHEL/CentOS为例) sudo dnf install pacemaker corosync pcs # 配置集群节点 sudo pcs cluster auth node1 node2 # 节点间认证 sudo pcs cluster setup --name my_cluster node1 node2 sudo pcs cluster start --all # 启动集群 # 创建虚拟IP资源 sudo pcs resource create Cluster_VIP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s # 设置资源首选节点 sudo pcs constraint location Cluster_VIP prefers node1=50 ``` --- ### **优势与挑战** - **优势**:高度灵活、支持复杂策略、跨平台(物理机、虚拟机、云)。 - **挑战**:配置复杂度较高,需深入理解集群逻辑;脑裂防护需正确配置STONITH设备。 --- ### **学习资源** - 官方文档:[https://clusterlabs.org/pacemaker/](https://clusterlabs.org/pacemaker/) - 书籍:《Pro Linux High Availability Clustering》(推荐系统学习) 通过合理配置,Pacemaker 能显著提升关键服务的可靠性,是构建企业级高可用基础设施的核心工具之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值