RedHat 7配置HAProxy实现Web负载均衡

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

本文将简单介绍使用HAProxy实现web负载均衡,主要内容包括基于权重的轮询、为HAProxy配置https、配置http重定向为https、配置HAProxy使用独立日志。

一、测试环境

HAProxy:

主机名:RH7-HAProxy

IP地址:192.168.10.20

操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)最小化安装

防火墙与SELinux:关闭

安装的服务:HAProxy-1.5.14

WEB01:

主机名:RH7-Web-01

IP地址:192.168.10.21

操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)最小化安装

防火墙与SELinux:关闭

安装的服务:Apache-httpd 2.4

WEB02:

主机名:RH7-Web-02

IP地址:192.168.10.22

操作系统:Red Hat Enterprise Linux Server release 7.2 (Maipo)最小化安装

防火墙与SELinux:关闭

安装的服务:Apache-httpd 2.4

本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1887279


二、WEB页面访问测试

1、使用浏览器访问两台web的IP地址,能成功访问到不同的页面,方便我们后面直观地观察负载均衡的效果。由于Apache的安装配置不是本文重点,具体可参考本人之前的博文《RedHat 7安装配置Apache 2.4》(http://jiangjianlong.blog.51cto.com/3735273/1858650

wKioL1hjY7GQIT2oAAB9sPo9Z-Q977.png

2、在RH7-HAProxy上也访问一下两台Web,确认也可以正常访问

wKiom1hjY5my1D1pAABulDydIV4123.png


三、安装配置HAProxy

1、[root@RH7-HAProxy~]yum -y install haproxy

2、[root@RH7-HAProxy~]systemctl start haproxy

3、[root@RH7-HAProxy~]systemctl enable haproxy

4、[root@RH7-HAProxy~]mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

5、[root@RH7-HAProxy~]vi /etc/haproxy/haproxy.cfg

增加以下内容,然后重启haproxy服务

wKioL1hjZI-TnbmOAAFiHSs_B5w667.png

6、使用浏览器访问HAProxy的IP地址,多次刷新,成功实现轮询访问web01和web02

wKiom1hjZMOzES0YAAA0FRdLgmQ728.png

wKiom1hjZMTzYzLQAAA2NC2WYNo532.png

7、登录haproxy的后台

wKioL1hjZMSyRdUlAAB4xS9bihc152.png

8、可以看到访问web01和web02的相关统计数据

wKiom1hjZzHgtbgXAAHcY_QxeQU748.png

9、修改haproxy的配置文件,将web01的权重改为3,web02的权重仍为1,这样访问到两台web的比例应该为3:1,改好后重启下haproxy服务

wKiom1hkorqiG64bAAGSVaS8aEs493.png10、再次通过浏览器访问HAProxy的IP地址,多次刷新进行访问测试

11、再次登录HAProxy后台查看统计数据,可以看到访问到web01和web02的比例为3:1

wKioL1hko3rye2kVAAHH_SsL3qc068.png


四、配置HAProxy使用Https加密访问

1、采用客户端到HAProxy使用https、HAProxy到WEB端使用http的方式,只需要在HAProxy上配置证书,这里我们就配置一张自签名证书来测试一下

wKioL1hjZMbSpW03AAIh2oV7Tlo001.png

2、查看一下配置好的证书jiangjianlong.pem

wKiom1hjZMiTt4wYAAO3H-_Vv_Q107.png

3、修改HAProxy的配置文件,增加以下参数后重启haproxy服务

wKioL1hjZM-hxDCOAAGVHbfsLho625.png

4、使用https协议访问HAProxy的IP地址,提示证书存在问题,这是因为自签名证书不受浏览器信任,但说明上文配置的证书已经生效了,点击继续浏览此网站

wKioL1hjZMvC1x8qAACyAaI6wnc031.png

5、成功访问到Web01页面,刷新也能访问到Web02,说明在https的加密访问下负载均衡也没问题

wKioL1hjZMzxoQhMAAA70pipI_0221.png

wKiom1hjZMzTxlUYAAA8X6cXllA765.png

6、通过hosts解析配置一个域名指向HAProxy的IP地址,也能正常访问

wKioL1hjZM3xWjFZAAA8oj4Oj-g215.png

7、查看下证书信息,跟我们创建的证书信息一致

wKiom1hjZM2g_mJEAABSkHpo0NI309.png

wKiom1hjZM7yVTDoAABtEJWmnbo666.png

8、配置http重定向,自动将http重定向为https,修改haproxy配置文件,增加以下参数,并重启服务

wKioL1hkpmqxojBkAABKa8RefkM777.png

9、使用浏览器测试,成功实现http自动重定向为https进行访问,但由于截图无法呈现这个动态的效果,就不截了。


五、配置HAProxy使用独立日志文件

本文原始出处:江健龙的技术博客http://jiangjianlong.blog.51cto.com/3735273/1887279

1、HAProxy的日志默认写入到系统日志中去,我们可以把它独立出来,方便排查管理。编辑/etc/rsyslog.conf,按下图进行修改

wKiom1hkqQ7z-AC7AADq-Fz59Wk157.png

wKioL1hkqdyQlWOpAADACicoeVg756.png

2、重启rsyslog服务,再通过浏览器访问一下web以便产生日志,然后查看/var/log/haproxy.log,发现日志已经按照我们上文所配置的那样,记录到/var/log/haproxy.log来了

wKioL1hkqQ-ToP9_AAIVkv0gQgI773.png


本文转自Mr大表哥jianlong1990 博客,原文链接: http://blog.51cto.com/jiangjianlong/1887279      如需转载请自行联系原作者


相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
52 4
|
4月前
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
【Azure 应用服务】Web App Service 中的 应用程序配置(Application Setting) 怎么获取key vault中的值
|
1月前
|
JavaScript 前端开发 开发工具
web项目规范配置(husky、eslint、lint-staged、commit)
通过上述配置,可以确保在Web项目开发过程中自动进行代码质量检查和规范化提交。Husky、ESLint、lint-staged和Commitlint共同作用,使得每次提交代码之前都会自动检查代码风格和语法问题,防止不符合规范的代码进入代码库。这不仅提高了代码质量,还保证了团队协作中的一致性。希望这些配置指南能帮助你建立高效的开发流程。
39 5
|
3月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
3月前
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
98 8
HAProxy的高级配置选项-Web服务器状态监测
|
2月前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
154 0
|
2月前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
4月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
4月前
|
Serverless 对象存储
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
现代化 Web 应用构建问题之配置Serverless Devs的秘钥信息如何解决
43 1
|
4月前
Web 目录文件浏览配置
Web 目录文件浏览配置
42 1