1.
架构概览与前期准备
- 确定目标:实现券商业务多节点高可用(交易撮合/行情/风控/报表)。
- 节点分布:至少3个业务节点、2个数据库节点(主从或主主)、2个LB节点、1个监控节点。
- 准备工作:在越南供应商(如Viettel、VNO、DigitalOcean SG/越南邻近节点)购买VPS,建议机型:4核8G起,公网带宽≥100Mbps,低延迟线路。
2.
VPS与网络配置(实际步骤)
- 创建VPS并记录IP与控制台访问。
- 设置系统:以Ubuntu 22.04为例,先更新系统:sudo apt update && sudo apt -y upgrade。
- 配置防火墙与内网:安装ufw并允许必要端口(22, 5432, 5672, 6379, 80/443, 8080等):sudo ufw allow 22/tcp && sudo ufw enable。
- 开启内网或VPC(若供应商支持)以便节点间低延迟互通。
3.
数据库高可用(以PostgreSQL主从为例)
- 主库初始化:在主节点安装postgres:sudo apt install -y postgresql。修改postgresql.conf:wal_level = replica,max_wal_senders = 10,listen_addresses='*'。
- 配置pg_hba.conf允许从库复制:host replication repl_user 从库IP/32 md5。创建复制用户:sudo -u postgres createuser --replication repl_user && sudo -u postgres psql -c "ALTER USER repl_user WITH ENCRYPTED PASSWORD '密码';"。
- 从库同步:停止从库postgres,使用pg_basebackup:pg_basebackup -h 主IP -D /var/lib/postgresql/14/main -U repl_user -P -R。启动从库并检查流复制:SELECT * FROM pg_stat_replication;。
4.
负载均衡与VIP/VRRP实现(HAProxy + keepalived)
- 在两个LB节点安装HAProxy:sudo apt install -y haproxy。示例haproxy.cfg:frontend public bind *:443 mode tcp default_backend app_backends; backend app_backends balance roundrobin server app1 内网IP:443 check ...。
- 安装keepalived实现浮动IP(VRRP):sudo apt install -y keepalived。示例keepalived.conf包含vrrp_instance V1 { state MASTER/SECONDARY interface eth0 virtual_router_id 51 priority 100/90 virtual_ipaddress { 203.0.113.10 } }。
- 启动并验证漂移IP在LB主故障时切换:sudo systemctl restart keepalived && ip addr show确认VIP。
5.
消息队列与缓存(RabbitMQ/Redis高可用)
- RabbitMQ:建议使用三节点集群并启用镜像队列(policy ha-mode all),安装并加入集群:rabbitmqctl join_cluster rabbit@node1。
- Redis:使用Redis Sentinel做哨兵监控主从切换,示例sentinel.conf配置sentinel monitor mymaster 主库IP 6379 2,并配置故障转移脚本。
- 在应用端使用连接字符串支持重试与多个节点以容错。
6.
应用部署与自动化(Docker/K8s + Ansible)
- 若使用Docker:为每个服务写Dockerfile与docker-compose,指定restart: always和健康检查(HEALTHCHECK)。
- 若使用Kubernetes:在越南VPS上可用k3s或RKE,配置多可用区节点、readiness/liveness探针、StatefulSet管理数据库。
- 自动化:用Ansible编写playbook实现批量部署与配置管理,示例命令:ansible-playbook -i hosts deploy.yml。
7.
监控、日志与演练(Prometheus/Grafana + ELK)
- 部署Prometheus抓取应用、节点与DB指标,Grafana做告警面板。配置Blackbox或自定义脚本做健康探测(接口/延迟/丢包)。
- 日志集中:使用Filebeat发送到Elasticsearch或Loki,便于事后审计与异常排查。
- 定期演练:模拟节点宕机、VIP切换、数据库主从切换,记录RTO/RPO并优化。
8.
安全、合规与延迟优化
- 证书:使用私有CA或Let's Encrypt并在LB终端做TLS终止,内网使用mTLS加密服务间流量。
- 减少延迟:开启TCP BBR、调整sysctl(net.core.rmem_max等),使用Keepalive与Nagle关闭策略(TCP_NODELAY)。
- 合规:记录交易日志、访问控制、最小权限原则并备份加密存储。
9.
常见故障处理步骤(问:如何在主DB崩溃时快速恢复?)
问:主数据库崩溃时应立即做什么?
答:先将应用指向只读从库或VIP,开启只读模式;确认从库数据最新,执行promote(pg_ctl promote或删除recovery.conf中standby_mode),验证业务连通性,再重建或修复原主并作为新从加入。
10.
故障切换测试(问:如何验证VIP与keepalived配置有效?)
问:如何做可重复的VIP切换测试?
答:在主LB上sudo systemctl stop keepalived并观察VIP是否迁移到备LB,检查HAProxy后端健康、应用是否无感切换,记录时延与错误率,重复多次覆盖不同故障场景。
11.
部署建议(问:券商在越南VPS上实际部署的关键注意点)
问:在越南VPS部署券商系统最关键的注意事项是什么?
答:优先保证网络链路稳定与低延迟、配置冗余(多节点、多AZ)、实现自动化与演练、加密与审计满足合规,最后通过监控与SLAs持续优化。
来源:越南VPS证券公司专用方案如何满足券商多节点高可用要求