问题列表 - 第5003页

CoreOS:tcpdump 神秘解决网络问题(使用过多的套接字)

我今天有一个谜团要告诉你。我们在 Azure 上运行一个基于 CoreOS (2023.5.0 / Linux 4.19.25-coreos) 的小型三节点 Elasticsearch 集群。Elasticsearch 在主机网络模式下的 docker 容器内运行。在几乎完全免维护运行一年多之后,我们看到机器进入了一种非常有趣的状态。

更新

此问题已通过修复Linux 内核中的驱动程序解决。请参阅下面的答案。

症状

基本上,受影响的机器和其他两个节点之间的网络连接失效。它们都在同一个虚拟网络和同一个子网中,通常可以与其他人通信。仍然可以从其他子网(我可以通过 ssh 进入)和不同的对等虚拟网络访问受影响的节点。这台机器也有(非常不稳定的)互联网连接,但大多数请求只是超时。

我们观察到,在受影响的节点上,报告的“使用的套接字”数量/proc/net/sockstat非常高(大约 4.5k 而不是健康节点上的大约 300)。监控显示,这个数字从节点变得不可用的那一刻起迅速上升。

有趣的是,我们似乎无法识别这些使用过的套接字的来源:

# cat /proc/net/sockstat
sockets: used 4566
TCP: inuse 2 orphan 0 tw 2 alloc 98 mem 4
UDP: inuse 1 mem 0
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

# cat /proc/net/sockstat6
TCP6: inuse 98
UDP6: inuse 1
UDPLITE6: inuse 0
RAW6: inuse 1
FRAG6: inuse …
Run Code Online (Sandbox Code Playgroud)

tcpdump linux-networking linux-kernel coreos azure-networking

14
推荐指数
1
解决办法
768
查看次数

如何重命名 Linux 主机而无需重新启动以使重命名生效?

我在 serverfault 上搜索了这个问题的答案,但找不到。我知道这是可能的,但我不记得怎么做。如何更改 Linux 主机的主机名并在不重新启动的情况下使更改生效?

我正在使用 Ubuntu 16 和 Ubuntu 18。

Ubuntu 的一大特色是图形桌面和图形系统实用程序。但是,我们在生产环境中运行 Ubuntu,因此我们选择不使用图形桌面或实用程序,以免这些功能消耗我们在生产环境中所需的资源。

我知道要重命名主机,我会编辑文件:

  • /etc/hostname
  • /etc/hosts

/etc/hostname一个只是用新的主机名替换当前的主机名(即将成为以前的主机名)。

/etc/hosts文件中的Ubuntu有一行:

127.0.1.1 your-hostname your-hostname
Run Code Online (Sandbox Code Playgroud)

当您的主机启动并在您的网络中建立自己时,它充当引导程序。在更改主机名之前,your-hostname是当前的(即将成为以前的主机名)并且作为更改主机的主机名的一部分,用新名称替换该名称。

我熟悉的是执行上述两个步骤,然后重新启动您的主机。但是很多时候,就像使用生产服务器一样,人们希望执行重命名,而不是重新启动主机。

如何更改主机上的主机名并在不重新启动主机的情况下使更改生效?

linux ubuntu hostname

26
推荐指数
2
解决办法
4903
查看次数

使用 journald 时 rsyslog 是否冗余?

我注意到日志消息在我的 CentOS 7 系统上的 journald 和 /var/log/messages 中重复。起初我认为是日志选项 ForwardToSyslog(在安装的版本中默认为“yes”)导致了这种行为,但将其设置为“no”并没有什么区别。

显然,如果我停止 rsyslog 服务,日志记录到 /var/log/messages(可能还有其他一些日志会停止,但是如果 rsyslog 正在记录 journald 没有记录的内容,我会担心这样做时)。

rsyslog 是只记录从 journald 读取的任何内容还是记录其他内容?

从 /etc/rsyslog.conf 中提取:

# The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal

...

# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging …
Run Code Online (Sandbox Code Playgroud)

linux rsyslog journald

7
推荐指数
1
解决办法
5632
查看次数

净使用/要求完整性/要求隐私/WRITETHROUGH?

在我的(荷兰语)Windows 10 Pro 计算机上,NET USE /?显示以下语法:

NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
        [/USER:[domainname\]username]
        [/USER:[dotted domain name\]username]
        [/USER:[username@dotted domain name]
        [/SMARTCARD]
        [/SAVECRED]
        [/REQUIREINTEGRITY]
        [/REQUIREPRIVACY]
        [/WRITETHROUGH]
        [[/DELETE] | [/PERSISTENT:{YES | NO}]]

NET USE {devicename | *} [password | *] /HOME

NET USE [/PERSISTENT:{YES | NO}]
Run Code Online (Sandbox Code Playgroud)

我还没有看到/REQUIREINTEGRITY/REQUIREPRIVACY也没有/WRITETHROUGH,所以我想之前那些都是新的交换机。我搜索了但没有找到任何权威的线索。他们的意思是什么?

为什么微软NET USE最近没有记录?

windows network-share

3
推荐指数
1
解决办法
2612
查看次数

如何在nginx中为单个文件指定完全匹配?

我有一个 php nginx 网站,我为其定义了默认位置。这很好用,只是我无法返回 favicon.ico。favicon.ico 文件存储在根目录的根目录下。

我目前有这个:

位置 / { error_page 404 = @pmwiki; log_not_found 关闭;}
location = /robots.txt { access_log off; log_not_found 关闭;}
location @pmwiki { 重写 ^/(.*)$ /?n=$1 最后;}
位置 ~ ^/(cookbook|local|scripts|wiki.d|wikilib.d) { 全部拒绝;}
位置 ^~ /docs { 自动索引开启;类型 { 文本/普通 php; } }
位置 ~ \.php$ { . . . }
位置 ~ /\. { 全部拒绝;}

我需要添加以下内容,但不知道用什么来代替问号。

位置 = /favicon.ico { ???? }

nginx

2
推荐指数
1
解决办法
529
查看次数

如何使用 Terraform 向现有 AWS S3 存储桶添加生命周期规则

我有一个现有的 S3 存储桶,我希望向其中添加“文件夹”和生命周期规则。

(我说“文件夹”是因为这是它们在客户端的表示方式,因为它们是通过 Storage Gateway 访问的。)

我可以创建文件夹,例如用于保存季度备份,例如:

resource "aws_s3_bucket_object" "quarterly" {
    bucket  = "${var.bucket_id}"
    acl     = "private"
    key     = "quarterly"
    source  = "/dev/null"
}
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试然后添加生命周期规则,如下

resource "aws_s3_bucket" "quarterly" {
    bucket  = "${var.bucket_id}"
    acl     = "private"

    lifecycle_rule {
        id      = "quarterly_retention"
        prefix  = "quarterly/"
        enabled = true
        tags {
            "rule"  = "quarterly"
        }

        expiration {
            days = 92
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行 terraform apply 时出现错误。

* aws_s3_bucket.quarterly: Error creating S3 bucket: BucketAlreadyOwnedByYou: Your previous request to create the named bucket …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services terraform

6
推荐指数
1
解决办法
3450
查看次数

.htaccess RewriteRule 不起作用

我有一个使用 WAMP 的 Windows 环境,效果很好。我刚刚设置我的 Ubuntu 桌面开发环境,这个特定的 mod_rewrite 不起作用。

这是非常基本的,但是如果我去,我会从 apache
example.local/files/a-real-file.pdf得到一个。404 not found如果我转到
example.local/files.php/a-real-file.pdf该文件,就会按预期显示。如果我去,
example.local/files.php/non-existing-file.who.cares我会var_dump($thelink)从我的逻辑中得到预期的结果files.php

.htaccess在我的网络根目录中

RewriteEngine On
RewriteRule ^files/(.*)$ files.php/$1
Run Code Online (Sandbox Code Playgroud)

我的 apache 虚拟主机配置

<VirtualHost *:80>
    ServerName reqapp.localhost
    DocumentRoot /var/www/html/aaApp/public_html
    <Directory /var/www/html/aaApp/public_html/>
        Options +Indexes +Includes +FollowSymLinks +MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

为了更好地衡量,“localhost”conf

<VirtualHost *:80>
    ServerName localhost
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

以及“适用”部分apache2.conf

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Require all …
Run Code Online (Sandbox Code Playgroud)

mod-rewrite .htaccess apache-2.4

5
推荐指数
1
解决办法
6046
查看次数

在 Docker 容器中从 Gitlab 进行 Git 克隆速度非常慢

我正在尝试将我们的 Gitlab 存储库克隆到 Docker 容器中,并在运行 Ubuntu 18.04.1 的新虚拟机上运行。

Cloning into ${REPONAME}由于某种原因,当我尝试克隆存储库时,在我们最终开始枚举对象之前,我花了很长时间(几分钟)进行查看。

time git clone https://gitlab.com/gnutls/gnutls.git
Cloning into 'gnutls'...
remote: Enumerating objects: 178256, done.
remote: Counting objects: 100% (178256/178256), done.
remote: Compressing objects: 100% (50440/50440), done.
remote: Total 178256 (delta 128831), reused 173620 (delta 125853)
Receiving objects: 100% (178256/178256), 66.50 MiB | 10.14 MiB/s, done.
Resolving deltas: 100% (128831/128831), done.
real    5m 2.14s
user    0m 14.42s
sys 0m 4.39s
Run Code Online (Sandbox Code Playgroud)

我决定尝试克隆一个不同的存储库,google test该存储库托管在 Github 上,差异令人震惊。

time git clone https://github.com/google/googletest.git
Cloning …
Run Code Online (Sandbox Code Playgroud)

git gitlab docker

5
推荐指数
0
解决办法
1157
查看次数

“没有到主机的路由”,直到“ping”或“路由”

我有两台电脑在一个 WiFi 网络中:

  • 一个客户
  • B-服务器

有时(十次一次)在 B 重新启动后,我无法从 A 到 B:

$ ssh 192.168.201.128
ssh: connect to host 192.168.201.128 port 22: No route to host
Run Code Online (Sandbox Code Playgroud)

当我尝试 ping 它时,我得到:

$ ping 192.168.201.128
PING 192.168.201.128 (192.168.201.128) 56(84) bytes of data.
From 192.168.201.133 icmp_seq=1 Destination Host Unreachable
From 192.168.201.133 icmp_seq=2 Destination Host Unreachable
From 192.168.201.133 icmp_seq=3 Destination Host Unreachable
Run Code Online (Sandbox Code Playgroud)

ARP 可能是问题所在:

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
_gateway                 ether   70:4c:a5:a7:c2:57   C                     wlp2s0
192.168.201.128                  (incomplete)                              wlp2s0
Run Code Online (Sandbox Code Playgroud)

我试图像这样修复它:

$ sudo arp -d 192.168.201.128 …
Run Code Online (Sandbox Code Playgroud)

route arp gateway

5
推荐指数
1
解决办法
5610
查看次数

将域从 A 记录迁移到 CNAME 时,订单很重要

我们正在将一些站点从其他提供商迁移到 AWS。我们当前的负载均衡器在单个 IP 上可用,因此所有 DNS 条目都是使用 A 记录创建的,例如:

A example.com 192.0.2.0

您可能知道,AWS Elastic Load Balancer 已经为其负载均衡器提供了 A 记录,因此这些站点是使用 CNAME 记录创建的,例如:

CNAME example.com production-lb1-<numbers>.us-west-1.elb.amazonaws.com

我们用 900 秒的 TTL 设置该记录,我们还没有看到它传播出去

dig all example.com

是否有一些神奇的 DNS 内部机制可以阻止这样的名称冲突?IE 它不想创建 CNAME,因为 A 和 CNAME 会指向矛盾的信息?

那么这是否意味着我必须删除 A 记录,然后添加 CNAME?DNS 控制器是否足够聪明,不会在没有任何内容的情况下丢弃我的网站?IE 我真的不希望 A 名称在 CNAME 尚未启动时消失。想法?

domain-name-system cname-record amazon-web-services

1
推荐指数
1
解决办法
156
查看次数