Linux系统负载均衡软件之haproxy+apache

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
日志服务 SLS,月写入数据量 50GB 1个月
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

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

 

环境规划:

tong1:  192.168.1.247   haproxy

tong2:  192.168.1.248   web1

tong3:  192.168.1.249   web2

 

1.网络配置

tong1节点:

[root@tong1 ~]# hostname 
tong1
[root@tong1 ~]# ifconfig | grep Mask
          inet addr:192.168.1.247  Bcast:192.168.1.255  Mask:255.255.255.0
          inet addr:127.0.0.1  Mask:255.0.0.0
[root@tong1 ~]# vim /etc/hosts

192.168.1.247 tong1
192.168.1.248 tong2
192.168.1.249 tong3

[root@tong1 ~]#

 

tong2节点和tong3节点一样配置

 

2.在tong1节点安装haproxy软件,开启haproxy日志功能

[root@tong1 ~]# yum install haproxy -y

[root@tong1 ~]# vim /etc/sysconfig/rsyslog           --添加-r参数记录haproxy日志

SYSLOGD_OPTIONS=" -r -c 2"

[root@tong1 ~]# vim /etc/rsyslog.conf               --定义日志存放的路径

local2.*                       /var/log/haproxy.log

[root@tong1 ~]# /etc/init.d/rsyslog  restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[root@tong1 ~]#

[root@tong1 ~]# cd /etc/haproxy/
[root@tong1 haproxy]# vim haproxy.cfg

global

    log         127.0.0.1 local2              --开启日志功能

    chroot      /var/lib/haproxy            --运行的路径
    pidfile     /var/run/haproxy.pid        --pid文件存放处
    maxconn     4000                   --最大连接数
    user        haproxy                  --所属运行的用户
    group       haproxy                 --所属运行的用户组
    daemon                                --后台运行服务

 

defaults
    mode                    http               --处理的模式(http是七层,tcp是四层)
    log                     global               --启用全局日志记录
    option                  httplog             --日志类别http格式
    option                  dontlognull        --不记录健康检查日志
    option http-server-close               
    option forwardfor       except 127.0.0.0/8     
    option                  redispatch        --serverId对应的服务器挂掉后强制定向到其它服务器    

    retries                 3                     --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

 

listen admin_status           --自定义监听名,任意取
    bind 0.0.0.0:80            --绑定端口
    mode http                   --模式
    log 127.0.0.1 local3 err         --记录错误日志
    stats refresh 20s                 --每隔20s刷新

    stats hide-version                --隐藏haproxy版本信息

    stats uri /haproxy-stats        --在域名后面添加/haproxy-stats可以查看haproxy监控状态

    stats auth haproxy:system    --用户名和密码    stats hide-version
    stats admin if TRUE               --可以手动启动和停止服务

 

listen site_status                   --检查后端主机的健康
    bind 0.0.0.0:80
    mode http
    log 127.0.0.1 local3 err
    monitor-uri /site-stats          --使用url地址检查

 

frontend  main_status      --定义acl规则

    bind 0.0.0.0:80       --绑定到80端口

    mode http

    log global

    option httplog

    option forwardfor

    acl web1 hdr_reg(host) -i ^(www.itnihao.cn|ww1.itnihao.cn)$  

    --匹配www.itnihao.cnww1.itnihao.cn两个域名就放到web1变量中

    acl web2   url_sub          -i  killall=       --请求中包含killall= 就放入到web2变量中

    acl web3   path_beg       -i  /static /images /javascript /stylesheets   

 

    use_backend  server_web3 if web3     --满足web3变量的就丢到server_web3里面的虚拟主机

    default_backend server_web4             --都不满足就丢到server_web4里面的虚拟主机

 

backend server_web3
    mode http
    balance     roundrobin
    option httpchk GET /test.html     --定义首页 址

    server  ton1 192.168.1.248:80 check inter 1500 rise 3 fall 3 weight 1  

--后端服务器,inter 1500是检查心跳频率,rise 3是3次正确可用,fall 3是3次失败不可用,weight 1是权重  

    server  ton2 192.168.1.249:80 check inter 1500 rise 3 fall 3 weight 1

 

backend server_web4
    mode http
    balance     roundrobin
    option httpchk GET /index.html
    server  ton3 192.168.1.248:80 check inter 1500 rise 3 fall 3 weight 1
    server  ton4 192.168.1.249:80 check inter 1500 rise 3 fall 3 weight 1

[root@tong1 haproxy]# /etc/init.d/haproxy restart
Stopping haproxy:                                          [  OK  ]
Starting haproxy:                                          [  OK  ]
[root@tong1 haproxy]#

 

3.在后端主机安装apache服务

tong2节点:

[root@tong2 ~]# hostname 
tong2

[root@tong2 ~]# yum install httpd -y

[root@tong2 ~]# vim /etc/httpd/conf/httpd.conf

ServerName 127.0.0.1

[root@tong2 ~]# echo 'node2' > /var/www/html/index.html

[root@tong2 ~]# echo 'static node2' > /var/www/html/test.html

[root@tong2 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                        [  OK  ]
[root@tong2 ~]#

 

tong3节点:

[root@tong3 ~]# hostname 
tong3
[root@tong3 ~]# yum install httpd -y

[root@tong3 ~]# vim /etc/httpd/conf/httpd.conf

ServerName 127.0.0.1

[root@tong3 ~]# echo 'node3' > /var/www/html/index.html

[root@tong3 ~]# echo 'static node3' > /var/www/html/test.html

[root@tong3 ~]# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                        [  OK  ]
[root@tong3 ~]#

 

4.检查haproxy的状态和监控

后台管理和监控url页面

wKioL1ShNDfCMKfuAAI7TuctY-U103.jpg

wKiom1ShM4WhLZz3AAaAPBj69xA900.jpg

 

后端主机的监控页面

(1)后端主机状态正常

wKioL1ShNFnAiJyyAAEHmLYqac4062.jpg

(2)后端主机不正常,出现宕机

wKioL1ShNJHjkM62AAFqjQ1AGGI830.jpg

 

正常访问节点

wKioL1ShNLayzfePAAEH8zHJrIg830.jpg

wKiom1ShNAOSikDYAADkTs4RvZA399.jpg










本文转自 z597011036 51CTO博客,原文链接:http://blog.51cto.com/tongcheng/1597364,如需转载请自行联系原作者
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
3月前
|
消息中间件 安全 Kafka
Apache Kafka安全加固指南:保护你的消息传递系统
【10月更文挑战第24天】在现代企业环境中,数据的安全性和隐私保护至关重要。Apache Kafka作为一款广泛使用的分布式流处理平台,其安全性直接影响着业务的稳定性和用户数据的安全。作为一名资深的Kafka使用者,我深知加强Kafka安全性的重要性。本文将从个人角度出发,分享我在实践中积累的经验,帮助读者了解如何有效地保护Kafka消息传递系统的安全性。
166 7
|
4月前
|
安全 Ubuntu Linux
Linux系统中的软件管理工具主
Linux系统中的软件管理工具主
70 7
|
6月前
|
消息中间件 监控 数据挖掘
基于RabbitMQ与Apache Flink构建实时分析系统
【8月更文第28天】本文将介绍如何利用RabbitMQ作为数据源,结合Apache Flink进行实时数据分析。我们将构建一个简单的实时分析系统,该系统能够接收来自不同来源的数据,对数据进行实时处理,并将结果输出到另一个队列或存储系统中。
366 2
|
4月前
|
Web App开发 监控 Linux
在Linux上,有许多软件可以下载和安装
在Linux上,有许多软件可以下载和安装
157 67
|
2月前
|
负载均衡 网络协议 算法
Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式
本文探讨了Docker容器环境中服务发现与负载均衡的技术与方法,涵盖环境变量、DNS、集中式服务发现系统等方式,以及软件负载均衡器、云服务负载均衡、容器编排工具等实现手段,强调两者结合的重要性及面临挑战的应对措施。
115 3
|
3月前
|
消息中间件 Java Kafka
初识Apache Kafka:搭建你的第一个消息队列系统
【10月更文挑战第24天】在数字化转型的浪潮中,数据成为了企业决策的关键因素之一。而高效的数据处理能力,则成为了企业在竞争中脱颖而出的重要武器。在这个背景下,消息队列作为连接不同系统和服务的桥梁,其重要性日益凸显。Apache Kafka 是一款开源的消息队列系统,以其高吞吐量、可扩展性和持久性等特点受到了广泛欢迎。作为一名技术爱好者,我对 Apache Kafka 产生了浓厚的兴趣,并决定亲手搭建一套属于自己的消息队列系统。
108 2
初识Apache Kafka:搭建你的第一个消息队列系统
|
4月前
|
存储 关系型数据库 Linux
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
231 2
2024 年 16 个适用于 Linux 的开源云存储软件 (上)
|
3月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
165 2
|
4月前
|
存储 安全 Unix
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
108 0
2024 年 16 个适用于 Linux 的开源云存储软件 (下)
|
4月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
79 3