集群设计和实施是一项比较复杂的任务,经常会产生意想不到的问题。在此,笔者将在负载平衡的部署中遇到的一些问题总结出来,希望能对大家有所帮助。
负载失衡
在一个集群内部,如果某一个节点和其它节点相比流量不足,或者总是处于空闲状态,那么说明集群的负载失衡了。这样集群节点的计算资源没有被充分的利用,使得负载均衡的作业分配效率降低。负载均衡算法使用不合适或系统配置不当是产生这个问题的典型原因。
溢出
如果有太多网络流量要处理,就会导致包丢失和发往目的节点的包阻塞,这时就会导致溢出。溢出可能发生在主控平衡器,也可能是在各服务节点。由于平衡器在处理能力上往往比节点要大的多,很可能平衡器的流量很平稳,但是某些较弱的节点溢出;反过来平衡器如果超载,则会导致将要转发的数据流丢失或阻塞。
存储一致性
LVS通过Linux的核心数据包递交程序,按照既定规则将进入集群系统的IP包转发到相应的集群节点进行处理。这里的处理对象是IP网络数据包,而不是具体的磁盘数据。LVS假设所有的集群节点访问同一个可靠的和一致的磁盘共享系统。在效率和容量兼顾的分布式存储环境下,要求每一个节点保存部分数据,而且不同结点的数据互相不交叉或交叉较少,难免出现数据存储不一致的情况。
用户要解决这类问题一般有三种方法,一是使用共享的存储服务器或存储设备进行集中存储;二是采用分布式文件系统,将文件分块存放在不同的节点磁盘上;三是通过人工的手段对访问数据的应用程序进行改写,人为地设定程序的数据访问策略,在应用层实现分布式存储。