最近在学习微服务架构,里面有用到HAProxy,记录一下学习笔记。官方网站是:https://www.haproxy.org/
推荐使用源码安装,因为我用的ubuntu 20.04中本身自带了这个软件包。我就直接偷个懒。
sudo apt install haproxy
配置
#创建一个主目录,用于保存配置和其他相关内容
mkdir -p /usr/local/haproxy/
#编辑配置文件
nvim /usr/local/haproxy/haproxy.cfg
我的配置文件内容如下:
global
log 127.0.0.1 local0
nbproc 1
maxconnrate 300
maxcomprate 300
maxsessrate 500
chroot /usr/local/haproxy #部署路径
pidfile /usr/local/haproxy/haproxy.pid #pid文件
maxconn 30000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /usr/local/haproxy/stats
defaults
mode tcp
log global
option dontlognull
option redispatch
option http-use-htx
option logasap
option tcplog
retries 3
#timeout http-request 100s
timeout queue 1m
timeout connect 5m
timeout client 5m
timeout server 5m
timeout connect 5m
timeout http-keep-alive 100s
timeout check 10s
maxconn 100000
listen admin_stats
stats enable
bind 0.0.0.0:9999 #监控端口设置
mode http
log global
maxconn 10
stats uri /admin #登录监控子路径配置
stats realm welcome\ Haproxy
stats auth admin:admin #监控的账号密码
stats admin if TRUE
option httplog
stats refresh 30s
stats hide-version
frontend nacos_cluster
bind :9848
mode tcp
log global
option tcplog
option dontlognull
option nolinger
maxconn 8000
timeout client 30s
default_backend nacos_cluster_nodes
backend nacos_cluster_nodes
mode tcp
server nacos-a nacos-cluster-a:9848 check
server nacos-b nacos-cluster-b:9848 check
server nacos-c nacos-cluster-c:9848 check
踩坑提醒: 这里一点要说是一下,注意这里的mode都是使用的tcp的。如果写成http在新版本的nacos 会发现不了服务。
启动haproxy服务#创建haproxy用户(如果不存在,软件安装好可能会默认创建)
useradd haproxy
#启动haproxy服务
haproxy -f /usr/local/haproxy/haproxy.cfg
访问控制台
浏览器访问: http://localhost:9999/admin
因为我在/etc/hosts
中配置了 127.0.0.1 nacos-proxy
所以也可以这样访问: http://nacos-proxy:9999/admin
登录密码就是上面配置文件中配置的信息
stats auth admin:admin # 监控的账号密码
也就是
用户名:admin
密码:admin
重启服务
#查进程
netstat -nptl
#杀进程(略)
#启动
haproxy -f /usr/local/haproxy/haproxy.cfg
参考
https://www.bilibili.com/video/BV1e44y1C7CQ?p=38&spm_id_from=pageDriver