负载均衡是一种网络技术,可以通过在多个服务器之间分配网络流量来提高应用程序和网站的可用性和性能。
负载均衡器的类型
有两种主要类型的负载均衡器:
负载均衡算法
负载均衡器使用各种算法在服务器之间分配流量,包括:
- 轮询: 将流量顺序地分配到服务器。
- 最少连接数: 将流量分配到连接数最少的服务器。
- 权重轮询: 根据服务器的权重分配流量,权重较高的服务器接收更多的流量。
- IP 哈希: 根据客户端 IP 地址将流量分配到相同的服务器。
HA 负载均衡
HA 负载均衡(高可用性负载均衡)是一种负载均衡配置,旨在最大程度地提高应用程序和网站的可用性。它涉及使用两台或多台负载均衡器创建冗余配置,以确保一台负载均衡器发生故障时,另一台负载均衡器能够接管流量。
HA 负载均衡的关键优势包括:
- 提高可用性: 如果一台负载均衡器发生故障,其他负载均衡器将继续处理流量。
- 无缝故障转移: 当一台负载均衡器发生故障时,故障转移过程对客户端无缝进行。
- 可扩展性: HA 负载均衡器可以通过添加更多负载均衡器来轻松扩展,以满足不断增长的流量需求。
HA 负载均衡的实现
HA 负载均衡可以通过以下方式实现:
- 双负载均衡器: 使用两台负载均衡器,配置为主动-被动或主动-主动。
- 多负载均衡器: 使用三个或更多负载均衡器,配置为冗余集群。
- 全局服务器负载均衡器 (GSLB): 在地理分布式环境中使用负载均衡器集群,根据客户端位置将流量路由到最合适的服务器。
HA 负载均衡的最佳实践
在实施 HA 负载均衡时,建议遵循以下最佳实践:
- 使用可靠的硬件和软件。
- 配置冗余连接。
- 定期测试和维护负载均衡器。
- 使用健康检查来监控服务器的可用性。
- 实施故障转移机制。
- 记录故障转移事件并进行故障排除。
结论
负载均衡对于提高应用程序和网站的可用性、性能和可扩展性至关重要。HA 负载均衡通过提供冗余和无缝故障转移,使组织能够创建高度可靠和可用的环境。通过遵循这些最佳实践,组织可以最大限度地发挥 HA 负载均衡的优势,并确保其关键业务应用程序和服务始终可用。
haproxy+keepalived负载均衡之主备切换
VIP: 192.168.1.100
Master: 192.168.1.238
Slave: 192.168.1.239
真实IP:
RIP1: 192.168.1.235
RIP2: 192.168.1.236
以下为安装步骤
第一步:安装haproxy
下载zxvf
#make TARGET=linux26
#make install
第二步:安装ipvs
根据ipvs官网介绍,不同版本内核适用的ipvs版本不一样。适用于1.24的各个版本
(for kernel between 2.6.10 and 2.6.27.4) - December 10, 2005
(for 1.2.0 or later) - October 27, 2004
(for 1.1.8 or later) - January 10, 2004
(for 1.1.8 or later) - December 20, 2003
- December 10, 2005
安装之前,软连接系统内核目录
ln -s /usr/src/kernels/5-i686/ /usr/src/linux
查看系统当前的内核版本:
有时你找不到这个内核的路径,系统安装后并没有kernerls的目录
解决方法:yum install kernel-devel
接下来在进行连接 编译 就ok了!
我们使用最新的 ,下载安装。
cd ipvsadm-1.24
make install
第三步,安装keepalived
从上下载最新的。
cd keepalived-1.2.2
./configure
make install
安装完毕。配置
cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/ /etc/keepalived/
ln -s /usr/local/sbin/keepalived /usr/sbin/
service keepalived start
如果安装时的编译参数为: ./configure --prefix=/usr/local/keepalived
则操作步骤如下:
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/ /etc/keepalived/
ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
service keepalived start
以下为详细的配置文件
二、haproxy
(1)、haproxy配置文件
chroot /usr/local/haproxy
maxconn 256
user haproxy
group haproxy
log-send-hostname
log-tag my_xiaokk
pidfile /var/run/
log 127.0.0.1 local0 info
maxconn 256
timeout connect 5000ms
timeout client ms
timeout server ms
timeout check 2000
option httpclose
option httplog
option dontlognull
option forwardfor
option redispatch
option abortonclose
frontend http-www
bind 192.168.1.100:80
acl ha_policy hdr_reg(host) -i ^(|||)
acl ha_baby hdr_dom(host) -i
use_backend ha_www if ha_policy
use_backend ha_www if ha_baby
log 127.0.0.1 local0 info
listen admin_status
bind 192.168.1.100:1080
log 127.0.0.1 local0 info
stats uri /admin?status
stats refresh 30s
stats realm Haproxy/ Admin/ Center
stats auth admin:admin
stats hide-version
backend ha_www
balance source
cookie SERVERID
option httpchk HEAD /
server w1 192.168.1.235:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1
server w2 192.168.1.236:85 cookie 1 check inter 1500 rise 3 fall 3 weight 2
(2)、haproxy启却脚本
# chkconfig: - 85 15
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly /
# suited for high availability environments.
# processname: haproxy
# config: /usr/local/haproxy/conf/
# pidfile: /var/run/
# Source function library.
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up
[ ${NETWORKING} = no ]exit 0
[ -f /usr/local/haproxy/conf/ ] || exit 1
# start Haproxy
/usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/
if [ $? -ne 0 ]; then
echo Errors found in configuration file.
echo -n Starting Haproxy:
daemon /usr/local/haproxy/sbin/haproxy -D -f /usr/local/haproxy/conf/ -p /var/run/
[ $RETVAL -eq 0 ]touch /var/lock/subsys/haproxy
return $RETVAL
# stop Haproxy
echo -n Shutting down Haproxy:
killproc haproxy -USR1
[ $RETVAL -eq 0 ]rm -f /var/lock/subsys/haproxy
[ $RETVAL -eq 0 ]rm -f /var/run/
return $RETVAL
# restart Haproxy
restart() {
/usr/local/haproxy/sbin/haproxy -c -q -f /usr/local/haproxy/conf/
if [ $? -ne 0 ]; then
echo ERR found in configuration file, check it with haproxy check.
# check haproxy
/usr/local/haproxy/sbin/haproxy -c -q -V -f /usr/local/haproxy/conf/
rhstatus() {
status haproxy
# condrestart
condrestart() {
[ -e /var/lock/subsys/haproxy ]restart || :
# See how we were called.
condrestart)
condrestart
echo $Usage: haproxy {start|stop|restart|reload|condrestart|status|check}
exit $RETVAL
三、keepalived配置文件
Master的配置文件:
! Configuration File for keepalived
global_defs {
router_id LVS_1
vrrp_script chk_haproxy {
script /etc/keepalived/check_
vrrp_instance VI_1 {
state MASTER
priority 99
advert_int 1
virtual_router_id 50
garp_master_delay 1
interface eth0
authentication {
auth_type PASS
auth_pass Kxiaokk345Pix
track_interface {
virtual_ipaddress {
192.168.1.100
track_script {
chk_haproxy
notify_master /etc/keepalived/ master
notify_backup /etc/keepalived/ backup
notify_fault /etc/keepalived/ fault
Slave的配置文件
! Configuration File for keepalived
global_defs {
router_id LVS_2
vrrp_script chk_haproxy {
script /etc/keepalived/check_
vrrp_instance VI_1 {
state BACKUP
priority 96
advert_int 1
virtual_router_id 50
garp_master_delay 1
interface eth0
authentication {
auth_type PASS
auth_pass Kxiaokk345Pix
track_interface {
virtual_ipaddress {
192.168.1.100
track_script {
chk_haproxy
notify_master /etc/keepalived/ master
notify_backup /etc/keepalived/ backup
notify_fault /etc/keepalived/ fault
###### --- haproxy存活状态检测脚本
#!/bin/bash
# desc: check haproxy service
A=`ip address show eth0 | grep 192.168.1.100 | wc -l`
B=`ps -C haproxy --no-heading | wc -l`
if [ $A -eq 1 ]; then
if [ $B -eq 0 ]; then
/usr/local/haproxy/ start
主备切换时邮件提醒程序(此程序源自litus,有小改动,调试通过)
#!/usr/bin/python
#coding: utf-8
from import MIMEMultipart
from import MIMEText
from import MIMEImage
from import Header
import smtplib
# desc: send notify email
smtp_server =
smtp_user = toplover
smtp_pass = xxx***xxx
if [1] != master and [1] != backup and [1] != fault:
notify_type = [1]
mail_title = [crt] Haproxy-notify-info
mail_body_plain = notify_type + alive,please check it now
mail_body_html = bfont color=red + notify_type + alive,please check it now
msgRoot = MIMEMultipart(related)
msgRoot[Subject] = Header(mail_title,utf-8)
msgRoot[From] = strFrom
msgRoot[To] = strTo
msgAlternative = MIMEMultipart(alternative)
(msgAlternative)
msgText = MIMEText(mail_body_plain, plain, utf-8)
msgText = MIMEText(mail_body_html, html, utf-8)
(smtp_server)
(smtp_user,smtp_pass)
(strFrom, strTo, _string())
到此完成了简单的haproxy+keepalived负载均衡主从热备功能。
不明之处请参阅haproxy官方文件及keepalived官方文档。
“负载均衡”是什么意思?
“负载均衡”的意思是指建立在现有的网络结构之上,提供了一个便宜有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
负载均衡是什么意思
负载均衡是一种通过合理分配和调度资源,使系统中的负载均匀分布,提高系统的性能和可靠性的技术和策略。
1.什么是负载均衡
负载均衡是指在一个系统中,将工作负载均匀地分配到多个资源上,以提高系统的整体性能和可靠性。这个系统可以是计算机、网络或其他类型的系统。负载均衡的目标是确保每个资源都能够得到合理的利用,避免资源过载或闲置,从而提高系统的效率和稳定性。
2.负载均衡的原理
负载均衡的原理是通过将请求分发到多个服务器或资源上,使每个服务器或资源的负载均匀分布。有多种负载均衡算法可以实现这一目标,如轮询算法、加权轮询算法、最少连接算法等。这些算法会根据服务器的性能和负载情况,决定将请求发送到哪个服务器上,以实现负载均衡。
3.负载均衡的好处
提高系统的性能:通过将负载均匀地分配到多个资源上,可以减轻单个资源的负荷,提高系统的处理能力和吞吐量。提高系统的可靠性:通过将负载分散到多个资源上,即使某个资源发生故障或下线,系统仍然可以继续正常运行,提高了系统的可用性和容错性。
提高系统的可伸缩性:当系统的负载增加时,通过负载均衡可以动态地将请求分发到更多的资源上,从而使系统能够扩展,满足更多用户的需求。
优化资源利用:负载均衡可以根据资源的性能和负载情况,智能地分配请求,使每个资源得到合理的利用,避免资源的浪费和闲置。简化系统管理:通过负载均衡,可以将多个资源组织成一个逻辑集群,统一管理和调度,简化了系统的运维和管理工作。
4.负载均衡的应用场景
网站和应用服务器:通过负载均衡将用户请求分发到多个服务器上,提高网站和应用的性能和可用性。数据中心和云计算平台:通过负载均衡,将用户的请求分发到多个虚拟机或容器上,实现资源的弹性分配和动态调度。