当前位置: 首页 > news >正文

进阶!haproxy高级功能与配置

文章目录

  • 前言
  • 基于cookie的会话保持
  • IP透传
    • 四层IP透传
      • 未开启状态
      • 开启透传状态
    • 七层IP透传
  • 自定义错误界面
  • 重定向
  • HAProxy 四层负载之数据库
  • HAProxy https

前言

本文主要介绍HAProxy高级配置及使用案例

文章相关连接如下:

  • 如果想深入了解haproxy算法的相关知识,请点击:超越自我——带你学haproxy算法一遍过!!!
    • 如果想更多了解haproxy的相关知识,请点击:一站式带你深入了解HAProxy

基于cookie的会话保持

  • cookie value:为当前servert指定cookief值,实现基于cookie的会话黏性,相对于基于source地址
  • hash调度算法对客户端的粒度更精准,但同时也加大了haproxy负戟,目前此模式使用较少,已经被session共享服务器代替

不支持tcp mode ,使用http mode

语法格式
cookie name rewrite insert prefix ]indirect nocache ]postonly ]preserve ]httponly secure ]domain ]maxidle <idle>]maxlifename:		#cookie的key名称,用于实现持久连接
insert:		#插入新的cookie,默认不插入cookie
indirect:	#如果客户端已经有cookie,则不会再发送cookie信息
nocache:	#当c1ient和hapoxy.之间有缓存服务器(如:CDN)时,不允许中间缓存器缓存cookie,#因为这会导致很多经过同一个CDN的请求都发送到同一台后端服务器

配置:

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
[root@haproxy ~]# systemctl restart haproxy.service

在这里插入图片描述
验证:
通过命令行验证:
在这里插入图片描述
注意:需要做window的本地解析:路径C:\Windows\System32\drivers\etc\hosts
在这里插入图片描述

IP透传

wb服务器中需要记录客户端的真实IP地址,用于做访问统计、安全护、行为分析、区域排行等场景。

四层:IP+PORT转发
七层:协议+内容交换

四层IP透传

未开启状态

未开启透传的四层代理时查看/etc/nginx/nginx.conf

[root@webserver1 ~]# vim /etc/nginx/nginx.conf

在这里插入图片描述
看不到访问服务器的源IP地址
100主机访问,在10日志查看

[root@haproxy ~]# curl 172.25.254.100

在这里插入图片描述

[root@webserver1 ~]# tail -n 3 /var/log/nginx/access.log

在这里插入图片描述

开启透传状态

nginx配置:在访问日志中通过变量$proxy._protocol._addr记录透传过来的客户端IP
lproxy._protoco1; #启用此项,将无法直接访问此网站,只能通过四层代理

[root@webserver1 ~]# vim /etc/nginx/nginx.conf
[root@webserver1 ~]# systemctl restart nginx.service # 修改haproxy
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
[root@haproxy ~]# systemctl restart haproxy.service

在这里插入图片描述
在这里插入图片描述
验证:

在这里插入图片描述

七层IP透传

  • 当haproxy工作在七层的时候,也可以透传客户端真实IP至后端服务器
  • send-proxy 设置成代理
[root@webserver1 ~]# vim /etc/nginx/nginx.conf
[root@webserver1 ~]# systemctl restart nginx.service # 修改haproxy
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
[root@haproxy ~]# systemctl restart haproxy.service

在这里插入图片描述
在这里插入图片描述

修改nginx
在这里插入图片描述
结果验证:
在这里插入图片描述

自定义错误界面

[root@haproxy ~]# mkdir /etc/haproxy/errorpage -p
[root@haproxy ~]# vim /etc/haproxy/errorpage/badpage.http
[root@haproxy ~]# systemctl restart httpd

修改自定义日志的内容

[root@haproxy ~]# vim /etc/haproxy/errorpage/badpage.http

在这里插入图片描述
修改haproxy自定日志路径
在这里插入图片描述
验证前需关闭两台服务器的服务

[root@webserver1 ~]# systemctl stop nginx.service
[root@webserver22 ~]# systemctl stop nginx.service

验证:
在这里插入图片描述

重定向

接着自定义日志的环境继续修改实验

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
[root@haproxy ~]# systemctl restart haproxy.service

在这里插入图片描述
验证:
在这里插入图片描述
在这里插入图片描述

HAProxy 四层负载之数据库

应用场景:针对除HTTP以外的TCP协议应用服务访问 1.MySQL 2.Redis 3.Memcache 4.RabbitMQ

重新开启服务

[root@webserver1 ~]# systemctl restart nginx.service
[root@webserver22 ~]# systemctl restart nginx.service

下载数据库客户端

[root@haproxy ~]# dnf install mariadb -y

服务器下载数据库服务端

[root@webserver1 ~]# dnf install mariadb-server -y
[root@webserver22 ~]# dnf install mariadb-server -y

修改haproxy

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
[root@haproxy ~]# systemctl restart haproxy.service

在这里插入图片描述

更改数据库id,方便实验结果显示
在这里插入图片描述
在这里插入图片描述

在10服务器上的数据库操作

查看id是否修改正确
在这里插入图片描述
添加用户lee,并赋予远程登陆权限,设置密码为lee
在这里插入图片描述
给用户lee赋予访问所以数据库和所以表的权限,
在这里插入图片描述

在20服务器上的数据库操作

查看id是否修改正确
在这里插入图片描述

添加用户lee,并赋予远程登陆权限,设置密码为lee
在这里插入图片描述
给用户lee赋予访问所以数据库和所以表的权限,
在这里插入图片描述

HAProxy https

haproxy可以实现https的证书安全,从用户到naproxy为https,从naproxy到后端服务器用http通信
但基于性能考虑,生产中证书都是在后端服务器比如nginx.上实现

#配置HAProxy支持https协议,支持ssl会话;
bind *:443 ssl crt /PATH/TO/SOME_PEM_FILE
#指令 crt 后证书文件为PEM格式,需要同时包含证书和所有私钥
cat demo.key demo.crt > demo.pem
#把80端口的请求重向定443
bind *:80
redirect scheme https if !{ ssl_fc }

制作证书:

[root@haproxy ~]# mkdir /etc/haproxy/certs/
[root@haproxy ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/haproxy/certs/luo.org.key -x509 -days 365 -out /etc/haproxy/certs/luo.org.crt
# 将证书和钥匙放入PEM格式的文件里
[root@haproxy certs]# cat luo.org.crt luo.org.key > wang.org.pem

全站加密:redirect scheme https if !{ ssl_fc }加上这条命令就会自动将80端口的请求重定向到443
在这里插入图片描述

文章相关连接如下:

  • 如果想深入了解haproxy算法的相关知识,请点击:超越自我——带你学haproxy算法一遍过!!!
    • 如果想更多了解haproxy的相关知识,请点击:一站式带你深入了解HAProxy

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器学习(1)--数据可视化
  • 面试实战题-数据库及DAO层
  • 基于STM32设计的智能鱼缸_带鱼儿数量视觉识别(华为云IOT)(202)
  • LeetCode.20.有效的括号
  • 局部场电位LFP
  • 【Python快速入门和实践016】Python常用脚本-对视频抽取指定帧数并保存
  • Oracle(52)分区表有哪些类型?
  • RCE漏洞基础初了解
  • Power Query抓取多页数据导入到Excel
  • C# 解析html
  • FFmpeg源码:av_buffer_is_writable、av_buffer_realloc函数分析
  • Mybatis声明变量并使用
  • 服务器硬件及RAID配置
  • 基于springboot的乐享田园系统
  • Linux系统性能调优技巧
  • #Java异常处理
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 30秒的PHP代码片段(1)数组 - Array
  • javascript 哈希表
  • JavaScript中的对象个人分享
  • Making An Indicator With Pure CSS
  • PHP面试之三:MySQL数据库
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • storm drpc实例
  • 从0实现一个tiny react(三)生命周期
  • 电商搜索引擎的架构设计和性能优化
  • 番外篇1:在Windows环境下安装JDK
  • 力扣(LeetCode)21
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 用简单代码看卷积组块发展
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (¥1011)-(一千零一拾一元整)输出
  • (31)对象的克隆
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (第一天)包装对象、作用域、创建对象
  • (分类)KNN算法- 参数调优
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot学生选课系统 毕业设计 612555
  • (九)One-Wire总线-DS18B20
  • (六)vue-router+UI组件库
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (七)Knockout 创建自定义绑定
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • (自用)gtest单元测试
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全