Red y Edge¶
DNS local con LocalDNSServer¶
LocalDNSServer es un servidor DNS UDP autoritativo con fallback opcional a
upstream.
from wsbuilder import LocalDNSServer
dns = LocalDNSServer(
host="127.0.0.1",
port=5533,
ttl=60,
records={
"demo.local": {"A": "127.0.0.1"},
"api.demo.local": {"CNAME": "demo.local"},
},
)
dns.start()
Capacidades visibles en la suite:
- registros
A,AAAA,TXT,MX,SRV,CNAME. - records wildcard.
- records con
TYPE####yrdatacrudo. - fallback a upstreams remotos cuando se habilita.
Metodos publicos:
add_recordadd_raw_recordremove_recordclear_recordsserve_foreverstartclose
Proxy HTTP con ProxyI¶
ProxyI es una capa de reverse proxy y balanceo sin dependencias externas.
from wsbuilder import ProxyI
proxy = ProxyI(name="edge")
proxy.vhost("api.test.local", name="api-vhost").location("/api").upstream(
"http://127.0.0.1:9000",
name="backend-1",
).build()
Construccion de reglas¶
ProxyRouteBuilder soporta filtros por:
- host exacto, multiples hosts, host parcial o regex.
- path exacto, prefijo, contains o regex.
- headers con
equals,containso regex. - metodos y prioridad.
Tambien permite:
balance(value)strip_prefix(value=True)preserve_host(value=True)hash_key(value)default(value=True)upstream(target, **kwargs)
Estrategias de balanceo¶
La API publica expone:
round_robinweighted_round_robinrandomleast_connectionsleast_response_timeleast_requestsleast_bytes_inleast_bytes_outip_hashconsistent_hashfirst_availablepower_of_two_choicesbest
Instalacion sobre App¶
proxy.install(
app,
metrics_path="/api/proxy/metrics",
stream_path="/api/proxy/metrics/stream",
dashboard_path="/proxy",
)
Eso publica:
- snapshot JSON de metricas del proxy
- stream de metricas
- dashboard HTML
Para despachar trafico real, una ruta HTTP de tu aplicacion debe invocar
app.proxyi.dispatch(request).