利用 openresty balancer

    xiaoxiao2026-09-13  7

    以下基于 OpenResty balancer_by_lua 配置指令, 利用 ngx.crc32_long 根据源地址与目的端口生成hash, 实现一个简单的 ip_hash upstream. 仅供参考 

    upstream backend{ server 0.0.0.0; balancer_by_lua_block { local balancer = require "ngx.balancer" local host = {"192.168.1.111", "192.168.1.112"} local backend = "" local port = ngx.var.server_port local remote_ip = ngx.var.remote_addr local key = remote_ip..port local hash = ngx.crc32_long(key); hash = (hash % 2) + 1 backend = host[hash] ngx.log(ngx.DEBUG, "ip_hash=", ngx.var.remote_addr, " hash=", hash, " up=", backend, ":", port) local ok, err = balancer.set_current_peer(backend, port) if not ok then ngx.log(ngx.ERR, "failed to set the current peer: ", err) return ngx.exit(500) end ngx.log(ngx.DEBUG, "current peer ", backend, ":", port) } } server { listen 80; listen 8080; listen 7777; server_name *.x.com location / { proxy_pass http://backend; } } 参考:

    https://github.com/openresty/lua-nginx-module

    转载请注明原文地址: https://ju.6miu.com/read-1312013.html
    最新回复(0)