神策分析致力於幫助客戶搭建開放的數據平台,便於客戶更深入的利用數據。本節文件涉及較多技術細節,適用於對相關功能有經驗的用戶參考。如果對文件內容有疑惑,請諮詢您的數據諮詢顧問取得一對一的協助。

1. 快速指引

2. 什麼時候需要進行轉發設定

  • 當部署神策分析叢集版時,必須進行轉發設定,以確保數據接入服務的高可用性和負載均衡。
  • 當部署神策分析單機版時,如果希望修改接入數據的 port,或者開啟 HTTPS,那麼也可以透過轉發設定來實作


3. 如何進行轉發設定

下面小節將介紹各種轉發的參考設定,請根據實際情況 選擇其中一種設定方式 即可。推薦使用公有雲廠商的負載均衡 或者 硬體負載設備,如有其它特殊情況請聯繫神策技術支援。

  1. 使用雲廠商的負載均衡或者硬體負載設備進行服務轉發
  2. 在非神策伺服器上獨立部署其它開源應用程式進行服務轉發

神策分析對外提供服務 port 列表如下:

協定port作用注意
預設 HTTP8106數據接入服務

通常情況下都需要允許公共網路連接(如果不使用任何用戶端的 SDK 也可以禁止公共網路連接),且需要考慮頻寬和同時連接數的影響

預設 HTTP8107後台分析服務通常情況下可以只允許內部網路連接,以便最大限度的確保系統的安全性

3.1. 使用公有雲廠商的負載均衡或者硬體負載設備進行服務轉發

  • 下文將給出使用負載設備的通用設定,可根據通用設定來設定不同廠商的負載均衡或硬體負載設備。
  • 如果是第一次使用公有雲廠商的負載均衡,建議查看 各廠商的官方文件參考,必要時可以給相應廠商提工單詢問。
  • 如果依然無法完成轉發設定請聯繫神策技術支援。

3.1.1. 數據接入服務

  1. 協定預設為 HTTP,如果開啟了 HTTPS,選擇 HTTPS。
  2. 前端監聽 port 建議選擇 80(HTTP) 或者 443(HTTPS),有特殊需求也可選擇其它自定義的 port。
  3. 調度算法選擇輪詢或者加權輪詢。
  4. 開啟會話保持(各雲廠商功能命名可能存在差異,以雲廠商實際情況為準。例如:AWS 的 ELB 該功能名稱黏性會話 “Sticky Sessions”),建議會話保持超時時間設定 3600 秒。
  5. 選擇透過 X-Forwarded-For 頭欄位取得用戶端真實 IP(各廠商一般預設為啟用)。
  6. 後端伺服器選擇單機或叢集版的所有機器 8106 port。
  7. 健康檢查一般使用預設設定即可。

使用 Logagent 匯入工具需要了解

  • 若 Logagent 數據接收網址使用負載均衡網址,例如:公共網路接入的 Logagent 則負載均衡算法需要選擇 ip_hash(各公有雲廠商算法命名方式可能存在差異,以公有雲廠商實際情況為準。例如: UCLoud 的 ULB 對應的 ip_hash 算法名稱為“原始網址”)。
  • 在某些情況下,開啟 ip_hash 會導致轉發後接收的數據不均衡,所以 Logagent 盡量不透過負載均衡網址,同一個內網下可以設定所有接收電腦的內網 IP

3.1.2. 後台分析服務

由於一個網域名的同一個 port 無法重複監聽,所以如果數據接入和後台分析服務都想使用相同預設 port (例如:HTTPS 的 443)情況下,只能設定兩個網域名都指向負載均衡,並在負載均衡處透過 HOST  來區分轉發。

  1. 協定預設為 HTTP,如果開啟了 HTTPS,選擇 HTTPS。
  2. 前端監聽 port 按實際需求選擇。
  3. 調度算法選擇輪詢或者加權輪詢。
  4. 需要開啟會話保持(各雲廠商功能命名可能存在差異,以雲廠商實際情況為準。例如:AWS 的 ELB 該功能名稱為“黏性會話 Sticky Sessions”)。
  5. 由於存在部分長耗時請求,建議會話保持超時時間設定 1800 秒。
  6. 後端伺服器選擇單機或叢集版的所有機器 8107 port。
  7. 健康檢查一般使用預設設定即可。

3.1.3. 公有雲廠商負載均衡設定官方文件參考

  •  阿里雲:SLB
  •  騰訊雲:CLB
  •  AWS:ELB
  •  UCloud:ULB
  •  華為雲:ELB

3.1.4. 參考本章第四節:更新神策後台設定。

3.1.5. 驗證轉發設定是否正確

3.2. 在非神策伺服器上獨立部署其它開源應用程式進行服務轉發

使用前需注意

  • 從機器成本和人力成本考慮,如非必要神策不建議採用此方案。
  • 需要額外一台或多台(確保高可用)機器來部署開源負載均衡應用,不能部署在神策的機器上。
  • 請自行規劃負載均衡應用所在機器的設定、高可用和監控方案。

下面兩小節將提供基於 Nginx 做負載均衡的 server 段設定,其它設定段請按實際情況自行設定。若使用其他開源應用程式可以此作為參考設定。

3.2.1. 數據接入服務

Nginx server 段參考設定如下:

# 定義數據接入服務的 server
# 預設 port 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.2.2. 後台分析服務

Nginx server段參考設定如下:

# 定義神策後台服務的 server
# 預設 port 是 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.2.3. 參考本章第四節:更新神策後台設定。

3.2.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 轉發設定正確。