伺服器轉發設定
神策分析致力於幫助客戶搭建開放的數據平台,便於客戶更深入的利用數據。本節文件涉及較多技術細節,適用於對相關功能有經驗的用戶參考。如果對文件內容有疑惑,請諮詢您的數據諮詢顧問取得一對一的協助。
1. 快速指引
- 當神策分析處於私有部署的模式時,用戶出於安全、負載均衡、高可用性等方面的考量,通常會需要把神策分析對外的 port 進行二次轉發,再使用自定義的網域名和 port 來連接神策服務,以符合各方面的需求。
- 在轉發設定的同時一般也需要設定 HTTPS,神策建議需要透過外網的情況下都使用 HTTPS 協定,可以參考 HTTPS 接入文件。
- 神策支援多種轉發設定方式:使用公有雲廠商的負載均衡或者硬體負載設備進行服務轉發,也可以選擇獨立部署其它開源應用程式進行服務轉發。以上幾種方式 任選一種 即可。
- 完成上述操作後請 務必 進行 更新神策後台設定 操作,並 驗證轉發正確性。
- 轉發流程圖解:
2. 什麼時候需要進行轉發設定
- 當部署神策分析叢集版時,必須進行轉發設定,以確保數據接入服務的高可用性和負載均衡。
- 當部署神策分析單機版時,如果希望修改接入數據的 port,或者開啟 HTTPS,那麼也可以透過轉發設定來實作。
3. 如何進行轉發設定
下面小節將介紹各種轉發的參考設定,請根據實際情況 選擇其中一種設定方式 即可。推薦使用公有雲廠商的負載均衡 或者 硬體負載設備,如有其它特殊情況請聯繫神策技術支援。
- 使用雲廠商的負載均衡或者硬體負載設備進行服務轉發
- 在非神策伺服器上獨立部署其它開源應用程式進行服務轉發
神策分析對外提供服務 port 列表如下:
協定 | port | 作用 | 注意 |
---|---|---|---|
預設 HTTP | 8106 | 數據接入服務 | 通常情況下都需要允許公共網路連接(如果不使用任何用戶端的 SDK 也可以禁止公共網路連接),且需要考慮頻寬和同時連接數的影響 |
預設 HTTP | 8107 | 後台分析服務 | 通常情況下可以只允許內部網路連接,以便最大限度的確保系統的安全性 |
3.1. 使用公有雲廠商的負載均衡或者硬體負載設備進行服務轉發
- 下文將給出使用負載設備的通用設定,可根據通用設定來設定不同廠商的負載均衡或硬體負載設備。
- 如果是第一次使用公有雲廠商的負載均衡,建議查看 各廠商的官方文件參考,必要時可以給相應廠商提工單詢問。
- 如果依然無法完成轉發設定請聯繫神策技術支援。
3.1.1. 數據接入服務
- 協定預設為 HTTP,如果開啟了 HTTPS,選擇 HTTPS。
- 前端監聽 port 建議選擇 80(HTTP) 或者 443(HTTPS),有特殊需求也可選擇其它自定義的 port。
- 調度算法選擇輪詢或者加權輪詢。
- 開啟會話保持(各雲廠商功能命名可能存在差異,以雲廠商實際情況為準。例如:AWS 的 ELB 該功能名稱黏性會話 “Sticky Sessions”),建議會話保持超時時間設定 3600 秒。
- 選擇透過 X-Forwarded-For 頭欄位取得用戶端真實 IP(各廠商一般預設為啟用)。
- 後端伺服器選擇單機或叢集版的所有機器 8106 port。
健康檢查一般使用預設設定即可。
使用 Logagent 匯入工具需要了解
- 若 Logagent 數據接收網址使用負載均衡網址,例如:公共網路接入的 Logagent 則負載均衡算法需要選擇 ip_hash(各公有雲廠商算法命名方式可能存在差異,以公有雲廠商實際情況為準。例如: UCLoud 的 ULB 對應的 ip_hash 算法名稱為“原始網址”)。
- 在某些情況下,開啟 ip_hash 會導致轉發後接收的數據不均衡,所以 Logagent 盡量不透過負載均衡網址,同一個內網下可以設定所有接收電腦的內網 IP
3.1.2. 後台分析服務
由於一個網域名的同一個 port 無法重複監聽,所以如果數據接入和後台分析服務都想使用相同預設 port (例如:HTTPS 的 443)情況下,只能設定兩個網域名都指向負載均衡,並在負載均衡處透過 HOST 來區分轉發。
- 協定預設為 HTTP,如果開啟了 HTTPS,選擇 HTTPS。
- 前端監聽 port 按實際需求選擇。
- 調度算法選擇輪詢或者加權輪詢。
- 需要開啟會話保持(各雲廠商功能命名可能存在差異,以雲廠商實際情況為準。例如:AWS 的 ELB 該功能名稱為“黏性會話 Sticky Sessions”)。
- 由於存在部分長耗時請求,建議會話保持超時時間設定 1800 秒。
- 後端伺服器選擇單機或叢集版的所有機器 8107 port。
- 健康檢查一般使用預設設定即可。
3.1.3. 公有雲廠商負載均衡設定官方文件參考
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 轉發設定正確。