溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時(shí)間:2020-03-03 20:19:34 來源:網(wǎng)絡(luò) 閱讀:2095 作者:Python熱愛者 欄目:編程語言

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

1. 配置Splash服務(wù)

要搭建 Splash 負(fù)載均衡首先我們需要有多個(gè) Splash 服務(wù),假如在這里我在四臺(tái)遠(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,四個(gè)服務(wù)完全一致,都是通過 Docker 的 Splash 鏡像開啟的,訪問任何一個(gè)服務(wù)都可以使用 Splash 服務(wù)。

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

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


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

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

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

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

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

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


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

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

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


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

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

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

sudo nginx-sreload

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

3. 配置認(rèn)證

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


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

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

htpasswd-c.htpasswdadmin

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

cat.htpasswd

admin:5ZBxQr0rCqwbc

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

sudo nginx-sreload

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

4. 測試

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


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

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

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

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

41.159.27.223

第二次的結(jié)果:

41.159.27.9

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

5. 結(jié)語

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


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI