进阶!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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/400126.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EXCEL数据清洗步骤

1.合并的单元格&#xff1a; 用Ctrlg查找空值&#xff0c;拆分单元格&#xff0c;ctrl enter填充 2.空值空行&#xff1a; 辅助列counta&#xff0c;筛选出空值行 3.重复值&#xff1a; 条件格式——突出显示单元格规则——重复值 数据——数据工具——删除重复值 4.脏数据…

[算法2] 第二集 二叉树中的深度搜索

深度优先遍历&#xff08;DFS&#xff0c;全称为 Depth First Traversal&#xff09;&#xff0c;是我们树或者图这样的数据结构中常⽤的 ⼀种遍历算法。这个算法会尽可能深的搜索树或者图的分支&#xff0c;直到⼀条路径上的所有节点都被遍历 完毕&#xff0c;然后再回溯到上…

Steinberg SpectraLayers Pro for Mac:专业音频频谱编辑的巅峰之作

Steinberg SpectraLayers Pro for Mac是一款专为音频专业人士设计的专业音频频谱编辑器&#xff0c;它以其强大的频谱编辑功能和直观的操作界面&#xff0c;在音频处理领域树立了新的标杆。该软件不仅为音频编辑工作带来了前所未有的精确度和灵活性&#xff0c;还极大地提升了音…

WPF 数据模板DataTemplate、控件模板ControlTemplate、Style、ItemsPreseter

一言蔽之&#xff0c;Template就是“外衣”—— ControlTemplate是控件的外衣&#xff0c; DataTemplate是数据的外衣。 DataTemplate 它定义了一个数据对象的可视化结构 DataTemplate常用的地方有3处&#xff0c;分别是&#xff1a; ContentControl的ContentTemplate属性&…

CODEXGRAPH:突破代码与AI的壁垒,开启智能编程新时代

CODEXGRAPH&#xff1a;突破代码与AI的壁垒&#xff0c;开启智能编程新时代 CODEXGRAPH论文阅读1. 概述2. 相关研究代码库级别的任务检索增强代码生成&#xff08;RACG&#xff09; 3. CODEXGRAPH系统设计代码图数据库的构建与图数据库的交互 4. 实验设计与结果CrossCodeEvalSW…

数据结构---单链表实现

单链表是什么 我的理解是“特殊的数组”&#xff0c;通过访问地址来连接起来 1怎么创建链表 ----通过结构体&#xff08;成员有存入数据的data和指向下一个节点的地址的指针&#xff08;结构体指针&#xff09;next 初始架构---DataType 对应存入数据类型&#xff0c;此处的N…

数字引领风尚·智能改变生活“青岛电博会”路演活动(济南站)

2024CICE中国国际消费电子博览会路演活动&#xff08;济南站&#xff09;成功举行 数字引领风尚&#xff0c;智能改变生活。 8月7日&#xff0c;50余家行业协会、企业嘉宾、展商代表等云集2024中国国际消费电子博览会路演活动&#xff08;济南站&#xff09;现场&#xff0c;共…

瑞萨电子并购Altium 引领行业创新与发展

公开资料显示&#xff0c;2023 年 6 月&#xff0c;瑞萨电子曾宣布在 Altium 的 Altium 365 云平台上实现了所有 PCB 设计的标准化开发。瑞萨电子一直与 Altium 合作&#xff0c;将其所有产品的 ECAD 库发布到 Altium Public Vault。借助 Altium365 上的制造商零件搜索等功能&a…

Wireshark分析工具

简单用例 首先打开软件,左上角点文件,选中要分析的文件列表。 导入用tcpdump抓的包后进行分析,这里要输入过滤条件,对网络包进行一定的过滤处理。(这里172网段是阿里云的地址,用自己写的python2脚本对阿里云进行压测。) 这里输入过滤条件 tcp.port == 80 ,语法含义是…

Java虚拟机:类的加载机制

大家好&#xff0c;我是栗筝i&#xff0c;这篇文章是我的 “栗筝i 的 Java 技术栈” 专栏的第 034 篇文章&#xff0c;在 “栗筝i 的 Java 技术栈” 这个专栏中我会持续为大家更新 Java 技术相关全套技术栈内容。专栏的主要目标是已经有一定 Java 开发经验&#xff0c;并希望进…

【ARM CoreLink 系列 5.1 -- CI-700 各种 Node 组件详细介绍】

请阅读【ARM CoreLink 文章专栏导读】 文章目录 CI-700 组件(Components)RN-I( I/O-coherent Request Node) 和 RN-D(I/O coherent Request Node with DVM)HN-F(Fully coherent Home Node)IO coherent Home Node (HN-I)IO coherent Home Node with Debug Trace Controller (H…

43.【C语言】指针(重难点)(F)

目录 15.二级指针 *定义 *演示 16.三级以及多级指针 *三级指针的定义 *多级指针的定义 17.指针数组 *定义 *代码 18.指针数组模拟二维数组 往期推荐 15.二级指针 *定义 之前讲的指针全是一级指针 int a 1; int *pa &a;//一级指针 如果写成 int a 1; int *pa &a…

机器学习——线性回归(sklearn)

目录 一、认识线性回归 1. 介绍 2. 多元线性回归的基本原理&#xff08;LinearRegression&#xff09; 二、多重共线性 1. 介绍 2. 多重共线性详细解释 三、岭回归&#xff08;解决多重共线性问题&#xff09; 1. 模型推导 2. 选取最佳的正则化参数取值 四、Lasso&am…

景联文科技:破解数据标注行业痛点,引领高质量AI数据服务

数据标注行业是人工智能和机器学习领域中一个非常重要的组成部分。随着AI技术的发展&#xff0c;对高质量标注数据的需求也在不断增长。 数据标注市场的痛点 1. 团队管理 在众包和转包模式下&#xff0c;管理大量的标注人员是一项挑战。 需要确保标注人员的专业性、稳定性和…

Pod的调度机制

文章目录 一、Pod调度概述二、Pod调度策略实现方式三、kube-scheduler调度1、kube-scheduler调度的流程2、过滤阶段3、打分阶段4、kube-scheduler 调度示例4.1、创建 Deployment 资源清单4.2、应用Deployment4.3、查看被kube-scheduler自动调度的Pod 四、nodeName调度1、创建Po…

Linux驱动入门实验班——LED驱动(附百问网视频链接)

目录 一、确定引脚编号 二、编写思路 2.1驱动层 2.2应用层 三、源码 四、实现 课程链接 一、确定引脚编号 首先&#xff0c;可以在开发板上执行如下命令查看已经在使用的GPIO状态&#xff1a; cat /sys/kernel/debug/gpio 可以看到每个gpio都有对应的编号&#xff0c;…

火语言RPA--火语言界面应用多窗体详解

多窗体 界面应用建立时默认加载一个窗体&#xff0c;若是程序运行时需要多个窗体配合&#xff0c;在通常情况下&#xff0c;您可将多窗体绑定在UI控件事件中&#xff0c;由界面交互来打开多窗体。 本章将介绍下如何建立多窗体以及在应用中如何运用多窗体完成多种场景的设置。 …

源代码防泄密怎么做?最好用的12款源代码加密软件推荐

源代码是企业的核心资产之一&#xff0c;其安全性直接关系到产品的竞争力和市场地位。防止源代码泄密是企业信息安全中的重中之重&#xff0c;本文将介绍几种有效的源代码防泄密方法&#xff0c;并推荐12款优秀的源代码加密软件。 1. 代码审查与权限管理 通过严格的代码审查流…

【MySQL】用户管理——用户、用户信息、创建用户、删除用户、修改用户密码、数据库的权限、给用户权限、回收权限

文章目录 MySQL1. 用户管理1.1 用户1.1.1 用户信息1.1.2 创建用户1.1.3 删除用户1.1.4 修改用户密码 1.2 数据库的权限1.2.1 给用户权限1.2.2 回收权限 MySQL 1. 用户管理 为什么MySQL要引入用户管理&#xff1f; 如果我们只能使用root用户&#xff0c;这样存在安全隐患。因为r…

[C++][opencv]基于opencv实现photoshop算法可选颜色调整

【测试环境】 vs2019 opencv4.8.0 【效果演示】 【核心实现代码】 SelectiveColor.hpp #ifndef OPENCV2_PS_SELECTIVECOLOR_HPP_ #define OPENCV2_PS_SELECTIVECOLOR_HPP_#include "opencv2/core.hpp" #include "opencv2/imgproc.hpp" #include "…