Token导航 LogoToken导航TokenDH.com
前端设计需要联网github未标认证来源可访问许可证需确认审计提醒

load-balancer负载均衡器

Agent Skill

load-balancer 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

1

周安装

8

GitHub Stars

12

下载量

65
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:load-balancer(负载均衡器)
来源仓库:https://github.com/claude-dev-suite/claude-dev-suite
仓库路径:skills/load-balancer
安装命令:
npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill load-balancer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill load-balancer

简介

load-balancer 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态进行整理。

  • 它提供 Nginx 和 HAProxy 的配置对比,包括负载均衡策略、健康检查和会话保持机制。
  • 使用时需根据业务场景选择合适工具,HTTP/2 和 TCP 负载均衡有不同适用场景;涉及生产环境时应先测试配置。
  • 安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写操作。
  • 适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

SKILL.md

Load Balancing: Nginx & HAProxy Core Knowledge

Nginx vs HAProxy — When to Use Each

DimensionNginxHAProxy
Primary roleWeb server + reverse proxy + LBDedicated load balancer + proxy
Config complexityLow-mediumMedium-high
HTTP modesHTTP/1.1, HTTP/2HTTP/1.1, HTTP/2 (enterprise), HTTP/3 (1.9+)
TCP/UDP LBNginx Plus or stream moduleNative, very mature
Active health checksNginx Plus only (open-source: passive only)Built-in, free
Stats/metrics UIThird-party (nginx-lua, stub_status)Built-in stats page
Sticky sessionsNginx Plus (cookie) or ip_hashStick tables (any key), free
Connection reuseKeepalive to upstreamReuse connections, queue management
Dynamic reconfigurationNginx Plus (upstream_conf API)Runtime API (HAProxy 2.0+)
Ecosystem / docsVery mature, massiveMature, industry standard for pure LB

Use Nginx when: you already use Nginx as your web server, you want a single tool for serving files + proxying + LB, or your team knows Nginx.

Use HAProxy when: you need advanced health checks, fine-grained ACL routing, TCP load balancing, or maximum LB performance and observability.


Nginx Upstream Configuration

Basic Upstream Block

# /etc/nginx/nginx.conf or included conf

http {
    # Shared memory zone for upstream state across workers
    # Required for proper load balancing with multiple workers
    upstream app_backend {
        zone app_zone 256k;         # Shared state (round_robin works without it too)

        # Balancing method (default is round_robin if nothing specified)
        # least_conn;               # Route to backend with fewest active connections
        # ip_hash;                  # Sticky: same client IP always → same backend
        # hash $request_uri consistent;  # Consistent hashing by URI (good for caching)
        # random two least_conn;    # Pick 2 random servers, send to less-loaded one

        server 10.0.1.10:3000 weight=3 max_fails=3 fail_timeout=30s;
        server 10.0.1.11:3000 weight=1 max_fails=3 fail_timeout=30s;
        server 10.0.1.12:3000 weight=1 max_fails=3 fail_timeout=30s;

        # Backup server — only used when all primaries are down
        server 10.0.1.20:3000 backup;

        # Permanently excluded (maintenance)
        # server 10.0.1.13:3000 down;

        # Keepalive connections to upstream (dramatically reduces TCP overhead)
        keepalive 64;               # Max idle keepalive connections per worker
        keepalive_requests 1000;    # Max requests per keepalive connection
        keepalive_timeout 60s;
    }

    server {
        listen 80;
        server_name api.example.com;

        # Logging with upstream info
        log_format upstream_log '$remote_addr - $upstream_addr [$time_local] '
                                 '"$request" $status $body_bytes_sent '
                                 'rt=$request_time urt=$upstream_response_time';
        access_log /var/log/nginx/api_access.log upstream_log;

        location / {
            proxy_pass         http://app_backend;
            proxy_http_version 1.1;                     # Required for keepalive
            proxy_set_header   Connection "";           # Required for keepalive
            proxy_set_header   Host              $host;
            proxy_set_header   X-Real-IP         $remote_addr;
            proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto $scheme;

            # Timeouts
            proxy_connect_timeout  5s;
            proxy_send_timeout     30s;
            proxy_read_timeout     30s;

            # Passive health check: try next upstream on errors
            proxy_next_upstream     error timeout http_502 http_503 http_504;
            proxy_next_upstream_tries 3;
            proxy_next_upstream_timeout 10s;

            # Buffering
            proxy_buffering    on;
            proxy_buffer_size  16k;
            proxy_buffers      8 16k;
        }

        # Health check endpoint for external monitors
        location /nginx-health {
            access_log off;
            return 200 "OK\n";
        }
    }
}

Active Health Check Workaround (Open-Source Nginx)

Nginx OSS only supports passive health checks. Simulate active checks with a small service or use the nginx_upstream_check_module (third-party).

# Install lua-nginx-module + lua-resty-upstream-healthcheck
# OR use OpenResty (Nginx + LuaJIT bundle)
# Simple approach: use a separate monitoring tool (Consul, HAProxy) alongside Nginx

SSL Termination at Nginx

server {
    listen 443 ssl http2;
    server_name api.example.com;

    # Certificate (from Let's Encrypt / Certbot)
    ssl_certificate     /etc/letsencrypt/live/api.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem;

    # Modern TLS settings
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;
    ssl_session_cache   shared:SSL:10m;
    ssl_session_timeout 1d;
    ssl_session_tickets off;

    # HSTS
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    location / {
        proxy_pass http://app_backend;      # Plain HTTP to backend (internal network)
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_set_header X-Forwarded-Proto https;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# HTTP → HTTPS redirect
server {
    listen 80;
    server_name api.example.com;
    return 301 https://$host$request_uri;
}

Stub Status (Metrics Endpoint)

server {
    listen 127.0.0.1:8080;   # Bind to localhost only
    location /nginx_status {
        stub_status;
        allow 127.0.0.1;
        deny all;
    }
}

HAProxy Configuration

Full HTTP Load Balancer Config

# /etc/haproxy/haproxy.cfg

global
    log         /dev/log local0 info
    log         /dev/log local0 notice notice
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     50000               # Total concurrent connections
    user        haproxy
    group       haproxy
    daemon
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners

defaults
    log         global
    mode        http                # http | tcp
    option      httplog             # Structured HTTP log format
    option      dontlognull         # Don't log health checks
    option      forwardfor          # Add X-Forwarded-For header
    option      http-server-close   # Close server-side connection after each request
    option      redispatch          # Retry on different server if session fails
    timeout     connect  5s
    timeout     client   30s
    timeout     server   30s
    timeout     http-request 10s    # Max time to receive full HTTP request
    timeout     http-keep-alive 5s
    timeout     queue   1m          # Max wait in queue when all servers full
    timeout     tunnel  1h          # For WebSocket / long-lived connections
    retries     3

#──────────────────────────────────────
# Stats page
#──────────────────────────────────────
frontend stats
    bind *:8404
    stats enable
    stats uri /stats
    stats refresh 10s
    stats auth admin:strongpassword    # CHANGE THIS
    stats show-legends
    stats show-node
    # Restrict to internal IPs
    acl internal_nets src 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
    tcp-request connection reject if !internal_nets

#──────────────────────────────────────
# HTTPS frontend (SSL termination)
#──────────────────────────────────────
frontend https_in
    bind *:443 ssl crt /etc/ssl/certs/example.com.pem  # Combined cert+key PEM
    bind *:80
    http-request redirect scheme https unless { ssl_fc }

    # Define ACLs for routing
    acl host_api   hdr(host) -i api.example.com
    acl host_app   hdr(host) -i app.example.com
    acl path_admin path_beg /admin

    # Security headers
    http-response set-header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    http-response set-header X-Content-Type-Options    nosniff
    http-response set-header X-Frame-Options           DENY
    http-response del-header Server

    # ACL-based routing to backends
    use_backend api_servers  if host_api
    use_backend app_servers  if host_app !path_admin
    use_backend admin_server if host_app path_admin

    default_backend app_servers

#──────────────────────────────────────
# API backend
#──────────────────────────────────────
backend api_servers
    balance leastconn               # roundrobin | leastconn | source | uri | random

    # Active HTTP health checks
    option httpchk GET /health HTTP/1.1\r\nHost:\ api.example.com
    http-check expect status 200
    default-server inter 10s fastinter 2s downinter 5s rise 2 fall 3

    # Connection limits per server
    default-server maxconn 100 maxqueue 50

    # Keepalive to backends
    option http-server-close
    timeout connect 3s
    timeout server  15s

    server api1 10.0.1.10:3000 check weight 10
    server api2 10.0.1.11:3000 check weight 10
    server api3 10.0.1.12:3000 check weight 5   # Lower weight — less powerful
    server api_backup 10.0.1.20:3000 check backup

#──────────────────────────────────────
# App backend with sticky sessions
#──────────────────────────────────────
backend app_servers
    balance roundrobin
    option httpchk GET /health
    http-check expect status 200

    # Cookie-based sticky sessions
    cookie SERVERID insert indirect nocache httponly secure

    default-server inter 10s rise 2 fall 3
    server app1 10.0.1.30:8080 check cookie app1
    server app2 10.0.1.31:8080 check cookie app2
    server app3 10.0.1.32:8080 check cookie app3

#──────────────────────────────────────
# Admin backend — IP restricted
#──────────────────────────────────────
backend admin_server
    # IP whitelist using TCP-request (set in frontend ACL)
    option httpchk GET /admin/health
    server admin1 10.0.1.50:8080 check

#──────────────────────────────────────
# TCP mode example (e.g., PostgreSQL)
#──────────────────────────────────────
frontend postgres_in
    bind *:5432
    mode tcp
    default_backend postgres_servers

backend postgres_servers
    mode tcp
    balance leastconn
    option tcp-check
    server pg_primary 10.0.2.10:5432 check
    server pg_replica 10.0.2.11:5432 check backup

HAProxy Runtime API

# Enable in global section: stats socket /run/haproxy/admin.sock mode 660 level admin

# Show current server states
echo "show servers state" | socat stdio /run/haproxy/admin.sock

# Drain a server (stop sending new requests, finish existing)
echo "set server api_servers/api1 state drain" | socat stdio /run/haproxy/admin.sock

# Bring server back online
echo "set server api_servers/api1 state ready" | socat stdio /run/haproxy/admin.sock

# Change weight dynamically
echo "set server api_servers/api2 weight 20" | socat stdio /run/haproxy/admin.sock

# Show backend health
echo "show health" | socat stdio /run/haproxy/admin.sock

Error Pages

errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

Anti-Patterns

Anti-PatternProblemSolution
No health checks (Nginx passive only, never configured)Dead backends receive traffic → client errorsConfigure proxy_next_upstream in Nginx; use option httpchk in HAProxy
ip_hash with clients behind shared NAT / CDNUneven distribution — all clients from same office go to one serverUse least_conn or cookie-based stickiness instead of IP hash
No proxy_http_version 1.1 + Connection "" with Nginx keepaliveKeepalive not actually enabled — new TCP connection per requestAlways pair proxy_http_version 1.1 with proxy_set_header Connection ""
Setting timeout client 30s for WebSocket connectionsWebSocket connections dropped after 30 seconds idleUse timeout tunnel 1h (HAProxy) or proxy_read_timeout 0 (Nginx) for WS paths
Not logging $upstream_addr and $upstream_response_timeCan't diagnose which backend is slowAdd to Nginx log_format; use HAProxy %b/%s log variables
maxconn not tuned in HAProxy globalHAProxy queues or rejects connections under loadSet maxconn based on RAM: ~1 MB per 1000 connections; adjust per server too
No proxy_buffering tuning in NginxSlow clients cause upstream to waitKeep proxy_buffering on; tune proxy_buffers for your response sizes
Nginx upstream without zone directiveRound-robin per-worker only, no true least_conn across workersAlways add zone <name> 256k to upstream block
HAProxy stats page exposed on public interfaceStats reveal server IPs, health, and allow admin actionsBind stats to 127.0.0.1 or restrict with ACL src 10.0.0.0/8
TLS termination without ssl_session_cacheFull TLS handshake on every request → high CPUAdd ssl_session_cache shared:SSL:10m and ssl_session_timeout 1d

Troubleshooting

SymptomLikely CauseFix
Uneven traffic distribution with least_connSingle Nginx worker handles one backend; workers share if zone is setAdd zone directive to upstream block for shared state
Backend marked down immediatelyHealth check URL returns non-200 or times outcurl http://10.0.1.10:3000/health from load balancer host; adjust rise/fall thresholds
502 Bad Gateway on all requestsAll backends down or proxy_pass pointing to wrong addressCheck backend process; verify port; test curl backend_ip:port from LB
Session drops when scaling backendsNo sticky sessions configuredAdd ip_hash (Nginx) or cookie directive (HAProxy)
Keepalive not working (new TCP per request)Missing proxy_http_version 1.1 or Connection "" headerAdd both headers; verify with `netstat -an
HAProxy shows "no server available"All servers DOWN in health checks`echo "show servers state"
Nginx returns 504 (gateway timeout)Backend too slow; proxy_read_timeout too shortIncrease proxy_read_timeout; investigate backend performance
SSL handshake errorsCipher mismatch or TLS version too oldCheck client TLS support; ensure ssl_protocols TLSv1.2 TLSv1.3
HAProxy rate higher than expected CPUToo many health check connectionsIncrease inter interval: inter 30s for stable backends
X-Forwarded-For shows load balancer IPoption forwardfor not set (HAProxy) or proxy_set_header X-Forwarded-For missing (Nginx)Add the respective directive; restart LB

Production Checklist

Nginx:

  • zone directive in all upstream blocks
  • proxy_http_version 1.1 + proxy_set_header Connection ""
  • proxy_next_upstream with appropriate error codes
  • X-Real-IP and X-Forwarded-For headers set
  • keepalive set on upstream block
  • $upstream_addr and $upstream_response_time in access log format
  • SSL session cache and modern TLS settings

HAProxy:

  • option httpchk on all backends with correct URL and Host header
  • inter, rise, fall tuned for your SLO
  • maxconn set globally and per server
  • Stats page on internal interface with auth
  • Runtime API socket configured
  • timeout tunnel set for WebSocket backends
  • Error files configured for all 4xx/5xx codes
  • Log format includes backend server name

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

32.59%
按下载量换算21

Claude

32.18%
按下载量换算21

Cursor

16.41%
按下载量换算11

Gemini CLI

9.15%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills