![负载均衡器后面的两个服务器之间的文件同步](https://linux22.com/image/777931/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E5%90%8E%E9%9D%A2%E7%9A%84%E4%B8%A4%E4%B8%AA%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B9%8B%E9%97%B4%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8C%E6%AD%A5.png)
我有一个最佳实践问题。我们的应用在负载均衡器后面的两台服务器上运行。大多数数据都在一个公共数据库中,用户上传的文件在对象存储中。因此,除了用户通过应用后端生成的一些 YAML 配置文件外,不需要同步太多内容。
保持这些文件同步的最佳做法是什么?我想到的一个解决方案是安装共享卷来托管代码和配置文件。有没有更好的解决方案?
答案1
假设只有一种“最佳实践”是一个陷阱。解决方案永远不止一个。
将配置文件的内容存储在数据库中是一种选择。由某个应用程序管理的 Blob,如果其他程序正在读取,则可能将其写入磁盘。或者更改应用程序以使用 DB 中的离散数据字段而不是 YAML 文档。利用现有的中央数据库,但要求 DB 先可用。
将配置文件存储在包含应用程序的软件包或映像中。通过升级应用程序来部署新配置文件。只有当这些文件由更新应用程序的相同人员或流程更改时才有意义。
按计划或更改将文件从权威副本复制到每个实例。选择文件复制软件、rsync、sftp。如果安装应该是事务性的,则需要一些额外的脚本,即安装所有文件或不安装任何文件。
安装网络文件共享。请注意,如果 NFS 或 SMB 共享以非计划的方式断开连接,则可能会导致性能问题。