我已经使用“服务”模块开发了REST WebAPI。它工作正常。我有一个该API的客户端,该API具有预期的用法,要求我水平扩展我的Drupal实例。请注意,由于我的API的性质,需要大量的CPU和GPU资源,因此我无法使用云服务器。另外,由于我的API的性质,Drupal实例必须在Windows OS上运行。(我的应用程序只需要Win64上可用的软件。)我现在在同一位置上有一个功能强大的服务器,对于这个雄心勃勃的客户端,我计划按以下方式水平扩展硬件:
- 一台运行HaProxy作为前端负载均衡器的CentOS服务器,
- 首先要启动两个服务器,然后根据需要添加更多服务器,以承载Drupal的Windows Server 2008 R2服务器,
- 一台CentOS数据库服务器为多个Drupal实例提供一个数据库,
- 如果DB服务器1死亡,则一台以复制模式运行的CentOS数据库服务器。
我的问题与HaProxy负载平衡器的工作方式有关。我假设由Drupal实例创建的sessionId将彼此唯一。负载平衡器是否查看sessionId并将所有请求路由到生成该sessionId的同一服务器上?如果负载平衡导致每个API请求都转到不同的服务器,REST WebAPI通信将如何工作?WebAPI引用的所有数据是否都必须存储在数据库中,因为我不能确保针对同一资源的多个API请求将被路由到同一Drupal实例?