diff --git a/haproxy/haproxy.cfg.example b/haproxy/haproxy.cfg.example deleted file mode 100644 index 85c6f0a4..00000000 --- a/haproxy/haproxy.cfg.example +++ /dev/null @@ -1,83 +0,0 @@ -global - - #nbthread 2 - cpu-map auto:1/1-2 0-1 - - log /dev/log local0 - log /dev/log local1 notice - #chroot /var/lib/haproxy - user haproxy - group haproxy - daemon - external-check - insecure-fork-wanted - -defaults - mode http - log global - option httplog - option http-keep-alive - option dontlognull - option redispatch - option contstats - retries 3 - backlog 10000 - timeout client 50s - timeout connect 5s - timeout server 50s - timeout tunnel 3600s - timeout http-keep-alive 2s - timeout http-request 15s - timeout queue 30s - timeout tarpit 60s - default-server inter 3s rise 2 fall 3 - option forwardfor - - -listen stats - bind *:9600 - stats enable - stats uri /stats - stats realm Haproxy\ Statistics - stats auth pocket:P@ssw0rd00! - -frontend stats2 - bind *:8404 - #option http-use-htx - http-request use-service prometheus-exporter if { path /metrics } - stats enable - stats uri /stats - stats refresh 10s - -frontend rpc-frontend - bind *:80 - acl host_is_erigon path_beg /erigon - #acl host_is_goerli path_beg /goerli - #acl host_is_avalanche path_beg /avalanche - #acl host_is_ropsten path_beg /ropsten - #acl host_is_geth path_beg /geth - #acl host_is_rinkeby path_beg /rinkeby - - use_backend erigon if host_is_erigon - #use_backend goerli if host_is_goerli - #use_backend avalanche if host_is_avalanche - #use_backend ropsten if host_is_ropsten - #use_backend geth if host_is_geth - #use_backend rinkeby if host_is_rinkeby - - default_backend backend-no-match - -backend backend-no-match - http-request deny deny_status 400 - -backend erigon - mode http - balance roundrobin - - option external-check - external-check path "/usr/bin:/bin" - external-check command /usr/local/etc/haproxy/ethereum-healthcheck.sh - http-send-name-header Host - - server rpc-de-1.stakesquid-db.ml rpc-de-1.stakesquid-db.ml:443 check inter 10000 fall 3 rise 2 maxconn 2000 ssl verify none - server rpc-fi-1.stakesquid-db.ml rpc-fi-1.stakesquid-db.ml:443 check inter 10000 fall 3 rise 2 maxconn 2000 ssl verify none backup diff --git a/haproxy/polygon-healthcheck.sh b/haproxy/polygon-healthcheck.sh new file mode 100755 index 00000000..af791e41 --- /dev/null +++ b/haproxy/polygon-healthcheck.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# $1 = Virtual Service IP (VIP) +# $2 = Virtual Service Port (VPT) +# $3 = Real Server IP (RIP) +# $4 = Real Server Port (RPT) +# $5 = Check Source IP + +PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +VIP=$1 +VPT=$2 +RIP=$3 +RPT=$4 +# RPT=8545 + +# Run curl with appropriate options +our_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | printf "%d" $(jq '.result' -r)) +pokt_blockheight=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' https://poly-rpc.gateway.pokt.network 2>/dev/null | printf "%d" $(jq '.result' -r)) + +peers=$(curl -s -X POST -H "Content-Type: application/json" -m 2 -d '{"jsonrpc":"2.0","method":"net_peerCount","params": [],"id":1}' https://$HAPROXY_SERVER_NAME:$RPT/$HAPROXY_PROXY_NAME 2>/dev/null | jq '.result' -r) + +# If any of the above tests failed, then exit 1. +if [[ $our_blockheight -lt $($pokt_blockheight - 10)]]; then exit 1; fi +if [[ `printf "%d" $peers` == "0" || `printf "%d" $peers` == "1" ]]; then exit 1; fi +exit 0 \ No newline at end of file