網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

如果我們用 Splash 來做 JavaScript 動態(tài)渲染的頁面的抓取的話,如果爬取的量非常大,任務(wù)非常多,如果我們用一個 Splash 服務(wù)來處理的話未免壓力太大了,所以我們可以考慮搭建一個負(fù)載均衡器來把壓力分散到各個服務(wù)器上,這樣相當(dāng)于多臺機(jī)器多個服務(wù)共同參與任務(wù)的處理,可以減小單個 Splash 服務(wù)的壓力。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供祥云網(wǎng)站建設(shè)、祥云做網(wǎng)站、祥云網(wǎng)站設(shè)計、祥云網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、祥云企業(yè)網(wǎng)站模板建站服務(wù),十余年祥云做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

1. 配置Splash服務(wù)

要搭建 Splash 負(fù)載均衡首先我們需要有多個 Splash 服務(wù),假如在這里我在四臺遠(yuǎn)程主機(jī)的 8050 端口上都開啟了 Splash 服務(wù),它們的服務(wù)地址分別為:41.159.27.223:8050、41.159.27.221:8050、41.159.27.9:8050、41.159.117.119:8050,四個服務(wù)完全一致,都是通過 Docker 的 Splash 鏡像開啟的,訪問任何一個服務(wù)都可以使用 Splash 服務(wù)。

2. 配置負(fù)載均衡

接下來我們可以選用任意一臺帶有公網(wǎng) IP 的主機(jī)來配置負(fù)載均衡,首先需要在這臺主機(jī)上裝好 Nginx,然后修改 Nginx 的配置文件 nginx.conf,添加如下內(nèi)容:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

這樣我們通過 upstream 字段定義了一個名字叫做 splash 的服務(wù)集群配置,least_conn 代表最少鏈接負(fù)載均衡,它適合處理請求處理時間長短不一造成服務(wù)器過載的情況。

或者我們也可以不指定配置,配置如下:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

這樣默認(rèn)以輪詢策略實現(xiàn)負(fù)載均衡,每個服務(wù)器的壓力相同,此策略適合服務(wù)器配置相當(dāng),無狀態(tài)且短平快的服務(wù)使用。

另外我們還可以指定權(quán)重,配置如下:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

我們通過 weight 指定了各個服務(wù)的權(quán)重,權(quán)重越高分配到處理的請求越多,假如不同的服務(wù)器配置差別比較大的話,就可以使用此種配置。

最后還有一種 IP 哈希負(fù)載均衡,配置如下:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

服務(wù)器根據(jù)請求客戶端的 IP 地址進(jìn)行哈希計算,確保使用同一個服務(wù)器響應(yīng)請求,這種策略適合有狀態(tài)的服務(wù),如用戶登錄后訪問某個頁面的情形。不過對于 Splash 來說不需要。

我們可以根據(jù)不同的情形選用不同的配置,配置完成后重啟一下 Nginx 服務(wù):

sudo nginx-sreload

這樣直接訪問 Nginx 所在服務(wù)器的 8050 端口即可實現(xiàn)負(fù)載均衡了。

3. 配置認(rèn)證

現(xiàn)在 Splash 是公開訪問的,如果我們不想讓其被公開訪問還可以配置認(rèn)證,仍然借助于 Nginx 即可,可以在 server 的 location 字段中添加一個 auth_basic 和 auth_basic_user_file 字段,配置如下:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

在這里使用的用戶名密碼配置放置在 /etc/nginx/conf.d 目錄,我們需要使用 htpasswd 命令創(chuàng)建,例如創(chuàng)建一個用戶名為 admin 的文件,命令如下:

htpasswd-c.htpasswdadmin

接下就會提示我們輸入密碼,輸入兩次之后,就會生成密碼文件,查看一下內(nèi)容:

cat.htpasswd

admin:5ZBxQr0rCqwbc

配置完成之后我們重啟一下 Nginx 服務(wù),運(yùn)行如下命令:

sudo nginx-sreload

這樣訪問認(rèn)證就成功配置好了。

4. 測試

最后我們可以用代碼來測試一下負(fù)載均衡的配置,看看到底是不是每次請求會切換IP,利用 http://httpbin.org/get 測試即可,代碼實現(xiàn)如下:

網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置

這里的 URL 中的 splash 請自行替換成自己的 Nginx 服務(wù)器 IP,在這里我修改了 Hosts 添加了 splash 別名。

多次運(yùn)行代碼之后可以發(fā)現(xiàn)每次請求的 IP 都會變化:

如第一次的結(jié)果:

41.159.27.223

第二次的結(jié)果:

41.159.27.9

這就說明負(fù)載均衡已經(jīng)成功實現(xiàn)了。

5. 結(jié)語

本節(jié)我們成功實現(xiàn)了負(fù)載均衡的配置,配置了負(fù)載均衡之后可以多個 Splash 服務(wù)共同合作,減輕單個服務(wù)的負(fù)載,還是比較有用的。

網(wǎng)站題目:網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置
文章地址:http://muchs.cn/article44/gphche.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、面包屑導(dǎo)航做網(wǎng)站、自適應(yīng)網(wǎng)站全網(wǎng)營銷推廣、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)