我今天有一个谜团要告诉你。我们在 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
我在 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是当前的(即将成为以前的主机名)并且作为更改主机的主机名的一部分,用新名称替换该名称。
我熟悉的是执行上述两个步骤,然后重新启动您的主机。但是很多时候,就像使用生产服务器一样,人们希望执行重命名,而不是重新启动主机。
如何更改主机上的主机名并在不重新启动主机的情况下使更改生效?
我注意到日志消息在我的 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) 在我的(荷兰语)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最近没有记录?
我有一个 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 { ???? }
我有一个现有的 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) 我有一个使用 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) 我正在尝试将我们的 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) 我有两台电脑在一个 WiFi 网络中:
有时(十次一次)在 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) 我们正在将一些站点从其他提供商迁移到 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 尚未启动时消失。想法?