部署与启动 #
- 检查部署主机依赖环境是否正确
- Redis可以安装到其他主机上,也可以和系统同主机
- 推荐在
Linux
下部署 - 厂商推送服务不是必要服务,可选择配置
单机部署 #
单机部署比较简单,下载 (opens new window)UPush服务端,解压后放在任意路径,安装好依赖,配置redis地址和密码(本地redis没有密码无需配置),配置服务,把本机地址设置给master和connector的host配置项,下载授权文件放到config下。
- Windows进入UPush所在文件夹,双击
single-run.bat
直接启动,当然也可以在DOS窗口用运行。
# 打开命令行提示符,执行jps,出现以下4个进程表示启动成功
>jps
2560 UPushMain
- Linux或MacOS,打开终端,进入UPush所在目录,参照以下执行,看到4个服务进程表示启动成功
$ ./single-run.sh
$ jps
68162 UPushMain
- 如果无法启动先检查环境是配置正确,也可参照错误排查
厂商推送服务
single-run默认不启动厂商推送,如需启动:./single-run.sh -vendorEnable
集群部署 #
集群部署建议使用Linux系统,以下以Linux为例讲解,当然其他系统也支持集群部署
主机 #
所有主机在同一局域网内,每台主机安装java环境。建议每台主机环境一致,登录用户,UPush放置的位置一致,无论是虚拟机还是docker,可以创建好一个镜像,其他主机都使用这个镜像,有利快速搭建环境和后期维护。
Redis在单独的主机安装,也可以在多台主机上部署Redis集群。参照架构图可以看出Master、Vendor、PushServer各自使用一个Redis(Connector Server不使用redis),也可以是同一个Redis实例的不同库(db配置)
服务 #
- 所有服务都可以水平扩展,运行时动态扩展
- 同一集群内Connector服务数大于等于Push Server数
- 选定负载均衡方案
- 服务编排,参照
部署 #
- 把配置好的UPush,每台主机都拷贝一份,建议每台主机都放到相同目录下,打开终端命令行,cd进入该目录
# 启动脚本举例,在不同的主机上启动指定的服务,运行服务的主机和master.json,servers.json,vendor.json中的配置要相匹配
# 启动master-1
$ ./run.sh -id master-1
# 启动集群1 pushserver-1
$ ./run.sh -id pushserver-1 -cluster cluster-1
# 启动集群2 connector-1
$ ./run.sh -id connector-1 -cluster cluster-2
# 启动vendor-1
$ ./run.sh -id vendor-1
- 可以把启动命令添加到开机自启动中
- 关闭服务
# 关闭脚本举例
# 停止master
$ ./stop.sh master
# 停止pushserver
$ ./stop.sh pushserver
# 停止connector
$ ./stop.sh connector
# 停止vendor
$ ./stop.sh vendor
# 停止当前主机所有服务
$ ./stop.sh
内存控制
可在启动脚本run.sh/run.bat(定位到JAVA_OPTS),调整java虚拟机参数,控制服务内存使用。(可选)
- 可以在管理后台中查看服务状态,关闭服务,重启服务
跨机房部署 #
- 配置servers.json时,要注意配置master,pushserver,vendor server的外网地址
- 厂商推送服务,可以任意部署,部署到中心机房或每个集群中部署都可以
启动错误排查 #
- 查看logs文件夹下的错误日志,但程序启动时的错误有可能未生成日志文件,可通过如下方式查看
- Windows
# 打开run.bat,修改如下内容
set RUN_CMD=start javaw
# 改为,把后台运行改为前台运行
set RUN_CMD=java
# 在DOS窗口,运行指定服务,即可看到报错信息
> run.bat -id master-1
- Linux/MacOS
启动时错误会重定向到文件std_error,可查看此文件。详细错误查看可按照如下方式。
# 打开run.sh,定位到最末,把后台运行改成前台
...
#RUN_CMD="nohup $_java"
RUN_CMD="$_java"
...
#RUN_CMD="$RUN_CMD >> /dev/null 2>std_error &"
...
# 保存修改,在终端运行指定服务,即可看到报错信息,例如
$ ./run.sh -id master-1