高可用架构是确保IT系统在各个组件发生故障时仍能持续运行所必需的。主要原则是通过冗余、负载均衡和故障转移来消除单点故障。
传统的高可用系统架构包括服务器集群、复制的数据库、负载均衡器和监控系统。对于大型系统,采用地理分布性——在不同的数据中心放置副本。
以下是带有多个上游的nginx配置示例:
upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; least_conn; } server { listen 80; server_name example.com; location / { proxy_pass http://backend; } }
关键特点:
如果数据库被复制,是否可以始终保证副本之间的数据一致性?
不,可以保证的数据一致性取决于所选的复制模型(强一致性/最终一致性)。例如,对于最终一致性,同步延迟可能导致某些副本出现“过时”数据。
负载均衡器能否自行修复后端不可用的问题?
不,负载均衡器只能将故障的服务器从池中排除,而不能修复它。为实现自动恢复,需要使用额外的服务(如Kubernetes类型的编排系统)。
仅仅设置服务器集群就足够实现高可用性吗?
不,还需要关注网络基础设施、存储和其他堆栈组件的高可用性。任何部分的规划错误都可能危及整个系统。