Skip to content

3.服务器端接入文档

carlosfu edited this page Mar 13, 2019 · 25 revisions

目录

一、初始化数据库

       导入项目中cachecloud.sql初始化库表结构,默认插入admin超级管理员。

二、CacheCloud项目配置(二进制安装可以跳过这步

       使用了maven作为项目构建的工具,提供了 local.properties和online.properties两套配置作为测试、线上的隔离。 属性配置说明:

属性名 说明 示例
cachecloud.db.url mysql驱动url jdbc:mysql://127.0.0.1:3306/cache-cloud
cachecloud.db.user mysql用户名 admin
cachecloud.db.password mysql密码 admin
web.port spring-boot内嵌tomcat启动端口 测试9999,线上8585(可修改)

更加详细的配置,请参考: 系统配置 请在系统第一次启动后,进入后台管理中对配置进行详细配置,有些配置是比较重要的,例如cachecloud管理机器用到了ssh,配置中涉及到了ssh用户名、密码、端口等等。

三、启动cachecloud系统

1.源码部署:可以进行二次开发和配置修改

(1). 本地启动:
  • 在cachecloud根目录下运行
mvn clean compile install -Plocal
  • 在cachecloud-open-web模块下运行
mvn spring-boot:run
(2). 生产环境
  • 在cachecloud根目录下运行
mvn clean compile install -Ponline
  • 拷贝war包(cachecloud-open-web/target/cachecloud-open-web-1.0-SNAPSHOT.war)到/opt/cachecloud-web下
  • 拷贝配置文件(cachecloud-open-web/src/main/resources/cachecloud-web.conf)到/opt/cachecloud-web下,并改名为cachecloud-open-web-1.0-SNAPSHOT.conf(spring-boot要求,否则配置不生效)
  • 启动方法1(作为系统服务启动,可能存在系统兼容性问题,目前redhat6.5,centos7正常)
sudo ln -s /opt/cachecloud-web/cachecloud-open-web-1.0-SNAPSHOT.war /etc/init.d/cachecloud-web
/etc/init.d/cachecloud-web start 
  • 启动方法2(使用脚本启动,大部分操作系统都正常) 拷贝启动脚本(cachecloud根目录下script目录下的start.sh和stop.sh)到/opt/cachecloud-web下
sh start.sh #如果机器内存不足,可以适当调小:-Xmx和-Xms(默认是4g)
sh stop.sh

2.二进制文件:直接启动

下载对应release版本的环境,例如1.2,将其在/opt下解压,解压后文件目录如下

  • cachecloud-open-web-1.0-SNAPSHOT.war: cachecloud war包
  • cachecloud.sql: 数据库schema,默认数据名为cache_cloud,可以自行修改
  • jdbc.properties:jdbc数据库配置,自行配置
  • start.sh:启动脚本
  • stop.sh: 停止脚本
  • logs:存放日志的目录
默认端口是8585,可以修改start.sh中的server.port进行重置

3. 登录确认

  • (1) 访问:http://127.0.0.1:9999/manage/login (9999是tomcat的端口号,具体要参考第三节中的online.properties和local.properties中的web.port)

  • (2) 如果访问正常,请使用用户名:admin、密码:admin访问系统,跳转到应用列表下:

四、添加机器

1. 运行脚本:

       cachecloud项目中的cachecloud-init.sh(目录:cachecloud-open-web\src\main\resources\script\cachecloud-init.sh)脚本是用来初始化服务器的cachecloud环境,主要工作如下:

  • (a). 创建cachecloud项目用户:因为cachecloud项目的部分功能(redis启动、服务器监控)是通过ssh完成的,所以这里的用户和密码要和项目中的相对应,具体详见第三节。

  • (b). 创建cachecloud项目的工作目录、数据目录、配置目录、日志目录、redis安装目录、临时目录等等。(/opt/cachecloud/data、/opt/cachecloud/conf、/opt/cachecloud/logs、/opt/cachecloud/redis、/tmp/cachecloud)

  • (c). 安装最新的release版本的Redis

2. 脚本执行

  • (a). 使用root登录目标服务器。
  • (b). 将cachecloud-init.sh脚本拷贝到目标服务器当前用户目录下。
  • (c). 执行 sh cachecloud-init.sh ${yourusername}
  • (d). 两次确认密码
  • (e). 一路安装直到成功。

请确保机器和用户名与cachecloud后台中系统配置一致,如下图所示

3. 建议和警告

  • (a). 请在root用户下执行初始化脚本,因为初始化脚本涉及到了用户的创建等较高的权限。
  • (b). 出于安全的考虑,所选的机器最好不要有外网IP地址。
  • (c). 用户名和密码最好不要用cachecloud, 密码尽可能复杂。
  • (d). 机器的ssh端口最好是22。
  • (e). 请确保/opt/有足够的硬盘空间,因为/opt/cachecloud/data要存储RDB和AOF的持久化文件,如果硬盘过小,会造成持久化失败。(如果硬盘确实很小,建议建立一个软链接到/opt/cachecloud/data,且保证软链接的目录也是username用户,一定要保证/opt/cachecloud的目录结构)
  • (f). 脚本中目前使用的是redis-3.0.6,如有需要请自行替换,建议使用3.0 release以后的版本。但是要注意3.2版本中bind的默认是127.0.0.1

五、一些扩展性问题说明

1. 登录权限验证问题

       除了超级管理员admin:admin以外,所有的用户在登录时都要做两项内容的验证:

(1) 公司内部登录扩展

自己实现登陆逻辑:

       通常是本公司的一些登录逻辑,具体实现逻辑可以在com.sohu.cache.web.util.LoginUtil类中实现:

public class LoginUtil {
    private final static Logger logger = LoggerFactory.getLogger(LoginUtil.class);
    public static boolean passportCheck(String username, String password) {
        /**
         * your company login check code
         */
        return true;
    }
}
LDAP接口

1.2版本提供了LDAP接口,这样只需要将LDAP接口进行配置,就可以实现公司内部的登陆验证了,后台系统配置管理:

(2) 是否为cachecloud用户

 需要验证用户是否在app_user表中

2. 报警接口说明

       cachecloud提供了邮件和短信两种形式的报警工具(对于机器内存、负载、cpu以及redis实例健康状态以及一些重要的指标进行监控)。

       各个公司、项目组可以报警接口不尽相同,所以需要自己实现对应的功能,具体参考:

(1)代码实现:

(a) 邮件报警接口实现

  • com.sohu.cache.web.component.EmailComponentImpl (cachecloud-open-web)
  • com.sohu.tv.cachecloud.client.basic.component.EmailComponentImpl(cachecloud-client-basic)
public class EmailComponentImpl implements EmailComponent {
    @Override
    public boolean sendMail(String title, String content, List<String> emailList, List<String> ccList) {
        /**
         * your company send email codes
         */
        return true;
    }
}

(b) 短信报警接口实现

  • com.sohu.cache.web.component.MobileAlertComponentImpl (cachecloud-web-open)
  • com.sohu.tv.cachecloud.client.basic.component.MobileAlertComponentImpl(cachecloud-client-basic)
public class MobileAlertComponentImpl implements MobileAlertComponent {
    @Override
    public void sendPhone(String message, List<String> phoneList) {
        /**
         * your company send shortmessage codes
         */
    }
    ...............................
    
}

(2)接口实现

在1.2版本提供了http接口规范,只要按照规范开发http接口,任何语言都可以。

(a) 邮件:
参数 含义 是否必须
title 邮件标题
content 邮件内容
receiver 收件人列表
cc 抄送人列表

例如我们用python语言按照上面的参数开发了一个http接口

www.xxx.com/emailAlert?title=xx&content=xx&receiver=x&cc=x
(b) 短信:
参数 含义 是否必须
msg 短信内容
phone 手机号列表

例如我们用python语言按照上面的参数开发了一个http接口

www.xxx.com/shortMsgAlert?msg=xx&phone=xx
(c) 修改系统配置:

确认无误后,我们需要把它添加到系统配置修改中即可:

3. 服务器ssh端口问题

       cachecloud默认所有机器的ssh端口是22, 如果你的机器使用的是其他端口,请参考配置修改文档进行修改http://cachecloud.github.io/2016/05/24/CacheCloud%E7%B3%BB%E7%BB%9F%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E/

4. 值班和联系人

       cachecloud有一些页面涉及到联系人和值班人等等,如下图:

如果想自定义,请参考配置修改文档进行修改http://cachecloud.github.io/2016/05/24/CacheCloud%E7%B3%BB%E7%BB%9F%E9%85%8D%E7%BD%AE%E8%AF%B4%E6%98%8E/