我知道有一个 ALB 和 NLB 选项可与 websocket 一起使用。我不明白为什么带有 HTTP 协议的经典 ELB 不适用于 websocket 连接,尽管在实例中 Nginx 配置为添加连接和升级标头。一旦我将其切换到 TCP 协议,它就可以工作了。你能解释一下当中间有 HTTP 代理时这个协议到底是如何工作的吗?
它仍然使用相同的 TCP,一旦客户端到达服务器并且 Nginx 添加了升级标头,带有切换协议消息的服务器响应应该到达客户端,然后它们只使用已建立的 HTTP 连接的 TCP。它丢弃 ELB 上的此连接、响应缓冲或只是丢弃所有非 HTTP 流量的原因是什么?
所以Nginx发送到ELB
HTTP/1.1 101 Switching Protocols
Server: nginx/1.13.1
Date: Sat, 21 Mar 2020 07:53:38 GMT
Connection: upgrade
Upgrade: websocket
Sec-WebSocket-Accept: PozdkhgL/Zdkgh3kwu0KkACFCt0=
Run Code Online (Sandbox Code Playgroud)
但是ELB从来没有将其返回给客户端,并且请求超时。
proxy load-balancing amazon-web-services amazon-elb websocket
我正在测试我的服务器的裸机恢复,它基本上用我的服务启动了一组 docker 容器。我从备份中恢复/etc/docker,在那里我保留了所有配置和持久卷。
然后我尝试启动其中一个容器:
root@srv-backup:/etc/docker# docker-compose --verbose -f /etc/docker/docker-compose.d/20-registry.yaml up
compose.config.config.find: Using configuration files: /etc/docker/docker-compose.d/20-registry.yaml
ERROR: compose.cli.main.main: .IOError: [Errno 2] No such file or directory: '/etc/docker/docker-compose.d/20-registry.yaml'
Run Code Online (Sandbox Code Playgroud)
然而,该文件在那里:
root@srv-backup:/# ll /etc/docker/docker-compose.d/20-registry.yaml
-rwxrwxr-x+ 1 root root 842 Jan 24 15:19 /etc/docker/docker-compose.d/20-registry.yaml*
root@srv-backup:/# cat /etc/docker/docker-compose.d/20-registry.yaml
services:
registry:
container_name: registry
image: registry
labels:
- traefik.http.routers.registry.rule=Host(`registry.example.com`)
- traefik.http.routers.registry.entryPoints=https
- traefik.http.routers.registry.tls=true
- traefik.http.routers.registry.tls.certresolver=le
- traefik.http.middlewares.lan.ipwhitelist.sourcerange=192.168.10.0/24, 192.168.20.0/24
- traefik.http.routers.registry.middlewares=lan
- traefik.enable=true
restart: unless-stopped
volumes:
- /etc/docker/container-data/registry:/var/lib/registry
version: '3'
root@srv-backup:/# file /etc/docker/container-data/registry
/etc/docker/container-data/registry: directory
Run Code Online (Sandbox Code Playgroud)
我用相对路径和完整路径尝试了各种咒语 - …
我正在尝试从 minikube 容器访问本地 MySQL 数据库。我的 minikube 可在带有 hyper-v 驱动程序的 Windows 10 上运行。我找到了一些解决方案(从 VirtualBox 创建仅主机网络),但没有找到适用于 hyper-v 的解决方案。有人可以帮助我如何从 minikube hyper-v 连接到 localhost mysql 服务器吗?
为什么需要多次定义部署的标签?为了快速解释我的问题,我举一个例子。
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
# 1st Time
labels:
app: app
tier: backend
spec:
selector:
# 2nd Time
matchLabels:
app: app
tier: backend
template:
metadata:
# 3rd time
labels:
app: app
tier: backend
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是我真的找不到任何spec.selector.matchlabels存在的充分理由。spec.selector.matchlabels 一定要匹配 spec.template.metadata.labels对吗?
描述:
Pod 的标签选择器。由此选择的 pod 的现有 ReplicaSet 将受到此部署的影响。它必须与 Pod 模板的标签匹配。
那么,如果它们应该固定为 kubernetes 知道的特定值,并且如果其中一个与另一个不匹配,无论如何都会抛出错误,那么为什么必须明确定义它们呢?
我的第二个问题可能有更合理的答案,那就是为什么必须明确定义部署的标签和模板的标签?它们不应该也相互匹配吗?或者是否存在它们可能不匹配的情况?我只是错误地使用它们吗?没有关于它们针对模板标签的使用的明确文档。:/
如果我可能做错或理解错误,请指出!:D
BIND 9.16 引入了一项新dnssec-policy功能,作为长期建立的功能的进一步自动化的 DNSSEC 密钥管理和签名工具auto-dnssec maintain。
该文档似乎没有涵盖从旧版本到新版本的迁移,但相关的 wiki 页面似乎表明dnssec-policy.
也就是说,建立一个新区域dnssec-policy非常简单,但是将现有区域从 迁移auto-dnssec maintain到dnssec-policy似乎并不像人们预期的那样有效。
我所期望的是与现有密钥兼容的策略将继续使用这些密钥。
似乎发生的情况是,所有现有密钥都会立即从区域中删除,因为它们已经“过期”并被新密钥替换,即使新策略强制要求一组兼容的密钥(相同的算法和大小)并且现有密钥已未定义生命周期终止属性(仅Created、Publish和Activate.key 文件中的计时)。
我在测试时使用的策略如下所示(命名以反映测试期间的内容):
dnssec-policy alg13-ksk-unlimited-zsk-60day {
keys {
ksk key-directory lifetime unlimited algorithm ECDSAP256SHA256;
zsk key-directory lifetime P60D algorithm ECDSAP256SHA256;
};
};
Run Code Online (Sandbox Code Playgroud)
这是配置从 更改为 时的日志auto-dnssec maintain;输出dnssec-policy alg13-ksk-unlimited-zsk-60day;:
zone zone.example/IN (signed): reconfiguring zone keys
keymgr: DNSKEY zone.example/ECDSAP256SHA256/49004 (KSK) created for policy alg13-ksk-unlimited-zsk-60day
keymgr: DNSKEY …Run Code Online (Sandbox Code Playgroud) 我正在对我的数据库实施灾难恢复计划,我对只读副本的基本工作方式有一些担忧。
假设我有一堆订单信息,但随后数据库崩溃了,根据我的理解,我基本上可以只换出源数据库的副本,我将拥有所有数据库信息并可以继续。
我不清楚的情况是,假设有人不小心(或故意)删除了一堆数据,我想回退到只读副本,如果源数据库上的数据被删除,它会在只读副本上被删除还有?
本质上,我想确切地知道哪些数据将进入只读副本,以及是否可以将其恢复到我需要的确切时间点
如何配置 dovecot 来压缩/存档旧电子邮件(例如 6 个月前的电子邮件),同时用户仍然能够阅读它们,以节省服务器上的一些宝贵空间?
我一直在为邮件服务器配置 DNS 记录,但在 DMARC 对齐方面遇到了困难。
我知道 和relaxed都是strict有效的选项,并且relaxed是默认设置。但是,我想知道是否有普遍接受的“最佳”做法?
随着 DMARC 变得更加广泛,是否期望这种strict对齐方式将成为推荐/默认对齐方式?
我正在尝试使用我的 debian 服务器创建一个简单的代理服务器,我安装了 squid3 并添加了该配置:
http_port 3128
forwarded_for off
via off
acl Safe_ports port 1-65535
http_access allow 111.222.333.444
http_access allow Safe_ports
Run Code Online (Sandbox Code Playgroud)
但它不适用于给定的 ip,只有当我添加http_access allow all.
我想从我的家庭服务器设置后缀中继到我的网站托管 SMTP 服务器。它是 Centos 7,使用动态 IP 和动态 DNS 进行设置。由于我的托管站点空间有限,我想托管我自己的邮箱,同时仍然使用站点的 SMTP,因为它是静态 IP。我根据本教程设置了我的后缀。
但是,当我测试向 Gmail 发送电子邮件时,我的电子邮件被推迟了。我哪里设置错了?我使用 Thunderbird 的电子邮件帐户,它连接正常(STARTTLS,普通密码)
warning: SASL authentication failure: No worthy mechs found
Mar 24 11:42:48 server.local postfix/error[4142]: D16F51084542: to=<******@gmail.com>, relay=none, delay=361, delays=361/0.02/0/0.02, dsn=4.7.0, status=deferred (delivery temporarily suspended: SASL authentication failed; cannot authenticate to server mail.myhosting.com[202.52.***.***]: no mechanism available)
Run Code Online (Sandbox Code Playgroud)
这是我的 main.cf
smtpd_banner = $myhostname ESMTP $mail_name (CentOS)
biff = no
append_dot_mydomain = no
readme_directory = no
myhostname = mail-example.duckdns.org
mydomain = mail-example.duckdns.org
mynetworks = 127.0.0.0/8 192.168.101.0/24 192.168.98.0/24 …Run Code Online (Sandbox Code Playgroud)