我正在使用 haproxy 对 Web 服务器进行负载平衡。我将会话持久性与附加 cookie 一起使用,因为某些应用程序使用会话文件,而这些文件在服务器之间不同步。
我想禁用服务器进行维护,但不中断会话。所以我想允许现有客户继续他们的应用程序会话,但不接受新客户。
您认为通过某些 haproxy 配置可以实现吗?或者有什么聪明的方法来做到这一点?
满足此需求的其他方法的非详尽列表:
我使用这种配置:
frontend https-in
bind xxx.xxx.xxx.xxx:443 ssl crt /etc/haproxy/ssl/_default.pem crt /etc/haproxy/ssl
reqadd X-Forwarded-Proto:\ https
acl APP1 hdr(host) -i APP1.atac.local
use_backend APP1 if APP1
default_backend _default
backend APP1
redirect scheme https if !{ ssl_fc }
mode http
balance roundrobin
cookie HAPROXY_SESSION insert indirect
option httpchk HEAD /haproxy_test_page.php HTTP/1.0\nUser-Agent:\ HAProxy
server SRV1 SRV1_IP:PORT cookie SRV1 check
server …Run Code Online (Sandbox Code Playgroud) 我只需要执行一次状态。我找不到一个简单的方法来做到这一点。
我通过 salt 安装了两个 MySQL 服务器。我想让一个人成为另一个人的奴隶。
为了设置从站,我需要在主站安装结束时获取主站状态信息:
SHOW MASTER STATUS;
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用执行mysql.query函数的自定义状态来获取它。
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
Run Code Online (Sandbox Code Playgroud)
但是每次为我的服务器执行 highstate 时它都会执行。从而每次都给出不同的主信息。
我尝试使用文件存在作为标志:
/tmp/only_once:
file.missing: []
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
- require:
- file: /tmp/only_once
Run Code Online (Sandbox Code Playgroud)
它正在工作,但我并不高兴,因为我现在每次都有两个失败的状态。
我以一个新参数 for 结束mystate,flag它在第一次执行时创建一个标志文件,如果文件存在则成功返回:
mysql_master_status:
mystate.query:
- query: SHOW MASTER STATUS
- flag: /tmp/only_once
Run Code Online (Sandbox Code Playgroud)
不过,我想知道是否以及如何只执行一次状态。
我想限制一些 AD 用户使用特定脚本,限制他们在这台特定机器上可以做什么。
因此,与其将它们与/bin/bash(例如)连接起来,我想强制它们使用/path/to/my/script. 这些用户位于特定的 AD 组中。
其他人应该能够使用真正的shell。
如果那些用户是本地用户,我只会更改 .bashrc 中的 shell 字段/etc/passwd。
有没有办法只为该组的成员提供不同的 shell 值?
如果不是,你会怎么做?