haproxy高级功能配置

news2024/11/13 21:05:25

介绍HAProxy高级配置及实用案例

一.基于cookie会话保持

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

注意:不支持 tcp mode,使用 http mode

配置选项

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

 配置举例

listen webcluster
    bind *:80
    mode http
    balance roundrobin
    #balance static-rr
    #balance first
    #balance leastconn
    #balance source
    #balance uri
    #balance url_param name,userid
    #balance hdr(User-Agent)
    #hash-type consistent
    cookie WEBCOOKIE insert nocache indirect
    server web1 172.25.254.10:80 cookie lee1 check inter 2 fall 3 rise 5 weight 1
    server web2 172.25.254.20:80 cookie lee2 check inter 2 fall 3 rise 5 weight 1

验证

[root@haproxy ~]# curl -b WEBCOOKIE=lee1 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl -b WEBCOOKIE=lee2 172.25.254.100
172.25.254.20 - index.html

haproxy状态页

通过web界面,显示当前HAProxy的运行状态

状态页配置

stats enable                    #基于默认的参数启用stats page
stats hide-version              #将状态页中haproxy版本隐藏
stats refresh <delay>           #设定自动刷新时间间隔,默认不自动刷新
stats uri <prefix>              #自定义stats page uri,默认值:/haproxy?stats
stats auth <user>:<passwd>      #认证时的账号和密码,可定义多个用户,每行指定一个用户
                                #默认:no authentication<cond> 
stats admin{if | unless }       #启用stats page中的管理功能

启用状态页

listen stats
    mode http
    bind 0.0.0.0:8888
    stats enable
    log global
    stats uri /status
    stats auth lee:lee

80e7f07f47bb41228d2a5c40921d6626.png

4859a7395d194d12ae0036609c833e26.png 登录状态页

pid = 3698 (process #2, nbproc = 2, nbthread = 2)

#pid为当前pid号,process为当前进程号,nbproc和nbthread为一共多少进程和每个进程多少个线程

uptime = 0d 0h00m08s #启动了多长时间

system limits: memmax = unlimited; ulimit-n = 131124 #系统资源限制:内存/最大打开文件数/

maxsock = 131124; maxconn = 65536; maxpipes = 0 #最大socket连接数/单进程最大连接数/最大管道数maxpipes

current conns = 1; current pipes = 0/0;

conn rate = 1/sec #当前连接数/当前管道数/当前连接速率 (取决于访问量: 访问量越大,值越大)

Running tasks: 1/9;

idle = 100 % #运行的任务/当前空闲率

active UP:#在线服务器backup UP:#标记为backup的服务器
active UP, going down:#监测未通过正在进入down过程
backup UP, going down:#备份服务器正在进入down过程
active DOWN, going up:#down的服务器正在进入up过程
backup DOWN, going up:#备份服务器正在进入up过程
active or backup DOWN:#在线的服务器或者是backup的服务器已经转换成了down状态
not checked:#标记为不监测的服务器
active or backup DOWN for maintenance (MAINT) #active或者backup服务器 手动下线的
active or backup SOFT STOPPED for maintenance #active或者backup被认为软下线(人为将weight改成0)

backend server信息

session rate(每秒的连接会话信息): Errors(错误统计信息):
cur:每秒的当前会话数量 : Req:错误请求量
max:每秒新的最大会话数量 conn:错误链接量
limit:每秒新的会话限制量 Resp:错误响应量
sessions(会话信息): Warnings(警告统计信息):
cur:当前会话量 Retr:重新尝试次数
max:最大会话量 Redis:再次发送次数
limit: 限制会话量
Total:总共会话量 Server(real server信息):
LBTot:选中一台服务器所用的总时间 Status:后端机的状态,包括UP和DOWN
Last:和服务器的持续连接时间 LastChk:持续检查后端服务器的时间
Wght:权重
Bytes(流量统计): Act:活动链接数量
In:网络的字节输入总量 Bck:备份的服务器数量
Out:网络的字节输出总量 Chk:心跳检测时间
Dwn:后端服务器连接后都是DOWN的数量
Denied(拒绝统计信息): Dwntme:总的downtime时间
Req:拒绝请求量 Thrtle:server 状态
Resp:拒绝回复量

ip透传

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

layer 4 与 layer 7

四层ip透传与七层ip透传

四层:IP+PORT转发

七层:协议+内容交换

四层负载

在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据,而四层负载自身不参与建立连接,而和LVS不同,haproxy是伪四层负载均衡,因为haproxy 需要分别和前端客户端及后端服务器建立连接

七层代理

七层负载均衡服务器起了一个反向代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设备起到了代理服务器的作用,七层代理需要和Client和后端服务器分别建立连接

七层ip透传

当haproxy工作在七层的时候,也可以透传客户端真实IP至后端服务器

HAProxy配置


option forwardfor [ except <network> ] [ header <name> ] [ if-none ]
[ except <network> ]:请求报请来自此处指定的网络时不予添加此首部,如haproxy自身所在网络
[ header <name> ]: 使用自定义的首部名称,而非“X-Forwarded-For",示例:X-client
[ if-none ] 如果没有首部才添加首部,如果有使用默认值

 例:

[root@webserver1 ~]# systemctl disable nginx.service 
Removed "/etc/systemd/system/multi-user.target.wants/nginx.service".
[root@webserver1 ~]# systemctl stop nginx.service

[root@webserver1 ~]# dnf install httpd -y
[root@webserver1 ~]# echo webserver1 172.25.254.10 > /var/www/html/html.index
[root@webserver1 ~]# systemctl start httpd


验证
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html

[root@webserver1 ~]# cat /etc/httpd/logs/access_log 
172.25.254.100 - - [11/Aug/2024:22:49:45 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
172.25.254.100 - - [11/Aug/2024:22:50:06 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
172.25.254.100 - - [11/Aug/2024:22:50:08 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
# 没有日志

四层ip透传

开始四层穿透

[root@webserver2 ~]# vim /etc/nginx/nginx.conf
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '"$proxy_protocol_addr"'
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

[root@webserver2 ~]# vim /etc/nginx/nginx.conf
    server {
        listen       80 proxy_protocol;

[root@webserver2 ~]# systemctl restart nginx.service 

访问
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html

#查看日志
[root@webserver2 ~]# tail /var/log/nginx/access.log 

172.25.254.100 - - [11/Aug/2024:23:07:38 +0800] "GET / HTTP/1.1" 200 27 "-" "curl/7.76.1" "-"
172.25.254.100 - - [11/Aug/2024:23:11:57 +0800] "GET / HTTP/1.1" "172.25.254.100"200 27 "-" "curl/7.76.1" "-"
透传成功
[root@webserver1 ~]# dnf install httpd-manual
[root@webserver1 ~]# systemctl restart httpd


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

listen webcluster
    bind *:80
    mode tcp
    balance roundrobin
    #balance static-rr
    #balance first
    #balance leastconn
    #balance source
    #balance uri
    #balance url_param name,userid
    #balance hdr(User-Agent)
    #hash-type consistent
    #cookie WEBCOOKIE insert nocache indirect
    server web1 172.25.254.10:80 check inter 2 fall 3 rise 5 weight 1
    server web2 172.25.254.20:80 send-proxy check inter 2 fall 3 rise 5 weight 1

[root@haproxy ~]# systemctl restart haproxy.service
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html

查看日志
nginx
[root@webserver2 ~]# tail /var/log/nginx/access.log 
172.25.254.100 - - [11/Aug/2024:23:11:57 +0800] "GET / HTTP/1.1" "172.25.254.100"200 27 "-" "curl/7.76.1" "-"
172.25.254.100 - - [11/Aug/2024:23:18:04 +0800] "GET / HTTP/1.1" "172.25.254.100"200 27 "-" "curl/7.76.1" "-"
172.25.254.100 - - [11/Aug/2024:23:18:06 +0800] "GET / HTTP/1.1" "172.25.254.100"200 27 "-" "curl/7.76.1" "-"

web服务器日志格式配置

配置web服务器,记录负载均衡透传的客户端IP地址

参数Forwarded

[root@webserver1 ~]# vim /etc/httpd/conf/httpd.conf 
###省略###
 LogFormat "%{X-Forwarded-For}i %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#combined 混合形式,全部控制

验证
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# 

# 查看日志
[root@webserver1 ~]# cat /etc/httpd/logs/access_log 
172.25.254.100 - - [11/Aug/2024:22:49:45 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
172.25.254.100 - - [11/Aug/2024:22:50:06 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
172.25.254.100 - - [11/Aug/2024:22:50:08 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"
172.25.254.100 172.25.254.100 - - [11/Aug/2024:22:55:57 +0800] "GET / HTTP/1.1" 403 27 "-" "curl/7.76.1"

ACL(访问控制列表)

访问控制列表(ACL,Access Control Lists)
是一种基于包过滤的访问控制技术
它可以根据设定的条件对经过服务器传输的数据包进行过滤(条件匹配)即对接收到的报文进行匹配和过滤,基于请求报文头部中的源地址、源端口、目标地址、目标端口、请求方法、URL、文件后缀等信息内容进行匹配并执行进一步操作,比如允许其通过或丢弃。

 ACL 配置选项

#用ac1来定义或声明一个ac1 
acl <aclname>    <criterion> [f1ags]   [operator]   [<value>]
ac1 名称匹配规范   匹配模式    匹配模式    具体操作符   操作对象类型

ACL-Name名称

 acl test path_end -m sub /a
#ACL名称,可以使用大字母A-Z、小写字母a-z、数字0-9、冒号:、点.、中横线和下划线,并且严格区分大
小写,比如:my_acl和My_Acl就是两个完全不同的acl5.8.1.2 ACL-criterion

ACL-flags 匹配模式

-i   不区分大小写
-m   使用指定的正则表达式匹配方法
-n   不做DNS解析
-u   禁止ac1重名,否则多个同名ACL匹配或关系

ACL-operator 操作对象

The ACL engine can match these types against patterns of the following types
-Boolean #布尔值-integer or integer range #整数或整数范围,比如用于匹配端口范围
-IP addressnetwork #IP地址或IP范围,192.168.0.1,192.168.0.1/24
-string-->www.timinglee.org
exact             #精确比较
substring         #子串
suffix            #后缀比较
prefix            #前缀比较
subdir            #路径,/wp-includes/js/jquery/jquery.js
domain            #域名,www.timinglee.org
regular expression#正则表达式
hex block         #16进制

ACL-criterion 匹配规范

定义ACL匹配规范,即判断条件

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

frontend webcluster
    bind *:80
    mode http
    acl test hdr(dom) -i www.timinglee.org
    use_backend webcluster-host if test
    default_backend default-host


backend webcluster-host
    mode http
    server web1 172.25.254.10:80 check inter 2 fall 2 rise 5

backend default-host
    mode http
    server web2 172.25.254.20:80 check inter 2 fall 2 rise 5

[root@haproxy ~]# systemctl restart haproxy.service 

ACL-value操作对象

The ACL engine can match these types against patterns of the following types :
- Boolean #布尔值
- integer or integer range #整数或整数范围,比如用于匹配端口范围
- IP address / network #IP地址或IP范围, 192.168.0.1 ,192.168.0.1/24
- string--> www.timinglee.org
 exact #精确比较
 substring #子串
 suffix #后缀比较
 prefix #前缀比较
 subdir #路径, /wp-includes/js/jquery/jquery.js
 domain #域名,www.timinglee.org
- regular expression #正则表达式
- hex block #16进制

多个ACL的组合调用方式

多个ACL的逻辑处理

与:隐式(默认)使用

或:使用“or" 或 “||"表示

否定:使用 "!" 表示

多个ACL调用方式:

#示例:
if valid_src valid_port #与关系,ACL中A和B都要满足为true,默认为与
if invalid_src || invalid_port  #或,ACL中A或者B满足一个为true
if ! invalid_src #非,取反,不满足ACL才为true

 

 hdr(<string>)用于测试请求头部首部指定内容

frontend webcluster
    bind *:80
    mode http
    acl test hdr_end(host) -i .org
    use_backend webcluster-host if test
    default_backend default-host

[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html
[root@haproxy ~]# curl 172.25.254.100
172.25.254.10 - index.html

hdr(<string>)用于测试请求头部首部指定内容

frontend webcluster
    bind *:80
    mode http
    acl test hdr_beg(host) -i bbs
    use_backend webcluster-host if test
    default_backend default-host

配置前做好wndows解析

988d3a51800f4083b3ef540860f596d4.png

base:string

frontend webcluster
    bind *:80
    mode http
    #acl test hdr_beg(host) -i lee
    acl test base_sub -m sub bbs
    use_backend webcluster-host if test
    default_backend default-host

验证
[root@haproxy ~]# curl www.test.com
webserver2 - 172.25.254.20

[root@webserver1 ~]# mkdir /var/www/html/lee -p
[root@webserver1 ~]# echo 172.25.254.10 lee > /var/www/html/lee/index.html


[root@webserver1 ~]# curl 172.25.254.10/lee/index.html
172.25.254.10 lee
frontend webcluster
    bind *:80
    mode http
    #acl test hdr_beg(host) -i bbs
    #acl test base_sub -m sub lee
    acl test base_reg -i lee/$
    use_backend webcluster-host if test
    default_backend default-host

[root@haproxy ~]# curl www.test.com/lee/
172.25.254.10 lee

path:string

frontend webcluster
    bind *:80
    mode http
    #acl test hdr_beg(host) -i bbs
    #acl test base_sub -m sub lee
    #acl test base_reg -i lee/$
    acl test path_sub -m sub lee
    use_backend webcluster-host if test
    default_backend default-host

同一网址,不同路径,访问的同一主机
[root@haproxy ~]# curl www.timimglee.org/lee/
172.25.254.10 lee

[root@haproxy ~]# curl www.test.com lee/
172.25.254.10 lee

ACL示例-域名匹配

frontend webcluster
    bind *:80
    mode http
    acl test hdr_dom(host) -i www.timinglee.org
    use_backend webcluster-host if domain
    default_backend default-host


[root@haproxy ~]# curl www.timimglee.org
webserver1 - 172.25.254.10 

[root@haproxy ~]# curl www.test.com 
webserver2 - 172.25.254.20

ACL示例-基于源ip或子网调度方向


frontend webcluster
    bind *:80
    mode http
    acl ctrl_ip src -i 172.25.254.1 172.25.254.20 192.168.0.0/24
    use_backend webcluster-host if ctrl_ip
    default_backend default-host

符合条件
[root@webserver2 ~]# curl 172.25.254.100
172.25.254.10 - index.html
不符合
[root@haproxy ~]# curl 172.25.254.100
172.25.254.20 - index.html


拒绝

frontend webcluster
    bind *:80
    mode http
    acl ctrl_ip src -i 172.25.254.1 172.25.254.20 192.168.0.0/24
    #use_backend webcluster-host if ctrl_ip
    http-reqoest deny if ctrl_ip
    default_backend default-host

 ACL示例-基于文件后缀域名实现动静分离

[root@webserver1 ~]# dnf install php -y

[root@webserver1 ~]# systemctl restart httpd

[root@webserver1 ~]# vim /var/www/html/index.php
<?php
        phpinfo();
?>


[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg 
frontend webcluster
    bind *:80
    mode http
    acl static path_end -i .html .jpg .png .css .js
    acl php    path_end -i .php
    #use_backend webcluster-host if ctrl_ip
    use_backend default-host if php
    default_backend default-host
[root@haproxy ~]# systemctl restart haproxy.service 

 验证

 2ac99188ba084a4b9a5b5fb909747a4d.png

自定义haproxy错误界面

对指定的报错进行重定向,进行优雅的显示错误页面

使用errorfile和erroroc指令的两种方法,可以实现自定义各种错误页面

#haproxy默认使用的错误错误页面
[root@haproxy ~]# rpm -ql haproxy24z-2.4.27-1.el7.zenetys.x86_64 | grep -E http$
/usr/share/haproxy/400.http
/usr/share/haproxy/403.http
/usr/share/haproxy/408.http
/usr/share/haproxy/500.http
/usr/share/haproxy/502.http
/usr/share/haproxy/503.http
/usr/share/haproxy/504.http

 基于自定义的错误页面文件

#自定义错误页
errorfile <code> <file> 
<code> #HTTP status code.支持200, 400, 403, 405, 408, 425, 429, 500, 502,503,504
<file> #包含完整HTTP响应头的错误页文件的绝对路径。 建议后缀".http",以和一般的html文件相区分
#示例:
errorfile 503 /haproxy/errorpages/503page.http 

示例 

[root@webserver1 ~]# systemctl stop httpd.service 

[root@webserver2 ~]# systemctl stop nginx.service 

[root@haproxy ~]# mkdir /etc/haproxy/errorpage -p

[root@haproxy ~]# vim  /etc/haproxy/503.http
HTTP/1.0 503 Service Unavailable
Cache-Control:no-cache
Connection:close
Content-Type:text/html;charset=UTF-8
<html><body><h1>什么动物生气最安静</h1>
大猩猩!!
</body></html>


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

    errorfile 503   /etc/haproxy/errorpage/503.http

[root@haproxy ~]# systemctl restart haproxy.service 

验证

测试:关闭webserver主机,去访问172.25.254.100

a7fa2e4d89ba4deb8844f3cda058f879.png

基于http中定向错误页面

#错误页面重定向

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

#   errorfile 503 /etc/haproxy/errorpage/503.http
    errorloc 503 https://www.baidu.com

[root@haproxy ~]# systemctl restart haproxy.service 

#浏览器访问172.25.254.100自动跳转到百度

访问172.25.254.100

6c7ada1da6da4e7eb36eb638f7b35936.png

 haproxy四层负载

针对除HTTP以外的TCP协议应用服务访问的应用场景


MySQL
Redis
Memcache
RabbitMQ

四层负载示例

注意:如果使用frontend和backend,一定在 frontend 和 backend 段中都指定mode tcp

listen mysql-port
   bind 10.0.0.7:6379
   mode tcp
   balance leastconn
   server server1 10.0.0.17:3306 check
   server server2 10.0.0.27:3306 check backup

HAProxy https 实现

haproxy可以实现https的证书安全,从用户到haproxy为https,从haproxy到后端服务器用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/timinglee.org.key \ 
-x509 -days 365 -out /etc/haproxy/certs/timinglee.org.crt

https配置示例

haproxy ~]# vim /etc/haproxy/haproxy.cfg
frontend webserver
   bind *:80
   redirect scheme https if !{ ssl_fc }
   mode http
   use_backend webcluster
frontend webserver-https
   bind *:443 ssl crt /etc/haproxy/timinglee.org.pem
   mode http
   use_backend webcluster
backend webcluster
   mode http
   balance roundrobin
   server web1 172.25.254.10:80 check inter 3 fall 3 rise 5
   server web2 172.25.254.20:80 check inter 3 fall 3 rise 5

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Service服务在Android中的使用

目录 一&#xff0c;Service简介 二&#xff0c;Service的两种启动方式 1&#xff0c;非绑定式启动Service 2&#xff0c;绑定式启动Service 三&#xff0c;Service的生命周期 1&#xff0c;非绑定式Service的生命周期 2&#xff0c;绑定式Service的生命周期 四&#xf…

BCArchive加密工具实测分享:为何我觉得它很实用?

前言 你是不是经常有这样的烦恼&#xff1a;重要的文件、私密的照片、敏感的资料&#xff0c;总是担心会不小心泄露出去&#xff1f;哎呀&#xff0c;别担心&#xff0c;别担心&#xff0c;我今天要介绍的这款软件&#xff0c;简直就是守护你数据安全的超级英雄&#xff01; 在…

CVE-2012-2122 mysql/mariaDB身份认证漏洞

简介&#xff1a; 当连接MariaDB/MySQL时&#xff0c;输入的密码会与期望的正确密码比较&#xff0c;不断的尝试登录连接&#xff0c;回导致MySQL认为两个密码是相同的。也就是说只要知道用户名&#xff0c;不断尝试就能够直接登入SQL数据库。 影响范围#所有的Mariadb和mysql版…

【吊打面试官系列-Elasticsearch面试题】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

大家好&#xff0c;我是锋哥。今天分享关于 【Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f; 1、64 GB 内存…

【STM32】CubeMX + CLion + FreeRTOS移植过程问题记录

文章目录 一、portable 文件选择二、自定义文件添加三、ST-Link v2 烧录问题四、STM32F407工程中程序无法启动调度器 前言   本文依照稚晖君分享的配置CLion用于STM32开发【优雅の嵌入式开发】&#xff0c;尝试配置STM32CubeMX CLion开发环境&#xff0c;并在此基础上移植Fre…

利用Emgucv绘制条形码边框16(C#)

EmguCV环境配置&#xff1a; ​​​​​​Emgu CV4图像处理之环境搭建1(C#)_emgucv 4.7-CSDN博客 本文测试环境&#xff1a; win10 64位 vistual studio 2019 Emgu CV 4.6.0 环境配置准备&#xff1a; 1 新增控制台项目&#xff0c;.net framework为4.7.2 2 把win-x…

minikube 实践练习

前言 我这里就简单跟着官方教程做了下练习 参考文档&#xff1a;https://v1-27.docs.kubernetes.io/zh-cn/docs/tutorials/hello-minikube/ 这里最重要的是&#xff0c;你需要提前配置好你的网络。 这个我教不了&#xff0c;之前发了篇帖子vmware实现科学上网审核不通过&…

ElasticSearch 全文检索相关性 算分

文章目录 相关性相关性Relevance相关性算法TF-IDFBM25 通过Explain查看TF-IDFboosting query 多字段查询 相关性dis_max query最佳字段查询multi_match querybest_fields最佳匹配字段most_fields 多数字段搜索cross_fields跨字段搜索 相关性 相关性Relevance 搜索的相关性算分…

Ubuntu 通过 docker 安装 Nginx 镜像 + 创建并运行 nginx01 容器

一、安装 nginx:精简版镜像 1. 查找有什么类型的 nginx 镜像 yammiemy-pc >/home/yammie $ docker search nginx 2. 下载精简版 nginx 镜像 yammiemy-pc >/opt $ docker pull nginx:alpine alpine: Pulling from library/nginx 46b060cc2620: Already exists 21af147…

【深度学习|目标跟踪】快速入门卡尔曼滤波!

卡尔曼滤波详解 申明一、什么是卡尔曼滤波1.1 卡尔曼滤波的使用场景1.2 卡尔曼滤波的定义 二、卡尔曼滤波公式详解&#xff08;无推导&#xff09;三、卡尔曼滤波的简单应用 申明 本博客参考了b站up主“华南小虎队”的卡尔曼滤波教学视频以及Lauszus Kristian Sloth Lauszus的卡…

联想Thinkpad驱动安装下载(官网的驱动下载)

联想Thinkpad驱动安装官网下载地址&#xff1a; 联想驱动管理_ThinkPad服务网站-联想服务 联想驱动管理 帮助您更快速准确的定位驱动 自动下载安装,安装驱动不求人 软件版本&#xff1a;V2.9.0719.1104 | 大小&#xff1a;5.7M最后更新&#xff1a;2021-07-21支持系统&#…

41.【C语言之外】聊聊Cheat Engine官方教程步骤6的思考

0.看前须知 有一定指针概念的基础 推荐阅读前几篇博文&#xff1a; 19.【C语言】指针&#xff08;重难点&#xff09;&#xff08;A&#xff09; 37.【C语言】指针&#xff08;重难点&#xff09;&#xff08;B&#xff09; 38.【C语言】指针&#xff08;重难点&#xff09…

oracle的exp.exe、imp.exe在哪下载?

需要oracle账号 地址&#xff1a; Instant Client for Microsoft Windows (x64) 64-bit 下载这个工具包

开发一个能打造虚拟带货直播间的工具!

在当今数字化时代&#xff0c;直播带货已成为电商领域的一股强劲力量&#xff0c;其直观、互动性强的特点极大地提升了消费者的购物体验。 然而&#xff0c;随着技术的不断进步&#xff0c;传统直播带货模式正逐步向更加智能化、虚拟化的方向演进&#xff0c;本文将深入探讨如…

智慧景区系统开发功能定制

智慧景区系统开发功能定制是一项综合性服务&#xff0c;它涉及到利用云计算、物联网、AI监控等先进技术&#xff0c;通过互联网和移动互联网&#xff0c;实现景区智慧化管理和服务提升。 以下是智慧景区系统开发中应考虑的关键功能点&#xff1a; 游客服务平台&#xff1a;包…

23款奔驰E350eL升级原厂香氛负离子系统,保持一股高级的香味

相信大家都知道&#xff0c;奔驰自从研发出香氛负离子系统后&#xff0c;一直都受广大奔驰车主的追捧&#xff0c;香氛负离子不仅可以散发出清香淡雅的香气外&#xff0c;还可以对车内的空气进行过滤&#xff0c;使车内的有害气味通过负离子进行过滤&#xff0c;达到车内保持清…

“AI能不能代替某某职业”,到底谁在破防?

前几天&#xff0c;公司在午间分享时谈到一个有趣的辩题&#xff1a;“AI能不能代替产品经理”&#xff0c;不仅双方辩手打了个你来我往&#xff0c;就连下面的吃瓜群众也进入红温状态。 “AI能不能代替xx”已经成为一个普遍的话题&#xff0c;在某乎上随手一刷就是不同的职业…

Linux 利用 ftrace 分析内核调用

目录 一、概述二、ftrace 的使用1、常用信息2、指定 ftrace 跟踪器3、设置要跟踪的函数4、ftrace 的开关5、function 跟踪程序6、function_graph 跟踪程序7、函数过滤器8、跟踪事件 三、trace-cmd 的使用1、常见命令2、常用选项2.1 列出可用的追踪器2.2 跟踪特定进程的函数调用…

如何用剪映自动批量生成左右分屏的视频?

做tiktok中视频计划的朋友&#xff0c;应该都知道一种批量做号的模式&#xff0c;就是找一些热门视频作为左边主机视频&#xff0c;右边则放上一些减压类视频以保存画面的原创度&#xff0c;像下面这种。 这种视频是如何批量用剪映生成的呢&#xff1f; 一、准备好素材 下载好…

数据结构——栈的讲解(超详细)

前言&#xff1a; 小编已经在前面讲完了链表和顺序表的内容&#xff0c;下面我们继续乘胜追击&#xff0c;开始另一个数据结构&#xff1a;栈的详解&#xff0c;下面跟上小编的脚步&#xff0c;开启今天的学习之路&#xff01; 目录 1.栈的概念和结构 1.1.栈的概念 1.2.栈的结构…