我在两台服务器(CentOS 6 和 7)上运行了绑定 9.9.5,用于缓存和转发邮件服务器的 DNS 查询。服务器可以正常运行数周,然后突然以 SERVFAIL 响应所有查询。第一次发生时,两台服务器在同一天开始出现故障。现在,一周后,它再次发生,但只发生在一台服务器上。重新启动named会使问题消失。
这是/etc/named.conf(此处包含不相关部分的完整文件)的重要部分:
acl "trusted" {
localhost;
localnets;
10.128.0.0/9;
};
options {
listen-on port 53 { 127.0.0.1; 10.128.0.0/9; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
auth-nxdomain no;
version "asdf";
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
recursion yes;
forward only;
forwarders { 169.254.169.254; };
allow-query { trusted; };
allow-recursion { trusted; };
};
Run Code Online (Sandbox Code Playgroud)
当服务器处于失败状态时,一个 dig 查询响应: …
我在代理服务器后面有一组应用程序,它们适当地转发请求并使用代理协议来保留请求的原始数据。这些应用程序还会相互发出请求,因此我希望它们接受使用和不使用代理协议的请求。是否可以将 Nginx 配置为以某种方式执行此操作而不使用其他server_name端口?
在我的本地文件服务器上,我在 7x HDD 驱动器上安装了 raid-6。
dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync
Run Code Online (Sandbox Code Playgroud)
本地速度测试给了我 349 MB/s 的写入速度。
从 SSD 远程写入 Samba(> 2Gb/s 读取速度)给了我 259 MB/s 的写入速度。但是远程写入 iSCSI 驱动器(在 Win10 iSCSI 启动器上)仅提供 151 Mb/s 的写入速度。
raid6 配置 - 128K 块大小,stripe_cache_size = 8191。写入意图位图在 SSD 上(三星 860 PRO,4096K 位图块)。
使用选项安装的阵列: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback
open-iscsi 设置:目标基于 4Tb 文件。
任何提示为什么 iSCSI 在写入时比 Samba 慢?关于如何提高 iSCSI 写入速度的任何提示?
我认为这与 open-iscsi 在每次操作后刷新写入磁盘的愿望有关,由于过多的奇偶校验重写,这增加了 raid6 上的写入放大。但我不知道如何解决它。在断电的情况下,速度比当前写入数据的安全更重要。
作为旁注,较旧的 ietd iSCSI 目标能够启用回写模式(使用 IOMode=wb),并且持续写入速度要快得多。不幸的是,它目前似乎没有维护。
我已经在我的 HP P840 上使用 RAID5 硬盘存储 (8x6TB) 大约 2 年了,它总是出现异常多的驱动器故障。半年一切都很好,但现在驱动器以一种奇怪的方式出现故障。例如,2 个新驱动器在添加到 RAID 几天后出现故障。我也已经更换了 RAID 控制器,并在主板和 RAID 控制器上使用了最新固件。
我也尝试使用不同的驱动器。最初在该 RAID 中使用了 HGST DeskStar 6TB 驱动器,现在我在更换故障驱动器时已将它们替换为 HGST UltraStar 6TB。但行为是一样的。
此外,似乎(大多数)驱动器并没有真正发生故障,因为一旦我更换了 RAID 控制器,一个发生故障的驱动器就会再次被识别为正常并开始重建。
我的主机支持说问题是我实际上使用的是 RAID5,我应该改用 RAID10。我很难相信,因为我一直在使用 RAID5,在其他系统上没有问题(多年来没有出现驱动器故障)。
谁能给我一个提示,罪魁祸首可能是什么?RAID 控制器的配置方式有问题吗?
谢谢!
编辑:
服务器是 HP DL180 G9
驱动器故障的原因始终是“写入重试失败”
更新:我们的主机提供我们完全更换硬件并切换到 RAID6。我们这样做了,现在已经顺利运行了一段时间。虽然这并没有得到真正的调查,但我相信 shodanshok 对穿孔阵列的解释似乎是合理的。因此我会接受这个答案。谢谢大家!
Smart Array P840 in Slot 1 (sn: PDNNF0ARH321GD)
Port Name: 1I
Port Name: 2I
Internal Drive Cage at Port 1I, Box 2, OK
Internal Drive Cage at Port 1I, Box 2, OK
Internal …Run Code Online (Sandbox Code Playgroud) 我正在通过 Terraform 构建 AWS VPC 网络实验室。
我想添加一个 NAT 网关,以便我的私有网络实例可以访问 Internet 进行软件更新。
从 Terraform规范中,您可以看到“allocation_id”是必需的属性:
allocation_id -(必需)网关的弹性 IP 地址的分配 ID。
在 AWS规范中也进行了检查- 在步骤 1 中:
NAT 网关需要您的公有子网中有一个弹性 IP 地址...
我的问题是:为什么 NAT 网关不能使用简单的non static IPv4 address?
这样做的逻辑原因是什么?(从技术上讲,这是配置的唯一选项)。
注意:问题在 AWS 的范围内,而不是 Terraform。
Terraform 中 Nat 网关配置的简短示例:
resource "aws_nat_gateway" "natgw" {
allocation_id = "${(aws_eip.nateip.id)}"
subnet_id = "${(aws_subnet.public.id)}"
depends_on = ["aws_internet_gateway.igw"]
}
Run Code Online (Sandbox Code Playgroud) 出于性能原因,我在 nginx 前面使用了 HAProxy,而且我似乎无法使用 unix socket 进行 HAProxy 和 Nginx 之间的通信。
HAProxy 配置:
backend nginx
option forwardfor
option http-server-close
server nginx_unix /var/run/nginx-webhook.sock check send-proxy
Run Code Online (Sandbox Code Playgroud)
Nginx 配置:
server {
listen 8080 proxy_protocol;
listen unix:/var/run/nginx-webhook.sock proxy_protocol;
...
}
Run Code Online (Sandbox Code Playgroud)
套接字确实存在:
$ ls -lah /var/run/nginx-webhook.sock
srw-rw-rw- 1 root root 0 Feb 7 19:29 /var/run/nginx-webhook.sock
Run Code Online (Sandbox Code Playgroud)
这是我从 HAProxy 状态页面得到的错误:
Mar 17 14:38:42 app01 haproxy[11597]: Server nginx/nginx_unix is DOWN, reason: Socket error, info: "General socket?
error (No such file or directory)", check duration: 0ms. 1 active and …Run Code Online (Sandbox Code Playgroud) 我在网站上有一个部分可以阻止对所有 IP 的访问,但列入白名单的 IP 除外。对于 IPv4,这很简单,因为即使使用动态 IP,它们通常几个月甚至几年都不会改变。
但是,对于 IPv6,这些似乎每 24 小时左右交替一次。这意味着我不能简单地将初始 IPv6 IP 列入白名单并称其为良好,因为它会很快再次更改。因此,我需要将整个范围列入白名单。即使在过去几天阅读和测试 IPv6 之后,我仍然不确定我是否掌握了它。
这是我所拥有的:
order deny,allow
allow from 1234:123:4567:ab1::/64
deny from all
Run Code Online (Sandbox Code Playgroud)
IP 地址的前 4 部分永远不会改变,但后 4 部分会不断变化。在这种情况下,这是将个人 IP 列入白名单的正确方法吗?
我一生中从未遇到过磁盘故障,但我遇到了十几个位腐烂和无声的损坏。“普通”文件系统和硬件 RAID 对此完全无能为力。我一直在使用应用程序级奇偶校验冗余来保护我最重要的数据,但它显然不是很有效。
我知道 ZFS 存储软件 RAID 中块的校验和,它提供防止位腐烂和静默损坏的保护,或者是吗?. 问题是,我不想要RAID-Z,因为它不支持扩展,这意味着如果我要扩展,我必须购买容量大于我所有数据的磁盘。
那么是否可以在没有 RAID 或不等磁盘大小的 RAID 的情况下使用文件系统级奇偶校验?例如,通过分配部分磁盘空间来存储“块”的奇偶校验,而不是像 RAID5 那样将相同大小磁盘的奇偶校验存储在另一个磁盘上。
谢谢大家的回答,以下是根据回答得出的结论:
不,在没有 RAID 的情况下不可能使用 ZFS 奇偶校验,但是可以在没有 RAID 的情况下使用镜像副本。
我正在尝试使用 python 获取项目中的存储桶列表:
from google.cloud import storage
storage_client = storage.Client(project='[project-id]')
bucket = storage_client.get_bucket([bucket-name])
blobs = bucket.list_blobs()
for blob in blobs:
print(blob.name)
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
[service-account-ID]-compute@developer.gserviceaccount.com does not have storage.buckets.get access to [bucket-name]
Run Code Online (Sandbox Code Playgroud)
无论如何,如果我尝试使用 gsutil(使用相同的服务帐户):
gsutil ls gs://[bucket-name]
Run Code Online (Sandbox Code Playgroud)
我可以获得存储桶中的对象列表......所以我不明白发生了什么,关于我应该做什么的任何线索?
对于我的部门,我设想了一个由相同机器组成的两节点集群,运行 S2D。
我想使用 Broadcom 57416 10GBASE-T 适配器(示例说明),因为它们支持 RDMA 并以我的组织提供的免费基础架构的速度运行。
你能告诉我“直接连接”需要什么类型的硬件和电缆吗?
由于我没有使用自己的开关,如果可能的话,我希望节点直接同步。