Skip to content

Latest commit

 

History

History
181 lines (148 loc) · 6.64 KB

cicada_deployment.md

File metadata and controls

181 lines (148 loc) · 6.64 KB

Cicada部署

部署拓扑

cicada部署拓扑如下所示。
cicada-deployment.jpg

具体部署步骤请参照下文。

部署步骤

引入客户端依赖

在项目中引入客户端的maven依赖。

<dependency>
</dependency>

目前cicada的RPC拦截是基于alibaba的dubbo(或者dangdang的dubboX)来实现。

数据存储服务部署

MySQL和Elastic集群部署,可自行google,不赘述。
使用MySQL需要初始化数据库、表。比如我们建立一个cicada的数据库,使用 mysql -u user -p password cicada 连接之后,执行scripts目录下的init.sql即可。

source scripts/init.sql

数据收集服务部署

cicada-nginx部署

直接执行到项目根目录下的 cicada-nginx 目录,执行 deploy.sh 即可。

cd cicada-nginx && bash deploy.sh

安装之后,nginx默认会安装到 /opt/yrd_soft/tengine 目录,nginx的配置文件会放到 /etc/tengine 目录下,安装过程需要root权限。

编辑/etc/tengine/conf.d/cicada_collector_infra_9080.conf,可以修改监听端口、消息的存储路径等配置信息。默认监听端口是 9080,消息存储路径是/opt/yrd_logs/tengine/cicada

server {
    listen 9080;
    
    ... other config...

    location /upload {
        lua_need_request_body on;  
        content_by_lua 'local s = ngx.var.request_body';  
        if ($request_method != 'POST') {
            access_log "pipe:/usr/sbin/cronolog /opt/yrd_logs/tengine/access.log.%Y-%m-%d" main;
            return 405;
        }

        access_log "pipe:/usr/sbin/cronolog /opt/yrd_logs/tengine/cicada/record.log.%Y-%m-%d" cicada_record;
    }
}

执行nginx启动命令,指定配置文件即可。

/opt/yrd_soft/tengine/sbin/nginx -c /etc/tengine/nginx.conf

cicada-collector部署

cicada-collector必须部署在每一台部署了cicada-nginx服务的机器上
编译 在cicada目录下,执行编译命令。

bash build.sh local_build

编译之后,cicada-collector的部署包及配置文件会放在./build/cicada-collector目录下。

修改配置并启动 修改application.yml下的配置,提供env_testenv_developmentdev_production三种环境的配置。在run.sh中,默认启用的是env_development配置。


trace:
  # nginx记录的trace日志存储目录,collector从此目录读取消息
  log.root.dir: /opt/yrd_logs/tengine/cicada/
  # 消息读取进度记录文件
  progress.file.path: /opt/yrd_data/cicada/progress.rcd

... others ...

spring:
  profiles: env_development
  datasource:
    platform: mysql
    url: jdbc:p6spy:mysql://127.0.0.1:3306/cicada?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456

elasticsearch:
  cluster.name: cicada_warehouse
  bulk.await.minutes: 10
  node:
    addr: 127.0.0.1
    port: 9300
  index:
    type.name: details
    span.prefix: cicada-span
    annotation.prefix: cicada-annotation

... others ...

修改对应环境的mysql、elasticsearch配置,执行run.sh start启动即可。

数据收集服务高可用架构参考 在生产环境,为保证日志收集服务的可靠性,可以参照如下架构来部署。
cicada-deployment-nginx-ha.jpg

数据统计服务部署

编译
在cicada目录下,执行编译命令。

bash build.sh local_build

编译之后,cicada-web的部署包及配置文件会放在./build/cicada-web目录下。

修改配置并运行

  • 配置方式与cicada-collector差不多。
  • 除了需要配置MySQL、ElasticSearch目录之外,cicada-web的运行还需要配置zookeeper的地址。

修改配置之后,执行run.sh执行即可。

api查看 cicada-web服务默认监听端口是 9880。可以通过在浏览器中输入 http://host:9880/swagger-ui.html查看cicada-web项目的接口列表,如下所示:
cicada-web-swagger.jpg

数据展现

项目下载
cicada-dashboard github地址,将项目checkout下来。

编译
进入cicada-dashboard项目目录,修改src/config.js中的server配置。server地址是部署的cicada-web的地址。比如http://127.0.0.1:9880

修改之后,执行npm run build命令即可。编译输出会放到项目根目录的publish目录下。

部署
因为编译之后的是静态文件,需要配置nginx或apache服务器。假设我们把publish目录下的index.html和bundle.js文件部署到/opt/app/cicada-dashboard目录下,则nginx配置如下:

    location / { 
        root /opt/app/cicada-dashboard/;
        index index.html;
    } 

重启nginx即可生效。

解决CORS(跨域资源请求)问题
通过为cicada-web配置反向代理,解决CORS问题。
假设我们的cicada-web服务部署在192.168.1.10上,可以在nginx中采用如下配置:

    upstream cicada {
        server 10.106.2.59:9880;
    }

    # web部署
    location /cicada/api/v1 {
         # 允许CORS跨域请求
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'false';
            add_header 'Access-Control-Allow-Methods' 'HEAD, GET, POST, PUT, OPTIONS, DELETE'; 
            add_header 'Access-Control-Allow-Headers' 'X-Auth-Username, X-Auth-Password, User-Agent, X-Requested-With, Accept, Content-Type';
            add_header 'Access-Control-Max-Age' 3600;
            return 204;
        }   

        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'false';
        add_header 'Access-Control-Allow-Methods' 'HEAD, GET, POST, PUT, OPTIONS, DELETE'; 
        add_header 'Access-Control-Allow-Headers' 'X-Auth-Username, X-Auth-Password, User-Agent, X-Requested-With, Accept, Content-Type'; 

        #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
        proxy_set_header host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # 代理服务器 upstream
        proxy_pass http://cicada;
        access_log  /opt/yrd_logs/tengine/cicada_web/access.log main;
    }

同时,需要将cicada-dashboardsrc/config.js的server配置修改为反向代理的地址,重新编译打包部署即可。

nginx配置修改之后,需要执行reload操作。