用splash做頁面抓取時,如果爬取的量非常大,任務非常多,用乙個splash服務來處理的話,未免壓力太大了,此時可以考慮搭建乙個負載均衡器來把壓力分散到各個伺服器上。這相當於多台機器多個服務共同參與任務的處理,可以減小單個splash服務的壓力。
要搭建splash負載均衡,首先要有多個splash服務。假如這裡在4臺遠端主機的8050埠上都開啟了splash服務,它們的服務位址分別為41.159.27.223:8050、41.159.27.221:8050、41.159.27.9:8050和41.159.117.119:8050,這4個服務完全一致,都是通過docker的splash映象開啟的。訪問其中任何乙個服務時,都可以使用splash服務。
接下來,可以選用任意一台帶有公網ip的主機來配置負載均衡。首先,在這台主機上裝好nginx,然後修改nginx的配置檔案nginx.conf,新增如下內容:
}}複製**這樣我們通過upstream
字段定義了乙個名字叫作splash
的服務集群配置。其中least_conn
代表最少鏈結負載均衡,它適合處理請求處理時間長短不一造成伺服器過載的情況。
當然,我們也可以不指定配置,具體如下:
upstream splash 複製**
這樣預設以輪詢策略實現負載均衡,每個伺服器的壓力相同。此策略適合伺服器配置相當、無狀態且短平快的服務使用。
另外,我們還可以指定權重,配置如下:
upstream splash 複製**
這裡weight
引數指定各個服務的權重,權重越高,分配到處理的請求越多。假如不同的伺服器配置差別比較大的話,可以使用此種配置。
最後,還有一種ip雜湊負載均衡,配置如下:
upstream splash 複製**
伺服器根據請求客戶端的ip位址進行雜湊計算,確保使用同乙個伺服器響應請求,這種策略適合有狀態的服務,比如使用者登入後訪問某個頁面的情形。對於splash來說,不需要應用此設定。
我們可以根據不同的情形選用不同的配置,配置完成後重啟一下nginx服務:
sudo nginx -s reload複製**
這樣直接訪問nginx所在伺服器的8050埠,即可實現負載均衡了。
現在splash是可以公開訪問的,如果不想讓其公開訪問,還可以配置認證,這仍然借助於nginx。可以在server
的location
欄位中新增auth_basic
和auth_basic_user_file
字段,具體配置如下:
}}複製**這裡使用的使用者名稱和密碼配置放置在/etc/nginx/conf.d目錄下,我們需要使用htpasswd
命令建立。例如,建立乙個使用者名為admin
的檔案,相關命令如下:
htpasswd -c .htpasswd admin複製**
接下來就會提示我們輸入密碼,輸入兩次之後,就會生成密碼檔案,其內容如下:
cat .htpasswd
admin:5zbxqr0rcqwbc複製**
配置完成後,重啟一下nginx服務:
sudo nginx -s reload複製**
這樣訪問認證就成功配置好了。
最後,我們可以用**來測試一下負載均衡的配置,看看到底是不是每次請求會切換ip。利用測試即可,實現**如下:
print(ip)複製**這裡url中的splash字串請自行替換成自己的nginx伺服器ip。這裡我修改了hosts,設定了splash為nginx伺服器ip。
多次執行**之後,可以發現每次請求的ip都會變化,比如第一次的結果:
41.159.27.223複製**
第二次的結果:
41.159.27.9複製**
這就說明負載均衡已經成功實現了。
本節中,我們成功實現了負載均衡的配置。配置負載均衡後,可以多個splash服務共同合作,減輕單個服務的負載,這還是比較有用的。
數學的遊戲,我也來試試
問題 17世紀法國數學家加斯帕在 數學的遊戲問題 中講的乙個故事 n個教徒和n個非教徒在深海上遇險,必須將一半的人投入海中,其餘的人才能倖免於難,於是想了個辦法 2n個人圍成乙個圓圈,從第乙個人開始依次迴圈報數,每數到第九個人就將他扔入大海,如此迴圈直到僅剩n個人為止 問怎樣的排法,才能使每次投入大...
聽說發博有積分拿我來試試
你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展示 全新的ka...
j我來試試能不能得積分
建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...