集群部署方案
服务器说明(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,所以这里集群单机没有区别
