我正在尝试通过容器 A(10.10.1.3,haproxy,以透明代理模式设置)将容器 B(10.10.1.2,使用 mysql 的自定义二进制文件并在端口 4242 上运行)的 tcp 流量路由到外部世界,它们共享10.10.1.0/24桥接模式下的相同用户定义的 docker 网络
容器 B 不暴露端口,只暴露容器 A。
在容器 B 上:
# ip route show
default via 10.10.1.1 dev eth0
10.10.1.0/24 dev eth0 proto kernel scope link src 10.10.1.2
# ip route replace default via 10.10.1.3
# ip route show
default via 10.10.1.3 dev eth0
10.10.1.0/24 dev eth0 proto kernel scope link src 10.10.1.2
Run Code Online (Sandbox Code Playgroud)
在容器 A(haproxy)上:
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv4.ip_nonlocal_bind=1
iptables -t mangle -N DIVERT
iptables -t mangle -A …Run Code Online (Sandbox Code Playgroud) 我有一台物理 Windows 2008 R2 服务器,它通过 iSCSI、以太网连接到 SAN。我需要将服务器转换为虚拟的,但我不希望将iSCSI卷到VMDK转换,因为我没有所需的存储空间。
相反,我希望保持 iSCSI 连接不变,让新 VM 继续使用 SAN。我的 vSphere 主机上的虚拟机没有存储在 SAN 上(它们在本地存储上),所有东西都在同一个 LAN 上。
我可以这样做吗?使用 vSphere P2V Converter 时,是否只需取消选中该框即可转换 iSCSI 卷?iSCSI 连接是否会转移到 VM 并继续工作?
我有一个带有 8x10TB HDD 的 Ubuntu 16.04 备份服务器,通过 SATA 3.0 背板。8 个硬盘组装成 RAID6,正在使用 EXT4 文件系统。该文件系统存储了大量具有大量 SEEK 操作但 IO 吞吐量较低的小文件。事实上,每天都有许多来自不同服务器的小文件通过 rsnapshot 获取快照(多个 INODES 直接指向同一个文件。由于文件系统(60TB 网络)超过 50% 的使用率,我的性能非常差。目前,使用率为 75% 并且
du -sch /backup-root/
Run Code Online (Sandbox Code Playgroud)
需要几天(!)。机器有8核和16G内存。RAM 完全由 OS 文件系统缓存使用,由于 IOWAIT,8 个内核中的 7 个内核始终处于空闲状态。
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: 5af205b0-d622-41dd-990e-b4d660c12bd9
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: …Run Code Online (Sandbox Code Playgroud) 我的服务器是带有 Apache 2.4.6 的 centos 7.4。
每次 I 时systemctl restart httpd,2 条消息都会添加到/var/log/secure.Looks 中:
Jan 19 8:23:48 localhost polkitd[493]: Registered Authentication Agent for unix-process:5739:174943 (system bus name :1.119 [/usr/bin/pkttyagent --notify-fd 5 --fallback], object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
Jan 19 8:23:49 localhost polkitd[493]: Unregistered Authentication Agent for unix-process:5739:174943 (system bus name :1.119, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bus)
Run Code Online (Sandbox Code Playgroud)
有什么问题?
我在我的一台服务器上遇到了一个奇怪的问题。这是在具有一个专用 CPU 内核的 KVM VPS 上。
但是,在此期间 CPU 使用率实际上并没有增加,这也排除了 iowait 是原因:

它发生时似乎是周期性的(例如,在此图中,它大约每 20-25 分钟发生一次)。我怀疑有一个 cronjob,但我没有任何每 20 分钟运行一次的 cronjob。我也试过禁用我的 cronjobs 并且负载峰值仍然发生。
当 SSH 进入服务器时,我设法实际看到了这种情况……它的负载为 1.88,但 CPU 空闲率为 94%,iowait 为 0%(这可能是我预期的原因)
发生这种情况时,似乎没有很多磁盘 I/O。
我难住了。有任何想法吗?
我有 2 个数据源。一种是 btrfs(raid),一种是简单的 ext4 分区。那些应该透明地显示为一个。这是一个简单的只读示例,但是lower/upper/workdir 版本产生了同样的问题,btrfs 为upper,ext4 为lower。
手动安装:
mount -t overlay overlay -o lowerdir=/mnt/raid/folder1/:/mnt/ext4/folder1 -o comment=merge -o nfs_export=on /data/merged
Run Code Online (Sandbox Code Playgroud)
fstab 挂载:
overlay /data/merged overlay defaults,lowerdir=/mnt/raid/folder1/:/mnt/ext4/folder1,comment=merge,nfs_export=on 0 0
Run Code Online (Sandbox Code Playgroud)
这是我的 nfs 导出:
/data/merged 192.168.0.0/255.255.255.0(ro,fsid=1,async,insecure,crossmnt)
Run Code Online (Sandbox Code Playgroud)
exportfs -ra 产生: exportfs: /data/merged does not support NFS export
我的配置:Ubuntu 18.04 LTS with HWE kernel 4.18.0-13-generic 这是我的主要配置来源:https ://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt
也许我错过了一些 NFSv4 的东西(这是 nfs 导出overlayfs 所需要的)?
编辑:根据要求,我为 sourcecs 安装:
UUID=d138b8fa-83e1-4df7-80dc-c1ed7d866f77 /mnt/raid btrfs defaults 0 2
UUID=6bb8f391-0872-40cf-8aff-8bdb32632098 /mnt/ext4 ext4 errors=remount-ro 0 2
Run Code Online (Sandbox Code Playgroud)
编辑2:
grep -H . /sys/module/overlay/parameters/* …Run Code Online (Sandbox Code Playgroud) 我有一个授权模块,每当向私有端点发出请求时都会调用该模块。
该模块从Authorization标头中解析令牌,并且:
Authorization标头中返回该令牌。“profile”是私有端点之一,它的配置方式如下:
location /profile {
auth_request /jwtverify;
auth_request_set $authorization $upstream_http_authorization;
proxy_set_header authorization $authorization;
proxy_pass http://private-profile:80;
}
Run Code Online (Sandbox Code Playgroud)
jwtverify 是这样配置的:
location = /jwtverify {
internal;
proxy_pass http://auth-module:8080/auth/verify;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
proxy_set_header X-Original-URI $request_uri;
auth_request_set $http_authorization $upstream_http_authorization;
}
Run Code Online (Sandbox Code Playgroud)
现在,除了要求号外,一切正常。3:如果auth模块设置了Authorizationheader,客户端永远不会收到它。
流程应该是这样的:
auth-module 拦截请求,如果有效,代理将其传递给私有服务auth-module应保留由 设置的标头并发送给客户端我想我没有正确理解如何组合auth_request_set, proxy_set_header, auth_request_set,也可能是它们不适合这种情况。
有没有办法在 NGINX 中实现这一点?
Openssl 告诉我它无法验证我的串联证书。我从颁发者(AlphaSSL)下载了中间证书,并将其与我购买的域证书(首先是域证书,然后是 AlphaSSL 中间证书)按照 Google 应用引擎的指示连接起来。然后我按照他们的指示进行验证:
openssl verify -verbose -CAfile mycert_cat.crt mycert_cat.crt
Run Code Online (Sandbox Code Playgroud)
我尝试使用上述内容进行验证并收到此错误消息:
mycert_cat.crt: /C=BE/O=GlobalSign nv-sa/CN=AlphaSSL CA - SHA256 - G2
error 2 at 1 depth lookup:unable to get issuer certificate
Run Code Online (Sandbox Code Playgroud)
我用谷歌搜索了它,但结果说我忘记将证书附加到文件中。我没有。
还有什么可能导致此问题?
我在 Dockerfile 中有以下行。
RUN apt-get install -y tzdata
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它会询问我的输入。在我提供输入后,它挂在那里。有谁知道如何解决这个问题?
Step 25/25 : RUN apt-get install -y tzdata
---> Running in ee47a1beff84
Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
tzdata
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 189 kB of archives.
After this operation, 3104 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic-updates/main amd64 tzdata all 2018i-0ubuntu0.18.04 [189 kB]
debconf: unable …Run Code Online (Sandbox Code Playgroud) 有没有一种快速的方法来理解 Linux 上的“存储”类型?它是 HDD 还是 SSD(或 NVMe)?众所周知,主机是物理机而不是虚拟机。我首先想到的是目录rotational下的标志/sys/block/<device>/queue/。但根据我的经验,即使对于 SSD 设备,它也可能包含“1”值。第二种更现实和真实的方式是延迟。测量起来有点困难(有些使用 /proc/diskstats),但看起来更可取。
还有其他方法吗?值得一提的是,我不需要知道“存储”的确切模型,只需要知道它的类型。