神策分析致力于帮助客户搭建开放的数据平台,便于客户更深入的利用数据。本节文档涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询您的数据咨询顾问获取一对一的协助。

1. 快速指引

2. 什么时候需要进行转发配置

  • 当部署神策分析集群版时,必须进行转发配置,以保证数据接入服务的高可用和负载均衡。
  • 当部署神策分析单机版时,如果希望修改接入数据的端口,或者开启 HTTPS,那么也可以通过转发配置来实现。 


3. 如何进行转发配置

下面小节将介绍各种转发的参考配置,请根据实际情况 选择其中一种配置方式 即可。推荐使用云厂商的负载均衡 或者 硬件负载设备,如有其它特殊情况请联系神策技术支持。

  1. 使用云厂商的负载均衡或者硬件负载设备进行服务转发
  2. 使用神策服务的 Nginx 进行服务转发
  3. 独立部署其它开源应用进行服务转发

神策分析对外提供服务端口列表如下:

协议端口作用注意
默认 HTTP8106数据接入服务通常情况下都需要允许公网访问(如果不使用任何客户端的 SDK 也可以禁止公网访问),且需要考虑带宽和并发连接数的影响
默认 HTTP8107后台分析服务通常情况下可以只允许办公网访问,以便最大限度的保证系统的安全性

3.1. 使用云厂商的负载均衡或者硬件负载设备进行服务转发

  • 下文将给出使用负载设备的通用配置,可根据通用配置来配置不同厂商的 LB 或硬件负载设备。
  • 如果是第一次使用云商的负载均衡,建议查看 各厂商的官方文档参考,必要时可以给相应厂商提工单询问。
  • 如果依然无法完成转发配置请联系神策技术支持。

3.1.1. 数据接入服务

  1. 协议默认为 HTTP,如果开启了 HTTPS,选择 HTTPS。
  2. 前端监听端口建议选择 80(HTTP) 或者 443(HTTPS),有特殊需求也可选择其它自定义的端口。
  3. 调度算法选择轮询或者加权轮询。
  4. 开启会话保持(各云厂商功能命名可能存在差异,以云厂商实际情况为准。例如:AWS 的 ELB 该功能名称为粘性会话 “Sticky Sessions”),建议会话保持超时时间设置 3600 秒。
  5. 选择通过 X-Forwarded-For 头字段获取客户端真实 IP(各厂商一般默认为启用)。
  6. 后端服务器选择单机或集群版的所有机器 8106 端口。
  7. 健康检查一般使用默认配置即可。

使用 Logagent 导入工具需要了解

  • 若 Logagent 数据接收地址使用负载均衡地址,例如:公网接入的 Logagent 则负载均衡算法需要选择 ip_hash(各云厂商算法命名方式可能存在差异,以云厂商实际情况为准。例如: UCLoud 的 ULB 对应的 ip_hash 算法名称为“源地址”)。
  • 在某些情况下,开启 ip_hash 会导致转发后接收的数据不均衡,所以 Logagent 尽量不通过负载均衡地址,同一个内网下可以配置所有接收机器的内网 IP

3.1.2. 后台分析服务

由于一个域名的同一个端口无法重复监听,所以如果数据接入和后台分析服务都想使用相同默认端口(例如:HTTPS 的 443)情况下,只能配置两个域名都指向负载均衡,并在负载均衡处通过 HOST 来区分转发。

  1. 协议默认为 HTTP,如果开启了 HTTPS,选择 HTTPS。
  2. 前端监听端口按实际需求选择。
  3. 调度算法选择轮询或者加权轮询。
  4. 需要开启会话保持(各云厂商功能命名可能存在差异,以云厂商实际情况为准。例如:AWS 的 ELB 该功能名称为“粘性会话 Sticky Sessions”)。
  5. 由于存在部分长耗时请求,建议会话保持超时时间设置 1800 秒。
  6. 后端服务器选择单机或集群版的所有机器 8107 端口。
  7. 健康检查一般使用默认配置即可。

3.1.3. 云厂商负载均衡配置官方文档参考

  •  阿里云:SLB
  •  腾讯云:CLB
  •  亚马逊云:ELB
  •  UCloud:ULB
  •  华为云:ELB

3.1.4. 参考本章第四节:更新神策后台配置。

3.1.5. 校验配置是否正确

3.2. 使用神策服务的 Nginx 进行服务转发

  若为 单机版 部署,可直接在神策分析的 Nginx 上配置服务转发。

此方案可能会对机器造成性能压力,注意评估服务器负载情况。建议优先选用云厂商的负载均衡或者硬件负载设备进行服务转发。

3.2.1. QuickStart

  1. 登录部署神策分析机器:

    # 切换到 sa_cluster 用户
    su - sa_cluster
    BASH
  2. 切换到部署 Nginx 的配置目录:

    cd $SENSORS_PLATFORM_HOME/nginx/conf.d
    BASH
  3. cp -a ${根据下表选择相应的配置文件}.conf.default ${根据下表选择相应的配置文件}.conf

    模版文件名描述
    sensors_api_http.conf.defaulthttp 协议的数据接入服务转发配置参考模版
    sensors_api_https.conf.defaulthttps 协议的数据接入服务转发配置参考模版
    sensors_web_http.conf.default

    http 协议的后台分析服务转发配置参考模版

    sensors_web_https.conf.defaulthttps 协议的后台分析服务转发配置参考模版
  4. vim 按照配置文件中的注释修改即可,注意数据接入和后台分析都需要配置

    使用神策 Nginx 进行转发时,端口选择的注意事项

    • 建议数据接入服务、后台分析服务分别对应两个域名;
    • 为避免与已有的神策服务端口冲突,数据接入服务、后台分析服务域名不同的情况下,访问端口建议选择默认端口:http 协议默认端口为 80,https 协议默认端口为 443;
    • 数据接入服务、后台分析服务域名相同的情况下,不同服务需要对应不同端口。选定端口前,请先检查端口是否已被神策服务占用。检查方法:netstat -na |grep 端口号 ,若无结果输出则端口未被占用。
  5. 检查 Nginx 配置,在 Nginx 目录下执行如下命令测试配置是否正确:

    cd $SENSORS_PLATFORM_HOME/nginx/ 
    sudo sbin/nginx -t
    BASH

    如果出现如下提示说明配置正确:

    nginx: the configuration file ./conf/nginx.conf syntax is ok
    nginx: configuration file ./conf/nginx.conf test is successful

    若有报错请按照报错提示修改后重新检测

  6. 配置测试并检查无误后,在 Nginx 目录下执行如下命令使 Nginx 重新加载配置: 

    cd $SENSORS_PLATFORM_HOME/nginx/ 
    sudo sbin/nginx -s reload
    BASH

3.2.2. 参考本章第四节:更新神策后台配置。

3.2.3. 校验配置是否正确

3.3. 独立部署其它开源应用进行服务转发

使用前需注意

  • 从机器成本和人力成本考虑,如非必要神策不建议采用此方案。
  • 需要额外一台或多台(确保高可用)机器来部署开源负载均衡应用,不能部署在神策的机器上。
  • 请自行规划负载均衡应用所在机器的配置、高可用和监控方案。

下面两小节将提供基于 Nginx 做负载均衡的 server 段配置,其它配置段请按实际情况自行配置。若使用其他开源应用可以此作为参考配置。

3.3.1. 数据接入服务

Nginx server 段参考配置如下:

 Click here to expand...
# 定义数据接入服务的 server
# 默认端口 8106。
upstream sensors_data_api {
# 若是单机版,只需要留下一个 server; 若是集群版,需要把 ip 地址改成每个节点的内网地址
server 10.0.0.1:8106; # 这里需要改: 只需把 10.0.0.1 改成对应的ip地址
server 10.0.0.2:8106; # 这里需要改: 只需把 10.0.0.2 改成对应的ip地址
server 10.0.0.3:8106; # 这里需要改: 只需把 10.0.0.3 改成对应的ip地址 
# 必须使用 ip_hash 以保证数据接入顺序
ip_hash;
keepalive 100;
}

# 转发数据接入服务
server {
# 转发之后的端口号,可自定义
listen 80;
# 域名,根据实际情况填写
server_name xxx.yyy.zzz;
access_log off;

# 以下配置如果开启 ssl 则需要
# ssl on; # 开启 ssl
# ssl_certificate     /etc/ssl/server.crt; # 配置 ssl 证书信任链,路径以实际为准
# ssl_certificate_key /etc/ssl/server.key; # 配置 ssl 私钥,路径以实际为准
# 其他 ssl 参数可以参考 https://mozilla.github.io/server-side-tls/ssl-config-generator/ ,例如:
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# ssl_prefer_server_ciphers on;
# ssl_session_timeout 5m;
# ssl_session_cache shared:SSL:50m;
# 以上 ssl 配置可视情况添加、修改

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://sensors_data_api;
proxy_ignore_client_abort on;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
}
CODE

3.3.2. 后台分析服务

Nginx server段参考配置如下:

 Click here to expand...
# 定义神策后台服务的 server
# 默认端口是 8107
upstream sensors_data_web {
# 若是单机版,只需要留下一个 server ,若是集群版,需要把 ip 地址改成没个节点的内网地址
server 10.0.0.1:8107; # 这里需要改: 只需把 10.0.0.1 改成对应的ip地址
server 10.0.0.2:8107; # 这里需要改: 只需把 10.0.0.2 改成对应的ip地址
server 10.0.0.3:8107; # 这里需要改: 只需把 10.0.0.3 改成对应的ip地址
ip_hash;
}

# 转发神策后台界面
server {
# 端口号,可自定义
listen 80;
# 域名,根据实际情况填写
server_name xxx.yyy.zzz;
access_log off;

# 以下配置如果开启 ssl 则需要
# ssl on; # 开启 ssl
# ssl_certificate     /etc/ssl/server.crt; # 配置 ssl 证书信任链,路径以实际为准
# ssl_certificate_key /etc/ssl/server.key; # 配置 ssl 私钥,路径以实际为准
# 其他 ssl 参数可以参考 https://mozilla.github.io/server-side-tls/ssl-config-generator/ ,例如:
# ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
# ssl_prefer_server_ciphers on;
# ssl_session_timeout 5m;
# ssl_session_cache shared:SSL:50m;
# 以上 ssl 配置可视情况添加、修改

location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 1800s;
proxy_redirect http://sensors_data_web:8107 .;
proxy_pass http://sensors_data_web;
proxy_ignore_client_abort on;
}
}
CODE

3.3.3. 参考本章第四节:更新神策后台配置。

3.3.4. 校验配置是否正确

4. 更新神策后台配置

在进行服务转发配置之后,神策后台需要知道转发之后的地址,否则会影响部分功能的使用,包括:

  • 埋点代码生成功能
  • 渠道管理功能

假设进行转发配置之后的地址是(以下地址仅为示例,请以自己环境实际的地址为准):

  • 数据接入地址:http://datasink.cloud.sensorsdata.cn:8106/ (不含任何二级路径或参数)。
  • 后台分析地址:http://web.cloud.sensorsdata.cn:8107/ (不含任何二级路径或参数)。
  • 配置了 HTTPS 还需要配置相应 HTTPS URL:
    • 数据接入地址:https://datasink.cloud.sensorsdata.cn/
    • 后台分析地址:https://web.cloud.sensorsdata.cn/

那么更新相关配置的操作方式如下:

注意:以下所有地址均为示例地址,需要根据您真实的数据接收地址进行配置

# 登录到任意一台神策服务节点并切换到神策管理账号
su - sa_cluster
# 更新 HTTP 数据接入服务地址
spadmin config set global -n data_sink_url -v "http://datasink.cloud.sensorsdata.cn:8106/"
# 更新 HTTP 后台分析服务地址
spadmin config set global -n web_url -v "http://web.cloud.sensorsdata.cn:8107/"
# 更新 HTTPS 数据接入服务地址,如有
spadmin config set global -n secure_data_sink_url -v "https://datasink.cloud.sensorsdata.cn/"
# 更新 HTTPS 后台分析服务地址,如有
spadmin config set global -n secure_web_url -v "https://web.cloud.sensorsdata.cn/"
# 重启服务
spadmin restart -m web -p sa
BASH

检查相关配置的操作方式如下,注意 HTTP 和 HTTPS 的区别:

# 登录到任意一台神策服务节点并切换到神策管理账号
su - sa_cluster
# 检查 HTTP 数据接入服务地址
spadmin config get global -n data_sink_url
# 检查 HTTP 后台分析服务地址
spadmin config get global -n web_url
# 检查 HTTPS 数据接入服务地址,如有
spadmin config get global -n secure_data_sink_url
# 检查 HTTPS 后台分析服务地址,如有
spadmin config get global -n secure_web_url
BASH

5. 如何验证转发配置是否正确 

  • 浏览器直接访问转发到 8107 的 URL,如果能正常返回神策登录的界面,证明 8107 转发配置正确。
  • 获取数据接收地址加 /debug (例如:https://datasink.cloud.sensorsdata.cn/debug)在浏览器中直接访问,如返回“Sensors Analytics is ready to receive your data!” ,证明 8106 转发配置正确。