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-197595

mr.simonski's questions

Martin Hope
mr.simonski
Asked: 2020-06-30 07:06:01 +0800 CST

cAdvisor - 节点间同步

  • 0

我有一个 docker swarm 运行我们在两台服务器(节点)上的 docker-compose.yml 中定义的业务堆栈。docker-compose 定义了从两个节点中的每一个开始的 cAdvisor,如下所示:

  cadvisor:
    image: gcr.io/google-containers/cadvisor:latest
    command: "--logtostderr --housekeeping_interval=30s"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /:/rootfs:ro
      - /var/run:/var/run
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
      - /dev/disk:/dev/disk/:ro
    ports:
      - "9338:8080"
    deploy:
      mode: global
      resources:
        limits:
          memory: 128M
        reservations:
          memory: 64M

在第三台服务器上,我在节点 1 和 2 上分别运行 docker 与 docker swarm,该服务器用于运行 Prometheus 和 Grafana。Prometheus 配置为仅抓取 node1:9338 资源以获取 cAdvisor 信息。

我偶尔会遇到这样的问题,即在抓取 node1:9338 时,并非所有在节点 1 和 2 上运行的容器都显示在 cAdvisor 统计信息中。

我假设 cAdvisor 正在 swarm 中同步其信息,以便我能够将 Prometheus 配置为仅使用 node1:9338 作为 docker swarm 的入口点并抓取信息。

或者我是否还必须将 node2:9338 放入我的 Prometheus 配置中才能始终获取所有节点的所有信息?如果是,那么应该如何扩展,因为我需要将每个新节点添加到 Prometheus 配置中。

将 Prometheus 与业务堆栈一起运行在一个集群中是没有选择的。

编辑:我今天在打开 cAdvisor 指标 URL http://node1:9338/metrics 以及 http://node2:9338/metrics 时遇到了一种奇怪的行为,因为我在两个 URL 上看到 node1 上运行的所有容器的相同信息. 请求 http://node2:9338/metrics 时缺少 node2 上运行的容器信息。

可能是 docker-internal 负载平衡正在将请求从 http://node2:9338/metrics 路由到 node1:9338 cAdvisor,因此尽管请求了 node2,但仍显示了 node1 的指标?

prometheus docker docker-swarm
  • 2 个回答
  • 495 Views
Martin Hope
mr.simonski
Asked: 2020-07-02 02:28:22 +0800 CST

NFS 共享上的 Docker 卷 - 空目录

  • 1

我们的业务应用程序在两个节点(node1 和 node2)上运行了一个 Docker Swarm 部署。

应用程序需要一个卷来存储持久数据。由于不清楚容器的部署位置(节点 1 或节点 2),以及我们的应用程序的两个容器可能应该在两个节点上运行,我们需要一个解决方案来为所有节点提供共享卷。

为了共享卷,我们使用以下 /etc/exports 文件在第三个节点 3 上设置 NFS 服务器:

/srv          *(rw,sync,anonuid=1000,anongid=1000,all_squash,subtree_check,crossmnt,fsid=root)

(我使用 anonuid/gid 为导出中的每个文件显式设置 node3 系统中已知用户的用户信息。all_squash 用于确保所有访问用户的所有文件权限都重写给该本地用户)

在我们的 docker-compose.yml 中,我们使用以下设置来包含卷:

volumes:
  nfs-data:
    driver: local
    driver_opts:
      type: nfs
      o: nfsvers=4,addr=node3.example.com,rw,nolock,soft

我们现在遇到了容器不想启动的问题,错误消息是:

failed to copy file info for /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: failed to chown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: lchown /var/lib/docker/volumes/MY_CONTAINER_nfs-data/_data: operation not permitted

经过一番挖掘,我发现问题出在 node3 服务器上导出的 NFS 目录上的初始空文件夹中。一旦我放入一个空文件,node1 和 node2 中的容器的启动就完全正常了。

有人对此有解释吗?

nfs share docker nfs4
  • 1 个回答
  • 1869 Views
Martin Hope
mr.simonski
Asked: 2017-11-16 02:55:42 +0800 CST

HAproxy:在健康检查更改时运行脚本

  • 5

我已经设置了一个带有两个服务器的后端的 haproxy 配置,如下所示:

...
default
        option log-health-checks
...
mailers mta
        mailer smtp1 127.0.0.1:25
...
backend s_api
        balance roundrobin
        option httpchk GET /sites?site=q&limit=1

        http-check expect rstatus (2|3)[0-9][0-9]

        server s1_a 1.2.3.4:3600 check inter 5s fall 4 rise 1
        server s2_b 1.2.3.5:3600 check backup

        timeout queue 60s
        timeout server 60s
        timeout connect 60s

        email-alert mailers mta
        email-alert level notice
        email-alert from [email protected]
        email-alert to [email protected]

现在,当服务器再次出现故障时,我会通过电子邮件收到通知。我想要归档的是在服务器启动时启动一个本地 bash 脚本,而在服务器关闭时启动另一个脚本。

那怎么可能呢?

haproxy
  • 1 个回答
  • 8612 Views
Martin Hope
mr.simonski
Asked: 2014-01-05 10:41:28 +0800 CST

使用 Apache 和 mod_proxy 重写子域的 URL

  • 0

我有一个带有 mod_proxy 的 Apache Web 服务器和一个运行我的 Grails Web 应用程序的 Tomcat 服务器。Apache 正在使用代理将对 example.com:80 的请求重定向到我在 example.com:8008 上运行的 Tomcat。

我需要通过以下方式重定向请求:

http://subdomain1.example.com:80/some-nice-seo-url

从 apache 应该得到每个代理到

http://example.com:8008/some-nice-seo-url-subdomain1

如何使用以下 apache2 配置来归档它:

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        # compress text, html, javascript, css, xml:
        AddOutputFilterByType DEFLATE text/plain
        AddOutputFilterByType DEFLATE text/html
        AddOutputFilterByType DEFLATE text/xml
        AddOutputFilterByType DEFLATE text/css
        AddOutputFilterByType DEFLATE application/xml
        AddOutputFilterByType DEFLATE application/xhtml+xml
        AddOutputFilterByType DEFLATE application/rss+xml
        AddOutputFilterByType DEFLATE application/javascript
        AddOutputFilterByType DEFLATE application/x-javascript

        ExpiresActive On
        ExpiresByType text/html "access plus 7 days"
        ExpiresByType image/gif "access plus 1 months"
        ExpiresByType image/jpeg "access plus 1 months"
        ExpiresByType image/png "access plus 1 months"
        ExpiresByType text/css "access plus 14 days"
        ExpiresByType text/javascript "access plus 14 days"
        ExpiresByType application/x-javascript "access plus 14 days"
        ExpiresByType image/ico "access plus 1 months"

        RewriteEngine on
        # www to non-www using search-engine friendly 301
        RewriteCond %{HTTP_HOST} ^www.example.com [NC]
        RewriteRule ^(.*)$ http://example.com$1 [L,R=301]

        # IP canonicalization
        RewriteCond %{HTTP_HOST} ^1\.2\.3\.4
        RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]


        <Directory />
                Options FollowSymLinks
                 AllowOverride None
        </Directory>
        <Directory /opt/example/web-app>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        # redirect everything else to TOMCAT
        ProxyPass               / http://1.2.3.4:8008/
        ProxyPassReverse        / http://1.2.3.4:8008/
        ProxyPassReverseCookieDomain localhost example.com
        ProxyPreserveHost On
</VirtualHost>

感谢您的任何帮助!

apache-2.2
  • 1 个回答
  • 4327 Views
Martin Hope
mr.simonski
Asked: 2013-12-13 06:56:26 +0800 CST

使用 dropbear 将 luks+lvm 上的加密 debian 系统从单个 SSD 移动到 SSD-RAID1

  • 0

我们有一个 debian linux 服务器,它有一个 120GB SSD 和 2x2TB HDD 作为 RAID 1。我们现在必须移动到另一个有 2x240GB SSD 和一个 2TB HDD 的服务器。目的是将当前 120GB 系统驱动器 SSD 移动到 240GB RAID1 SSD,并将数据从当前 2TB RAID1 HDD 移动到单个 2TB HDD。

移动 2TB 不会有问题,所以我将我的问题集中在系统驱动器 SSD 上。我们当前的设置有点复杂。120GB SSD 有以下分区:

fdisk -l /dev/sda

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          66      523264   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              66       14594   116696064   83  Linux

fstab 告诉我们:

cat /etc/fstab
# /etc/fstab: static file system information.
#
# <file system>                         <mount point>   <type>  <options>       <dump>  <pass>
        proc                            /proc           proc    defaults          0       0
        /dev/mapper/vgdebian-root       /               ext4    errors=remount-ro 0       1
        /dev/mapper/vgdebian-swap       none            swap    sw                0       0
        /dev/sda1                       /boot           ext3    defaults          0       2

因此,带有内核和带有 dropbear 的 busybox linux 的引导都在 /dev/sda1 上。然后 dropbear 帮助解密 /dev/sda2 分区,该分区由 cryptsetup 加密并由 LVM 管理。

我不确定将所有 /dev/sda 移动到新创建的 SDD-RAID1 的最佳方法是什么?我是否应该首先对其中一个新磁盘进行 dd-copy,扩大 /dev/sda2 分区(每个新 SSD 现在都是 240GB 而不是 120GB)并让 dropbear 知道新的 240GB SSD?然后我应该开始将所有第一个 240GB SDD 复制到第二个并初始化 mdadm create array 命令吗?

或者我应该在新的 240GB SSD 上创建一个干净的 /dev/md0 阵列,然后将整个旧驱动器复制到这个可能是 /dev/md0 命名的设备?

dropbear/busybox 对 RAID 有何反应?可能必须将新的 /dev/sda1 复制到 /dev/sdb1 以便可以从两个新 SSD 引导 dropbear/busybox。启动解密的 LVM debian 时,RAID1 将首先存在 - 对吗?

如果无论如何都可以移动这样一个加密的系统,也许有人可以给我一些提示。谢谢你的帮助。

编辑: 我通过 dd 命令将所有 120GB 旧 SSD 转移到新服务器的新 240GB SSD 之一(此处为:https ://library.linode.com/migration/ssh-copy )。然后我将一些配置更改为 dropbear 并重新组装 initramfs 并重新启动 - 系统在新服务器上照常工作。

现在我需要调整旧 SSD 的图像大小,所以我将 /dev/sda2 扩大到最大,然后我扩大了物理卷、逻辑卷和文件系统。我重新启动并且一切正常(tut 这里:http ://ubuntuforums.org/showthread.php?p=4530641 )。

最后一件事:将整个东西从单个 SSD 移动到 RAID1。有什么提示吗?

Edit2: 目前我正在尝试让 RAID1 运行。在旧系统在其中一个 240GB SSD 上运行后,我找到了两个从非 RAID 系统迁移到 RAID1 的教程:pug.org/mediawiki/index.php/Vorhandenes_MD-RAID1_im_laufenden_Betrieb_verschl%C3%BCsseln 和 howtoforge.com/软件-raid1-grub-boot-debian-etch-p2。两者都在运行的系统中工作。我将第一个 tut 用于 LUKs 的东西,第二个用于其余的 - 希望它会成功。

debian
  • 1 个回答
  • 959 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