Skip to content

集群部署方案

服务器说明(2web机情况,其他类似)

  • 本文档仅供参考,达到集群部署目的即可,不同运维都有自己的方案,生产环境的要求要复杂于以下文档,具体环境具体对待
  • 软件部署安装具体请参考 linux单机部署方案,集群部署可能不需按照单机部署那样所有软件都需要安装,根据服务器实际需要安装
  • 集群部署机器分配,根据业务需要进行机器配置,不是所有机器都是要一台或者多台服务器,根据你的实际情况来就可以了
  • 服务器信息列表 | 机器 | 安装软件 | 说明 | | --- | --- | --- | | worker | php+supervisor | 队列机器,执行队列相关,默认用的redis队列 | | scheduler | php+supervisor | 定时任务机器 | | web1 | php+nginx | api,vue前端(后台、pc、h5) | | web2 | php+nginx | api,vue前端(后台、pc、h5) | | redis | redis | redis单机,或者第三方如阿里云的redis | | mysql | mysql | 自己安装mysql5.7单机或者集群,或者第三方如阿里云的rds | | 图片存储 | 七牛或者oss | 目前只支持第三方七牛或者阿里OSS云存储 | | 负载均衡 | haproxy | 自己搭建负载均衡服务器或者使用第三方如阿里云的负载均衡服务 |

集群与单机的一些差异化说明

数据库配置

  • env中配置数据库的方式有所改变,如果是自己的部署的数据库集群,参考下面的env配置修改配置就行了
  • 如果用的阿里云的rds集群并且自己控制读写分离,也参照下面配置读写实例和只读实例
  • 如果用的阿里云的rds的代理模式,则按照原来的数据库配置就行,不用特殊指定读写服务器
bash
# 数据库主从配置,根据自己实际情况配置
DB_DRIVER=master_slave
DB_MASTER={"user":"root","password":"123455","host":"localhost","dbname":"ecx"}
DB_SLAVES=[{"user":"root","password":"123455","host":"localhost2","dbname":"ecx"},{"user":"root","password":"123455","host":"localhost3","dbname":"ecx"}]

代码同步

  • 通过git的形式去更新代码,结合pssh命令或者自己写脚本去批量更新每台服务器
  • 通过rsync等工具同步代码

redis集群

  • 如果要求不是特别高,部署一个单机的redis就可以了。
  • 如果使用阿里云的集群,云数据库Redis集群版相比标准版在原生Redis命令的支持上有一定的区别,例如eval是不能用的,由于系统使用了lua脚本,所以阿里redis集群用起来是有问题的

负载均衡

  • 自己安装负载均衡,如用nginx,haproxy等
  • 用第三方如阿里云的负载均衡服务

scheduler机

  • 定时任务机器,跑一些系统的定时任务。如果机器资源不够,也可以和队列机部署在一起

worker机

  • 队列机,跑系统的一些队列,默认用的redis队列

云存储

  • 系统目前只支持七牛云存储和阿里的oss,所以这里集群单机没有区别