我们有一个 VM Linux 服务器,该hot add功能在 VCenter 中被禁用。
目前,我们不能关闭机器,特性是disable,所以我们不能给机器添加内存资源。
那么您知道如何在hot add不关闭 Linux redhat 机器电源的情况下启用该功能吗?
redhat virtual-machines vmware-esxi vmware-vcenter vmware-vsphere
我已经设置了许多自定义 systemd 服务单元,它们的环境变量中可能包含敏感数据。虽然非 root 用户无法使用systemctl cat该服务,但任何人都可以通过systemctl show. 这是不希望的,因为其他用户不应读取该数据。/etc/systemd/system 中的 *.service 文件被标记为只能由 root 读取(模式 600)。
我找不到任何有关 systemd 访问限制的信息。这可能吗?或者所有 systemd 数据都被认为是公开的并且全世界都可读吗?如果没有可用的安全性,我想我将不得不停止使用 systemd 功能并将所有内容包装在另一层无法访问的脚本文件中。
我当前的环境是Ubuntu Server 16.04和20.04。
我保护 wp-login 页面的代码抛出错误:
nginx: [emerg] invalid number of arguments in "auth_basic" directive in /etc/nginx/conf.d/wordpress.conf:41
我不确定 auth_basic 指令有什么问题。
以下是位于 NGINX 1.17.10 上 server 块中的代码
location /wp-login.php$ { auth_basic “Administrator’s Area”; auth_basic_user_file /etc/apache2/.htpasswd; }
apache2-utils 已安装,用户和密码也已创建。
安塞布尔2.8.1
在我的剧本tasks/目录中:
main.yml
dev.yml
Run Code Online (Sandbox Code Playgroud)
在main.yml我有一个这样的块:
- include_tasks: dev.yml
when: ec2_tag_env == 'dev'
Run Code Online (Sandbox Code Playgroud)
效果很好
但是,如果我尝试使用标签调用 dev.yml 中的特定任务。它不会在运行期间限定任务
例如,以下标记的任务dev.yml:
- name: Pull the latest image
docker_image:
name: "{{ dev_image }}"
source: pull
tags:
- container
Run Code Online (Sandbox Code Playgroud)
当我用它运行剧本时,-t container 它将不符合资格,因为该include_tasks步骤没有该标签。
添加标签include_tasks当然可以解决问题,但是当标签添加到子任务中时,我需要跟踪标签并将它们添加到此处:
- include_tasks: dev.yml
when: ec2_tag_env == 'dev'
tags:
- container
Run Code Online (Sandbox Code Playgroud)
问题
Ansible 是否可以“知道”include_tasks块内有哪些任务并提取适用的标签?
实现这一目标的最佳实践是什么?
我宁愿不必做的事情:
main.yml。我在这本剧本中有很多任务,我真的很想将它们组织在文件中。include_tasks块及其所有子标签。听起来像是一场噩梦。我们有一个小型服务器机房,机房内的湿度水平远非理想。3 个月以来,我们一直在 60% 到 68% 之间进行测量。建筑物内的环境湿度约为 50%。
使用空调的干燥模式无助于降低湿度。我听说使用除湿机会导致房间内积聚静电。
我有哪些选项可以解决这个问题?
服务器机房布局如下:
例如,在 AWS 中,当我启动一个新的 EC2 实例时,它会加载一个新的 VM,然后使用容器映像填充 VM。这就是启动新 EC2 实例需要 60-90 秒才能启动的原因。
出于好奇,让 AWS 按原样运行主机有什么缺点,当用户想要“启动 EC2 实例”时,AWS 只会启动一个具有受限权限的容器,并且只允许用户访问那个容器?
好处是计算实例会很快启动。我仍在学习云技术,所以我只是想知道缺点是什么。
也许在不使用 VM 的情况下分配 CPU 资源会更困难?结果,用户会互相争夺可用的CPU吗?或者也许有一些安全问题?很想了解这个。
我们的业务应用程序在两个节点(节点 1 和节点 2)上运行 Docker Swarm 部署。
应用程序需要一个卷来存储持久数据。由于尚不清楚容器部署在哪里(节点 1 或节点 2),并且应用程序的两个容器可能应该在两个节点上运行,因此我们需要一个解决方案来为所有节点提供共享卷。
为了共享卷,我们使用以下 /etc/exports 文件在第三个节点 3 上设置 NFS 服务器:
/srv *(rw,sync,anonuid=1000,anongid=1000,all_squash,subtree_check,crossmnt,fsid=root)
Run Code Online (Sandbox Code Playgroud)
(我使用 anonuid/gid 为导出中的每个文件显式设置 node3 系统中已知用户的用户信息。 all_squash 用于确保所有访问用户的所有文件权限都重写给该本地用户)
在我们的 docker-compose.yml 中,我们使用以下设置来包含卷:
volumes:
nfs-data:
driver: local
driver_opts:
type: nfs
o: nfsvers=4,addr=node3.example.com,rw,nolock,soft
Run Code Online (Sandbox Code Playgroud)
我们现在遇到了一个问题,容器只是不想启动,错误消息是:
failed to copy file info for /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: failed to chown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: lchown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: operation not permitted
Run Code Online (Sandbox Code Playgroud)
经过一番挖掘后,我发现问题在于 Node3 服务器上导出的 NFS 目录上的初始空文件夹。一旦我放入一个空文件,节点 1 和节点 2 中的容器启动就完全正常。
有人对此有解释吗?
我在负载平衡器后面有一组 Java Vertx 服务器,用于处理峰值流量。一分钟它可能处理 150k r/m,下一分钟它可能处理 2mm r/m,然后又回到 150k r/m。我发现在这些高峰期间,整个队列可能会在几分钟内无响应并断开连接,而任何一台机器上的 cpu 和 mem 压力几乎没有达到 50% 的利用率。
为了测试究竟是什么导致了中断,我设置了一个测试服务器,它与我的生产队列中的一个服务器的规格相匹配,以查看在它发出之前我可以投入多少。我的测试涉及使用其他 10 台机器,每台机器打开 500 个到服务器的 https 连接,并发送 1mm 请求,每个请求有效负载约 2kb。这总共打开了 5k 个并发连接,发送了总共 10mm 的请求,用于大约 20gb 的数据传输。
一旦连接打开,我每分钟可以发出大约 70 万个请求。我只是通过向健康端点发出请求并记录响应时间来监控服务器的可用性。响应时间快,几十毫秒。我对这些结果很满意。
但是在大量数据开始进入之前,这 10 台机器必须首先建立 5k 连接。在此期间,服务器无响应,甚至在我尝试检查运行状况端点时可能超时。我相信这就是导致我的生产车队中断的原因 - 新连接的突然增加。一旦建立连接,服务器就可以轻松处理传入的所有数据。
我已经更新了 nofile ulimit、net.core.netdev_max_backlog、net.ipv4.tcp_max_syn_backlog 和 net.core.somaxconn,但在几秒钟内收到一连串 5k 新连接请求时它仍然挂起。
我可以做些什么来更快地建立新的连接?
编辑:
实际的服务器在 docker 容器中运行。我的网络设置没有应用于容器。接下来要尝试一下,看看它是否有所作为。
编辑编辑:
这一切都在 SSL 中。通过普通 HTTP 快速建立如此多的连接几乎是即时的。所以我必须弄清楚如何更快地建立 TLS 连接。
编辑编辑编辑:
我发现本机 java 安全 ssl 处理程序是瓶颈。切换到netty-tcnative(又名本机 OpenSSL)几乎解决了我的 HTTPS 问题。
我在 CentOS 7.8 上使用 Apache 2.4.43 以及 Varnish 6 和 PHP-FPM 来为 Magento 2 网站提供服务。
Varnish 侦听端口 80。Apache 侦听 8080 以向 Varnish 提供内容,并且还侦听端口 443,该端口将 HTTPS 请求代理到 Varnish,如下所示:
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:80/
RequestHeader set X-Forwarded-Port "443"
RequestHeader set X-Forwarded-Proto "https"
Run Code Online (Sandbox Code Playgroud)
这适用于大多数请求,但偶尔(约 10% 的请求)我会收到来自 Varnish 和 Apache 的 503 响应。我在 Apache 日志中看到的唯一错误是:
[proxy_http:error] [pid 6719:tid 140054596265728] (70008)Partial results are valid but processing is incomplete: [client x.x.x.x:53760] AH01110: error reading response, referer: http://example.com
Run Code Online (Sandbox Code Playgroud)
如果我重试该请求,它通常会立即起作用,尽管有时我必须刷新几次才能满足请求。我注意到,当发出大批量请求时(即包含数百个外部资源的页面),这种情况会更频繁地发生。我还注意到,这种情况似乎发生在较大的文件上,而不是较小的文件上。
我猜测这可能是某种超时,但我不确定要调整哪些值或如何进一步调试它。
我尝试过的事情包括以下内容:
根据Exim4 文档我有以下脚本:
#! /bin/bash --
ED="dkim_ed25519_$(date +'%Y%m%d')"
RSA="dkim_rsa_$(date +'%Y%m%d')"
## Generate private key
openssl genpkey -algorithm ed25519 -out "${ED}.private"
openssl genrsa -out "${RSA}.private" 2048
## Use private key to generate the public DNS TXT record:
## 20200701._domainkey.example.com IN TXT "k=[ed25519|rsa]; p=[pub_key_content]"
openssl pkey -in "${ED}.private" -pubout -outform DER | tail -c +13 | base64 > "${ED}.public"
openssl rsa -in "${RSA}.private" -pubout -outform PEM | sed '/^-----/d' | tr -d '\n' > "${RSA}.public"
Run Code Online (Sandbox Code Playgroud)
这会生成一对私钥+公钥。公共的有:
dkim_ed25519_20200701.public:
ICkF+6tTRKc8voK15Th4eTXMX3inp5jZwZSu4CH2FIc=
Run Code Online (Sandbox Code Playgroud)
dkim_rsa_20200701.public: …