Installing HAProxy
yum install haproxy
is effective for CentOS 7. After installation, you can start the service using systemctl start haproxy
. But don’t rush yet.
Configuring HAProxy
Add the following content to /etc/haproxy/haproxy.cfg.
global # The content of global is generally fixed and quite understandable.
log 127.0.0.1 local2
maxconn 4096
user haproxy
group haproxy
chroot /var/lib/haproxy
daemon
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.sock # Create a socket file for haproxy
nbproc 40 # Start 40 processes to forward concurrently, higher versions can use nbthread, a threaded approach.
defaults # This section is mostly copied, not entirely clear on the options.
log global
mode http
option tcplog
option dontlognull
retries 3
option redispatch
maxconn 1024
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen cdb_cluster 0.0.0.0:3030 # The actual proxy name and address for receiving services.
## cdb balance leastconn - the cluster listening on port 3030.
mode tcp
balance leastconn # This method is most suitable for databases; do not change.
server cdb1 172.16.30.3:26257 check # Check seems to require a port for feedback status; without it, it might not work, but it doesn't matter.
server cdb2 172.16.30.3:26258 check
server cdb3 172.16.30.3:26259 check
server cdb4 172.16.30.3:26260 check
Start and Connect
systemctl start haproxy
to start the service.
psql -Uroot -h127.0.0.1 -p3030 test
to connect to the database.
CockroachDB Official Recommendation
CockroachDB officially provided their recommended configuration. In this configuration, they use:
default
# TCP keep-alive on client side. Server already enables them.
option clitcpka
listen psql
option httpchk GET /health?ready=1
These two configurations, the first is to keep the client connection alive, which seems very useful. The second is a status check port, which I understand might be an option to ensure the service is available before dispatching requests, and it also seems very useful. It is recommended to add them.