AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-14631

hookenz's questions

Martin Hope
hookenz
Asked: 2018-08-23 14:09:41 +0800 CST

如何使用 Power Shell 创建跨越两个驱动器且没有冗余的虚拟磁盘

  • 0

这是我多年来第一次使用 Windows Server。我被鼓励设置 Windows Server 2016 并假设它有一个 GUI。

令我惊讶的是,这个版本没有桌面体验。我相信它被称为“核心”。

我将操作系统安装在 SSD 上,并连接了 2 个 12TB 硬盘,我想将它们作为单个虚拟磁盘使用。

如何使用 PowerShell 做到这一点?我已经创建了一个我称之为“StoragePool1”的池,它使用两个磁盘。但现在我被困在 VirtualDisk 步骤上。当我运行大小为 21TB 的常规 New-VirtualDisk 命令时出现错误

windows-server-2016
  • 1 个回答
  • 38 Views
Martin Hope
hookenz
Asked: 2016-11-14 14:14:12 +0800 CST

基于位置和帖子标题的nginx速率限制

  • 0

Nginx 有一个有用的模块,称为ngx_http_limit_req_module ,您可以在其中根据 IP 或请求数限制对服务器的请求。

是否可以对包含自定义标头的位置进行速率限制?例如,我尝试了这个,但它无法启动 nginx。

location /myservice {
    if ($http_x_custom_header) {
      limit_req zone=one burst=5;
    }
}

具体错误是:

nginx: [emerg] "limit_req" 指令在 /etc/nginx/sites-enabled/default 中是不允许的

即它不喜欢if块内的 limi_req 指令。在 if 块之外很好。

不过,我也许可以在该位置之外使用不同的限制参数集。

nginx denial-of-service
  • 1 个回答
  • 1381 Views
Martin Hope
hookenz
Asked: 2016-04-01 15:06:43 +0800 CST

nginx 将 X-Real-IP 设置为下游代理服务器以防止欺骗

  • 0

我想为同样位于亚马逊 ELB 后面的 nginx 代理的域正确设置 X-Real-IP。

IE

AMAZON ELB <=> NGINX PROXY <=> REST APP1
                           <=> REST APP2

到目前为止,我发现以下内容可以正常工作并防止欺骗 IP。我在 nginx.conf 中全局设置了这个

real_ip_header X-Forwarded-For;
set_real_ip_from 10.0.0.0/8;
real_ip_recursive on;

但是,我也有一些位于 NGINX 后面的 REST 应用程序

如果设置或 x-forwarded-for,我的其余应用程序将使用 x-real-ip。正常使用下,真实客户端IP是正确的。

在设置了 x-real-ip 和 x-forwarded-for 标头中的一个或两个的欺骗性 IP 攻击下,我在 REST 客户端中看到了欺骗性 IP。但是,nginx 显示了正确的客户端 IP。

目前在我设置的域名主机中

proxy_pass_request_headers 开启;

如何将 x-real-ip 设置为 REST 应用程序的真实可信 IP?

我想我需要一条proxy_set_headerX-Real-IP 线路。但是如何引用 real-ip 模块设置的 real-ip 标头?

nginx
  • 1 个回答
  • 6156 Views
Martin Hope
hookenz
Asked: 2016-03-10 13:38:17 +0800 CST

在 Amazon ELB 或其他代理之后如何拒绝源 IP 访问

  • 7

Nginx 有一个很好的功能,可以让您通过源 IP 地址限制对资源的访问。

但是,我注意到在 nginx 位于代理或负载均衡器之后的情况下可能无法正常工作。就我而言,亚马逊 ELB。

我想为 datadog 代理和 Amazon ELB 运行状况检查提供状态页面。所以我想允许本地连接和来自 ELB 的连接,但拒绝其他一切。

以下内容无法按预期工作,因为它也允许源自 ELB 外部的流量访问状态页面。原因是因为 IP 似乎来自 ELB,并且允许规则不查看标头来确定请求的真实来源。有没有办法告诉 nginx 使用什么源 IP 来确定允许/拒绝规则?

location /status {
    stub_status;
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.0/16;
    deny all;
}
nginx
  • 1 个回答
  • 3264 Views
Martin Hope
hookenz
Asked: 2016-02-29 20:08:00 +0800 CST

如何为 ansible 清单中的主机设置配置主机文件?

  • 1

我已经开始学习和使用 ansible 来配置我的登台和生产服务器。我想做的一件事是通过清单文件配置 /etc/hosts 。

看来这是可能的。这是一种这样的用法: https ://gist.github.com/rothgar/8793800

但是,我对 Ansible 有点陌生,我不明白。有人可以用简单的英语解释我如何使它在实践中工作吗?

例如,如果我的库存文件包含。

[compute]
1.2.3.4 
5.6.7.8

[db]
2.3.4.5
6.7.8.9
10.11.12.13

[all]
compute
db

[all:vars]
...

我想说的是,运行剧本后我的主机文件包含

2.3.4.5 db1
6.7.8.9 db2
10.11.12.13 db3
1.2.3.4 compute1
5.6.7.8 compute2

这可能吗?

ansible
  • 2 个回答
  • 6200 Views
Martin Hope
hookenz
Asked: 2016-02-25 13:00:38 +0800 CST

子脚本是否可以将输出写入父进程?

  • 0

当状态发生变化时,我有一个由 keepalived 守护进程启动的通知脚本。

问题是,当使用 -l(登录到本地控制台)选项运行 keepalived 时,我的通知脚本的回显输出不会出现在显示的输出中

通常,我可以将此输出写入文件,这将是一个很好的解决方案,除了在这种情况下,keepalived 守护进程在 docker 容器中运行,我希望 docker 守护进程查看所有输出的日志,包括来自我的 notify脚本。

这是我为我的通知脚本尝试过的:

#!/bin/bash

MY_PPID=$(ps -o ppid= $$)
MY_PPID=${MY_PPID// }

function echo
{
  builtin echo $(date +"%b %e %H:%M:%S"): $1 >> /proc/${MY_PPID}/fd/0
}

echo "Notify state=$3"

来自keepalived的输出:

Starting VRRP child process, pid=8847
Interface queue is empty
No such interface, ib0
No such interface, ib1
No such interface, docker0
Interface queue is empty
No such interface, ib0
Registering Kernel netlink reflector
No such interface, ib1
No such interface, docker0
Registering Kernel netlink command channel
Registering gratuitous ARP shared channel
Registering Kernel netlink reflector
Initializing ipvs 2.6
Registering Kernel netlink command channel
Opening file '/etc/keepalived/keepalived.conf'.
Configuration is using : 5879 Bytes
Opening file '/etc/keepalived/keepalived.conf'.
Configuration is using : 61747 Bytes
Using LinkWatch kernel netlink reflector...
Using LinkWatch kernel netlink reflector...
VRRP_Instance(vip) Transition to MASTER STATE
VRRP_Instance(vip) Entering MASTER STATE
Opening script file /etc/keepalived/notify.sh

如果它有效,我会期望看到额外的一行:

Notify state=MASTER

但显然它没有奏效。关于如何让它正常工作的任何想法?


我想我找到了问题所在。MY_PPID 不再作为进程存在。似乎在执行脚本时,keepalived 进程会执行双叉来分离脚本。当我写入其中一个 keepalived 进程的 fd 时,它确实有效。我可以从文件 /var/run/keepalived.pid 中获取 pid。

我会试试这个并报告回来。

bash
  • 2 个回答
  • 1472 Views
Martin Hope
hookenz
Asked: 2015-09-22 18:05:40 +0800 CST

在 Infiniband 网络中,什么是 MGID,它与多播组有何关系?

  • 1

我的开放子​​网管理器日志中有此错误。

Sep 22 01:49:53 router3-1 docker[12431]: Sep 22 01:49:53 089580 [68860700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10c37b1f7ebb0001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:180b:1493:fd7f:0, insufficient components specified for implicit create (comp_mask 0x10083)
Sep 22 01:49:57 router3-1 docker[12431]: Sep 22 01:49:57 328091 [6585A700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10bf482fd3ac0001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:1868:c9d6:fd7f:0, insufficient components specified for implicit create (comp_mask 0x10083)
Sep 22 01:50:04 router3-1 docker[12431]: Sep 22 01:50:04 973005 [60850700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10bf482fd3a60001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:9811:7b48:ff7f:0, insufficient components specified for implicit create (comp_mask 0x10083)
Sep 22 01:50:05 router3-1 docker[12431]: Sep 22 01:50:05 291935 [5F04D700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10bf482fd3a40001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:88f3:3bdf:fd7f:0, insufficient components specified for implicit create (comp_mask 0x10083)
Sep 22 01:50:09 router3-1 docker[12431]: Sep 22 01:50:09 699903 [6685C700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10c37b1f7e110001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:787e:40cb:fd7f:0, insufficient components specified for implicit create (comp_mask 0x10083)
Sep 22 01:50:22 router3-1 docker[12431]: Sep 22 01:50:22 389193 [63856700] 0x01 -> mcmr_rcv_join_mgrp: ERR 1B11: Port 0x10bf482fd3f00001 (MT25408 ConnectX Mellanox Technologies) failed to join non-existing multicast group with MGID ffff:0:ffff:0:c867:44ab:fe7f:0, insufficient components specified for implicit create (comp_mask 0x10083)

它发生了很多。

这是一个与此处提交的以下错误报告非常相似的问题: https ://bugzilla.redhat.com/show_bug.cgi?id=1138851

在该特定报告中,该错误针对 NTP mcast 组。
即 MGID ff12:401b:ffff::101 不知何故 101 被解释为 224.0.1.1 并且他们说它是 NTP。

那个 101 是怎么变成那个的,什么是 MGID?

在我的例子中,显示的 MGID 是:ffff:0:ffff:0:c867:44ab:fe7f:0

这是否转换为 224.0.0.0?它声称被保留。这里发生了什么事?

networking
  • 1 个回答
  • 1092 Views
Martin Hope
hookenz
Asked: 2015-09-10 16:39:22 +0800 CST

为什么这个 systemd 单元文件不起作用?

  • 2

最初我让这个脚本在 Ubuntu 上运行,基本上被扔进 rc.local

#!/bin/bash

IBSYSDIR="/home/matthewh/tmp"
hca_id=1
if [ -d ${IBSYSDIR} ]; then
  for hca in ${IBSYSDIR}/*; do
    if [ -e ${hca}/node_desc ]; then
      echo -n "$(hostname -s) HCA-${hca_id}" >> ${hca}/node_desc
    fi
    hca_id=$((hca_id+1))
  done
fi

现在我的基础架构是 CoreOS,我想恢复这个脚本来为所有节点设置 Infiniband 主机名。

理想情况下,为了节省管理开销,我只想将一个服务文件插入 cloud-init 并启动它。所以我想出了如下所示的 systemd 服务文件。在提出单文件奇迹时,我设法将命令缩短为原始文件脚本中的一行。

[ -d ${IBSYSDIR} ] && for hca in ${IBSYSDIR}/*; do [ -e ${hca}/node_desc ] && echo -n "$(hostname -s) HCA-${hca_id}" >> ${hca}/node_desc; done

但是,我似乎无法运行/bin/sh -c "[ -d ${IBSYSDIR} ] && for hca in ${IBSYSDIR}/*; do [ -e ${hca}/node_desc ] && echo -n "$(hostname -s) HCA-${hca_id}" >> ${hca}/node_desc; done"

也许它没有将环境正确地拉入 sh. 如何让它在一个服务文件中工作(没有其他依赖脚本)?

服务文件和实际错误如下。

[Unit]
Description=Set the infiniband hostname

[Service]
Type=oneshot
Environment="IBSYSDIR=/sys/class/infiniband"
Environment="hca_id=1"
ExecStart=/bin/bash -c "[ -d ${IBSYSDIR} ] && for hca in ${IBSYSDIR}/*; do [ -e ${hca}/node_desc ] && echo -n "$(hostname -s) HCA-${hca_id}" >> ${hca}/node_desc; done"

[Install]
WantedBy=multi-user.target

我看到的实际错误:

Sep 10 00:30:21 service2-2 systemd[1]: Starting Set the infiniband hostname...
Sep 10 00:30:21 service2-2 sh[11134]: -s): -c: line 0: unexpected EOF while looking for matching `)'
Sep 10 00:30:21 service2-2 sh[11134]: -s): -c: line 1: syntax error: unexpected end of file

所以我走得更远了,但它仍然不起作用。

[Unit]
Description=Set the infiniband hostname
After=docker.service
Requires=docker.service

[Service]
Type=oneshot
ExecStart=/bin/bash -c 'IBSYSDIR=/sys/class/infiniband && hca_id=1 && [ -d ${IBSYSDIR} ] && for hca in ${IBSYSDIR}/*; do [ -e ${hca}/node_desc ] && echo -n "$(hostname -s) HCA-${hca_id}" >> "${hca}/node_desc"; done'

[Install]
WantedBy=multi-user.target

但是如果我直接运行

sudo /bin/bash -c 'IBSYSDIR=/sys/class/infiniband && hca_id=1 && [ -d ${IBSYSDIR} ] && for hca in ${IBSYSDIR}/*; do [ -e ${hca}/node_desc ] && echo -n "$(hostname -s) HCA-${hca_id}" >> "${hca}/node_desc"; done'

它确实有效。服务文件有什么特别之处?返回的错误代码是1。我认为这是一个权限被拒绝错误或什么的。

systemd
  • 2 个回答
  • 1656 Views
Martin Hope
hookenz
Asked: 2015-07-09 19:38:52 +0800 CST

如何使用 fuse 驱动程序挂载 rbd 设备?

  • 2

这是来自的后续问题:How do I mount an rbd device from fstab我问过一段时间。

如何使用 fuse 驱动程序挂载 rbd 设备?(如果不打开很多权限,我就无法使用 docker 的内核驱动程序)

据我所知,我在 fstab 文件中创建了一个条目,如下所示:

id=client.admin /mnt fuse.ceph 0 0

但是我看不到如何指定 rbd 块设备。如果我运行这个挂载,我会在 /mnt/mariadb1 中看到一个文件(mariadb1 是我使用 rbd create --size 250000 mariadb1 创建的 rbd 设备的名称)

我如何实际将其挂载为文件系统?

注意:是的,我真的很想使用内核 rbd 驱动程序并从主机挂载它,然后将它公开给我的 docker 容器,但是……我正在使用 CoreOS。

如果可以在主机挂载命名空间中挂载文件系统,我会接受,但还没有看到前进的方向。我管理的最好的方法是从具有很多特权的容器中安装它。但我不能与 --volumes-from 共享该容器。我真的不喜欢让这个特定的容器完全访问主机。

fuse
  • 2 个回答
  • 2513 Views
Martin Hope
hookenz
Asked: 2015-06-24 18:11:00 +0800 CST

在两节点集群上将 CRUSHMAP 设置为 3 路

  • 1

我有一个 SSD 存储系统,其中包含两个节点和 6 个 SSD 驱动器。不理想,所以有一点我会介绍另一个节点。现在我想要3路复制。

在默认规则下,这不会发生,因为我们只有两个节点。所以我想我会尝试修改crushmap并为SSD存储节点设置规则集以将数据放置在两个节点上,第三组可以在同一节点上的另一个OSD上。

作为一个新手并且不完全理解choose firstnandchooseleaf firstn语句是如何工作的,我不确定它是否会按照我的意图进行。

这是我到目前为止所拥有的:

rule ssd-all {
  ruleset 1
  type replicated
  min_size 1
  max_size 5
  step take ssd
  step choose firstn 0 type host
  step chooseleaf firstn 2 type osd
  step emit
}

其中 ssd 是包含一些主机和包含多个 (6) OSD 的主机的根类型。

那行得通吗?不知怎的,我认为这是不对的。我想更好地了解何时使用choose以及在何处使用chooseleaf. 并且对之后的数字有了更好的了解firstn。该文档缺乏明确的示例。阅读CRUSH 白皮书有些道理,但伪代码对我来说不是那么清楚。有人可以帮忙吗?

ceph
  • 1 个回答
  • 1618 Views
Martin Hope
hookenz
Asked: 2015-05-19 12:48:41 +0800 CST

docker0 网桥状态在启用/禁用之间切换,可能是什么原因造成的?

  • 4

我有一些 CoreOS 裸机实例在 docker0 桥接设备上显示异常行为。

在发生这种情况的一个实例中,我正在运行 couchbase 服务器,它导致了一些重新平衡问题。当我将沙发底座移动到没有发生这种情况的节点时,问题就消失了。

可能是什么原因造成的?什么决定了桥接设备的状态?

硬件是一样的。除 IP 地址外,配置相同。

请参阅以下输出:

[   11.219278] igb 0000:02:00.1 eno2: renamed from eth1
[   11.233382] igb 0000:02:00.0 eno1: renamed from eth0
[   11.254416] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: commit=600
[   11.458737] IPv6: ADDRCONF(NETDEV_UP): ib0: link is not ready
[   11.579397] IPv6: ADDRCONF(NETDEV_UP): eno2: link is not ready
[   11.698029] IPv6: ADDRCONF(NETDEV_UP): eno1: link is not ready
[   12.010779] bridge: automatic filtering via arp/ip/ip6tables has been deprecated. Update your scripts to load br_netfilter if you need this.
[   12.024156] IPv6: ADDRCONF(NETDEV_UP): docker0: link is not ready
[   12.036945] ip_tables: (C) 2000-2006 Netfilter Core Team
[   12.051018] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   14.650802] igb 0000:02:00.0 eno1: igb: eno1 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
[   14.660237] IPv6: ADDRCONF(NETDEV_CHANGE): eno1: link becomes ready
[   14.742461] IPv6: ADDRCONF(NETDEV_CHANGE): ib0: link becomes ready
[   45.805457] random: nonblocking pool is initialized
[  111.008838] IPv6: ADDRCONF(NETDEV_UP): vetha6b1e7a: link is not ready
[  111.015941] IPv6: ADDRCONF(NETDEV_CHANGE): vetha6b1e7a: link becomes ready
[  111.023065] device veth7ef24ab entered promiscuous mode
[  111.043171] eth0: renamed from vetha6b1e7a
[  112.009927] docker0: port 1(veth7ef24ab) entered forwarding state
[  112.016158] docker0: port 1(veth7ef24ab) entered forwarding state
[  112.022483] IPv6: ADDRCONF(NETDEV_CHANGE): docker0: link becomes ready
[  112.099447] docker0: port 1(veth7ef24ab) entered disabled state
[  112.107076] device veth7ef24ab left promiscuous mode
[  112.112173] docker0: port 1(veth7ef24ab) entered disabled state
[  122.461130] device vethf877e85 entered promiscuous mode
[  122.466924] IPv6: ADDRCONF(NETDEV_UP): vethf877e85: link is not ready
[  122.473684] IPv6: ADDRCONF(NETDEV_CHANGE): vethf877e85: link becomes ready
[  122.480738] docker0: port 1(vethf877e85) entered forwarding state
[  122.486970] docker0: port 1(vethf877e85) entered forwarding state
[  122.506427] eth0: renamed from vethf26c9f2
[  122.632319] docker0: port 1(vethf877e85) entered disabled state
[  122.639992] device vethf877e85 left promiscuous mode
[  122.645123] docker0: port 1(vethf877e85) entered disabled state
[  132.921279] device vethb82e1be entered promiscuous mode
[  132.927131] IPv6: ADDRCONF(NETDEV_UP): vethb82e1be: link is not ready
[  132.933864] IPv6: ADDRCONF(NETDEV_CHANGE): vethb82e1be: link becomes ready
[  132.940925] docker0: port 1(vethb82e1be) entered forwarding state
[  132.947184] docker0: port 1(vethb82e1be) entered forwarding state
[  132.964347] eth0: renamed from veth6449c8e
[  133.013215] docker0: port 1(vethb82e1be) entered disabled state
[  133.021003] device vethb82e1be left promiscuous mode
[  133.026104] docker0: port 1(vethb82e1be) entered disabled state
[  143.403885] device vethddb7ee6 entered promiscuous mode
[  143.409539] IPv6: ADDRCONF(NETDEV_UP): vethdd4d268: link is not ready
[  143.416339] IPv6: ADDRCONF(NETDEV_CHANGE): vethdd4d268: link becomes ready
[  143.433351] eth0: renamed from vethdd4d268
[  144.404045] docker0: port 1(vethddb7ee6) entered forwarding state
[  144.410292] docker0: port 1(vethddb7ee6) entered forwarding state
[  144.480602] docker0: port 1(vethddb7ee6) entered disabled state
[  144.488347] device vethddb7ee6 left promiscuous mode
[  144.493480] docker0: port 1(vethddb7ee6) entered disabled state
[  154.925053] IPv6: ADDRCONF(NETDEV_UP): vethadcefb2: link is not ready
[  154.931794] device veth6087f8b entered promiscuous mode
[  154.937610] IPv6: ADDRCONF(NETDEV_CHANGE): vethadcefb2: link becomes ready
[  154.956632] eth0: renamed from vethadcefb2
[  155.924469] docker0: port 1(veth6087f8b) entered forwarding state
[  155.930718] docker0: port 1(veth6087f8b) entered forwarding state
[  156.007957] docker0: port 1(veth6087f8b) entered disabled state
[  156.015658] device veth6087f8b left promiscuous mode
[  156.020781] docker0: port 1(veth6087f8b) entered disabled state
[  166.387105] IPv6: ADDRCONF(NETDEV_UP): veth407dccf: link is not ready
[  166.394294] IPv6: ADDRCONF(NETDEV_CHANGE): veth407dccf: link becomes ready
[  166.401417] device veth8f92cbb entered promiscuous mode
[  166.420099] eth0: renamed from veth407dccf
[  167.386861] docker0: port 1(veth8f92cbb) entered forwarding state
[  167.393107] docker0: port 1(veth8f92cbb) entered forwarding state
[  167.476477] docker0: port 1(veth8f92cbb) entered disabled state
[  167.484157] device veth8f92cbb left promiscuous mode
linux-networking
  • 1 个回答
  • 14681 Views
Martin Hope
hookenz
Asked: 2015-04-14 15:15:21 +0800 CST

如何使用 systemd 进行策略路由?

  • 4

我需要对使用 systemd 的 CoreOS 实例进行策略路由。但是我还没有找到任何关于如何使用 systemd-network 进行操作的文档或示例。

我怎么做?

到目前为止,我只设法通过向新文件添加条目来创建另一个路由表,/etc/iproute2/rt_tables并且命令行工具可以识别它。

最终,我在同一个子网上有两个独立的路由器。我想确保来自一个发往我主机的路由器的流量由同一路由器返回。

systemd
  • 2 个回答
  • 2218 Views
Martin Hope
hookenz
Asked: 2015-04-08 13:25:17 +0800 CST

/dev/disk/by-label 和 /dev/disk/by-partlabel 下显示的标签选项之间有什么区别?

  • 1

我想在 CoreOS 下创建一个自动挂载在 /var/lib/docker 的磁盘

因此,我创建了一个 var-lib-docker.mount 单元文件来执行此操作,并决定使用 /dev/disk 下的按标签路径。

最初我发现我的分区出现在 by-partlabel 路径下。不过效果很好。

在这个过程中我发现有一个叫e2label的程序,而且在fdisk专家模式下我也可以创建一个分区标签。

最初没有找到 e2label,我发现我可以在 fdisk 中用单词“DOCKER”标记分区。但它们实际上是通过路径 /dev/disk/by-partlabel 而不是 /dev/disk/by-label

这些之间有什么区别?一个应该比另一个更受青睐吗?

linux
  • 1 个回答
  • 1373 Views
Martin Hope
hookenz
Asked: 2015-02-17 18:49:05 +0800 CST

设置基于 0.46 的静态 etcd 集群(无发现 URL)

  • 1

如果不使用在 CoreOS 上运行的发现 URL,我在设置 etcd 集群时遇到了一些问题。

配置是通过 cloud-init 进行的。集群中的 3 台服务器在下面的对等点下列出。每个都有不同的 IP,并且静态设置了 addr 和 peer-addr。

例如,第一台服务器包含:

#cloud-config
coreos:
  etcd:
      addr: 192.168.0.50:4001
      peer-addr: 192.168.0.50:7001
      peers: 192.168.0.50:7001,192.168.0.51:7001,192.168.0.52:7001

我在 journalctl 中看到的是:

警告 | 同步集群失败([ http://192.168.0.50:7001 http://127.0.0.1:7001])

和这样的错误:

locksmithd[12262]:etcd.service 处于活动状态 locksmithd[12262]:初始化 etcd 客户端时出错:402:备用内部错误(

我假设是因为 etcd 无法正常工作。

不幸的是,CoreOS 网站并没有详细说明 CoreOS 和 etcd 在实践中的静态设置。

一旦它工作了,我的云配置对于代理的 etcd 实例会是什么样子?

coreos
  • 1 个回答
  • 1245 Views
Martin Hope
hookenz
Asked: 2015-01-23 14:30:10 +0800 CST

使用 couchbase 的 Docker 数据卷

  • 1

我有一个运行 Couchbase 企业 3.0.2 的 docker 映像

它目前在一个私人存储库中。所以让我们说它的名字是:

matt/couchbase

为了在 matt/couchbase 被删除时允许数据持续存在,我创建了一个基于 matt/couchbase 的仅数据容器,称为 matt/couchbase-data

Dockerfile 看起来像

FROM matt/couchbase
CMD ["true"]
VOLUME ["/opt/couchbase/var/lib/couchbase/data"]

根据 couchbase 坞站,上面的卷路径是 couchbase 存储其数据的位置。

所以我运行 matt/couchbase-data,然后使用 --volumes-from 链接运行 matt/couchbase。

这很好用。docker inspect couchbase 显示:

"Volumes": {
        "/opt/couchbase/var/lib/couchbase/data": "/var/lib/docker/vfs/dir/f129a034a2b0474392fe98bdc37429f172be26c93a058540f3a1043d324c0b1c"
    },
    "VolumesRW": {
        "/opt/couchbase/var/lib/couchbase/data": true
    }

和 docker inspect couchbase-data 包含:

"Volumes": {
        "/opt/couchbase/var/lib/couchbase/data": "/var/lib/docker/vfs/dir/f129a034a2b0474392fe98bdc37429f172be26c93a058540f3a1043d324c0b1c"
    },
    "VolumesRW": {
        "/opt/couchbase/var/lib/couchbase/data": true
    }

所以看起来这两个容器连接得很好。

然而,问题是这样的。当我停止名为“couchbase”的容器并使用 docker rm 将其删除,然后再次启动 couchbase 时,尽管 docker-inspect 指示该卷仍然具有与以前相同的真实路径,但数据已经消失。即/var/lib/docker/vfs/dir/f129a034a2b0474392fe98bdc37429f172be26c93a058540f3a1043d324c0b1c

这可能是相关的。couchbase 服务器正在使用我从另一个 docker couchbase 项目中获得的以下初始化脚本启动(抱歉,暂时丢失了链接)。

我想也许下面的 cluster-init (这是我默认为 couchbase 运行的)可能正在重置数据。但根据文档,它只是设置集群用户名、密码和端口。

有任何想法吗?

#!/bin/bash
set +e



echo 'removing document size limit'
sed -i 's/return getStringBytes(json) > self.docBytesLimit;/return false/g' /opt/couchbase/lib/ns_server/erlang/lib/ns_server/priv/public/js/documents.js

echo 'starting couchbase'
/etc/init.d/couchbase-server restart

wait_for_start() {
    "$@"
    while [ $? -ne 0 ]
    do
        echo 'waiting for couchbase to start'
        sleep 1
        "$@"
    done
}


if [ -z "$CLUSTER_INIT_USER" ] || [ -z "$CLUSTER_INIT_PASSWORD" ]; then
       echo >&2 'error: Couchbase not initialized because CLUSTER_INIT_USER or CLUSTER_INIT_PASSWORD was not set'
       echo >&2 '       Did you forget to add -e CLUSTER_INIT_USER=... -e CLUSTER_INIT_PASSWORD=... ?'
       exit 1
fi

if [ -z "$COUCHBASE_PORT_8091_TCP" ]; then

    if [ -z "$CLUSTER_RAM_SIZE" ]; then
        CLUSTER_RAM_SIZE=1024
    fi

    echo 'initializing cluster...'
    wait_for_start /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1:8091 --cluster-init-username="$CLUSTER_INIT_USER" --cluster-init-password="$CLUSTER_INIT_PASSWORD" --cluster-init-ramsize="$CLUSTER_RAM_SIZE" -u "$CLUSTER_INIT_USER" -p "$CLUSTER_INIT_PASSWORD"

    if [ -n "$SAMPLE_BUCKETS" ]; then
    curl http://"$CLUSTER_INIT_USER":"$CLUSTER_INIT_PASSWORD"@127.0.0.1:8091/sampleBuckets/install --data "[$SAMPLE_BUCKETS]"
    fi
else
    ip=`hostname --ip-address`
    wait_for_start /opt/couchbase/bin/couchbase-cli server-add -c $COUCHBASE_PORT_8091_TCP_ADDR:$COUCHBASE_PORT_8091_TCP_PORT --user="$CLUSTER_INIT_USER" --password="$CLUSTER_INIT_PASSWORD" --server-add=$ip:8091
fi

trap "/etc/init.d/couchbase-server stop" exit INT TERM

pid_file=/opt/couchbase/var/lib/couchbase/couchbase-server.pid
# can't use 'wait $(<"$pid_file")' as process not child of shell
while [ -e /proc/$(<"$pid_file") ]; do sleep 1; done
docker
  • 1 个回答
  • 1442 Views
Martin Hope
hookenz
Asked: 2014-11-21 15:03:08 +0800 CST

如何手动计算我的证书链顺序?

  • 9

假设我从证书开始。

使用 openssl 我可以像这样打印出来:

openssl x509 -in cert.pem -text -noout

我会得到一些输出,例如Validity,Issuer和Subject以及。Authority Key IdentifierSubject Key Identifier

我如何使用这些字段来计算链中的下一个证书?

然后,一旦我获得下一个证书,就计算出下一个证书应该是什么等。

基本上我想制定完整的链,并为 EC2 负载均衡器以正确的顺序处理事情。由于网络解决方案似乎不只是给你一个有效的捆绑包。他们为您提供个人证书,我已经尝试并尝试了许多不同的 EC2 排序,但仍然没有让它工作。我最后的赌注是尝试 openssl 并手动解决这个问题,而不是猜测。

ssl-certificate
  • 2 个回答
  • 7631 Views
Martin Hope
hookenz
Asked: 2014-11-11 19:11:25 +0800 CST

无法使用 EC2 弹性负载均衡器获得网络解决方案证书链

  • 4

我有一个提供给我的证书文件,它是一个通配符域名。它同时作为密钥和 crt 文件提供。没有提供其他文件。

我无法让它与弹性负载平衡器一起正常工作。

我试过这个顺序:

http://www.networksolutions.com/support/installation-of-an-ev-ssl-certificate-for-tomcat-apache/

使用从这里获得的中间证书:http: //www.networksolutions.com/support/where-can-i-locate-the-network-solutions-nsprotect-root-and-intermediate-certificate-files/

我还尝试了以下方法:

  • 网络解决方案添加信任外部 CA 根
  • 网络解决方案 UTN 添加信任 CA
  • 网络解决方案 UTN 服务器 CA
  • 网络解决方案扩展验证 (EV) CA
  • 网络解决方案中级证书
  • 网络解决方案 EV Root

ELB 返回的错误是:

无法验证证书链。证书链必须从直接签名证书开始,然后是任何中间人。无效证书链内的索引为:-1

那里有太多相互矛盾和过时的信息,似乎没有任何效果。我如何让这个工作?

有没有一种方法可以与 OpenSSL 一起使用来手动计算出我在每个步骤中需要哪些证书?

ssl-certificate
  • 4 个回答
  • 9977 Views
Martin Hope
hookenz
Asked: 2014-10-22 14:33:10 +0800 CST

通过 RDMA 网络设备传递给 docker 容器

  • 5

我想通过 infiniband 到 docker 容器,以便我可以通过 ipoib 运行一些高性能应用程序并使用 rdma。

目前,我正在使用 xen 虚拟机执行此操作。现在我正在考虑使用 CoreOS 和 docker 作为更轻量级且更易于管理的替代方案。

我有一个分配给它的静态 IP 为 10.10.10.10 的 IPoIB 设备 ib0。我已经设法通过以下方式将其暴露在 docker 容器中:

docker run --net=host --device=/dev/infiniband/uverbs0 --device=/dev/infiniband/rdma_cm -t -i ubuntu:14.04 /bin/bash

太好了,这行得通。ib0 在 docker 容器中可用。

现在让我们假设我有一个双端口 HCA。在主机上,它们显示为 ib0 和 ib1,并分配了两个 ip。10.10.10.10/ib0 和 10.10.10.11/ib1

现在我想将 ib0 传递给第一个容器,将 ib1 传递给第二个容器。由于 --net=host 选项,使用上述两种方法都会出现在两个容器中。但是,不指定它意味着设备根本不会出现。

另一种情况是我有很多机器使用 SR-IOV 将 infiniband 设备传递到 xen 虚拟机。我怎样才能将虚拟功能 infiniband 设备传递给 docker 容器并让它出现?

注意:管道在这种情况下不起作用,但如果我更好地理解它,它可能会被黑客入侵以做我想做的事。我只是不太明白它在做什么......但是。

linux
  • 1 个回答
  • 4217 Views
Martin Hope
hookenz
Asked: 2014-10-09 12:27:37 +0800 CST

我可以在多台机器上安装只读 btrfs 卷吗?

  • 3

是否可以在多台机器上以只读方式安装单个 btrfs 安装卷?

其中一台主机可以读取/写入它以向其他主机提供更新吗?

我问这个的原因是我想知道将 /var/lib/docker 挂载到多个 CoreOS 实例是否明智。人们在实践中为私有云做了什么?特别是网络引导的实例。

或者我应该为每个物理主机创建一个安装在 /var/lib/docker 的唯一块设备并将其链接到私有注册表?

https://coreos.com/docs/cluster-management/setup/mounting-storage/

linux
  • 1 个回答
  • 1265 Views
Martin Hope
hookenz
Asked: 2014-09-12 14:54:13 +0800 CST

为什么 conntrackd 不复制状态?

  • 5

我有一个主动/主动防火墙集群的问题,其中防火墙中的连接跟踪状态似乎没有被复制。

它是主动/主动的,因为我有两个通过不同 ISP 连接的路由器和一个通过 BGP 提供的网络范围。数据如何回传由 BGP 决定。因此路由是不对称的。这两个防火墙在内部网络上联网,我有一个虚拟 IP 作为 Windows 服务器的默认路由。

当两个防火墙都在运行并且内部服务器尝试连接时,回复通过辅助防火墙(没有连接状态记录的防火墙)返回。因此,回复被丢弃并且不会路由到发起请求的服务器。

我以为 conntrackd 会解决这个问题,但我似乎无法让它工作。也许我误解了它是如何工作的。我可以通过 conntrackd 复制 iptables 状态吗?它实际上在主动/主动模式下工作吗?状态是否实时复制?

这是我的 conntrackd.conf 文件包含的内容。

Sync {
  Mode ALARM {
    RefreshTime 15
    CacheTimeout 180
  }

  Multicast {
    IPv4_Address 225.0.0.50
    Group 3780
    IPv4_Interface 10.0.0.100
    Interface eth2
    SndSocketBuffer 1249280
    RcvSocketBuffer 1249280
    Checksum on
  }
}

General {
  Nice -20
  HashSize 32768
  HashLimit 131072
  LogFile on
  Syslog on
  LockFile /var/lock/conntrack.lock
  UNIX {
    Path /var/run/conntrackd.ctl
    Backlog 20
  }
  NetlinkBufferSize 2097152
  NetlinkBufferSizeMaxGrowth 8388608
  Filter From Userspace {
    Protocol Accept {
      TCP
    }

    Address Ignore {
      IPv4_address 127.0.0.1 # loopback
      IPv4_address 10.0.0.100 # dedicated link0
      IPv4_address 10.0.0.101 # dedicated link1
      IPv4_address x.x.x.130 # Internal ip
    }
  }
}

除了多播部分中的 IPv4_interface 具有 10.0.0.101 之外,其他 conntrackd 是相同的。并且过滤部分的内部IP以131结尾

我已设置防火墙规则以接受 225.0.0.50/32 的输入和 225.0.0.50/32 的输出。

我在这里将模式设置为警报,但首先尝试了 FTFW。两者似乎都不起作用。

我的内核版本是:3.11.0。

抱歉,我的剪切和粘贴无法从虚拟框窗口工作。但是,我只想说,当我运行时: sudo conntrackd -i 它列出了一个 ESTABLISHED tcp 连接作为输出,这是我使用 ssh 创建的连接。

但是,在另一台路由器上,相同的命令不会产生任何输出。我认为这应该意味着状态没有被转移到另一个路由器上。

有任何想法吗?


更新:我在每台机器上运行了 tcpdump -i eth2 ,我可以看到从另一台路由器本地到达的 UDP 数据包发往多播地址 225.0.0.50 端口 3780,长度为 68 字节。

如果我启动 ssh 连接,我会在 tcpdump 上看到即时活动,并且断开连接也是如此。否则,该消息的常规心跳就会通过。所以很明显路由器正在发送数据包,但 conntrackd 是否忽略了它们?我可以打开一些隐藏的调试吗?


Update2:好的,经过几天的谷歌搜索和查看源代码后,我发现 conntrackd 正在复制状态,但它最终在外部缓存中。要提交规则,您需要运行 conntrackd -c。显然 conntrackd 设计用于主动/备份模式。

似乎在某个时候引入了一个名为 CacheWriteThrough 的新选项。但随后被删除。conntrack 可以主动/不主动吗?我似乎无法找到答案。

linux
  • 2 个回答
  • 4814 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve