如果我們用 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ù)的壓力。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供祥云網(wǎng)站建設(shè)、祥云做網(wǎng)站、祥云網(wǎng)站設(shè)計(jì)、祥云網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、祥云企業(yè)網(wǎng)站模板建站服務(wù),十余年祥云做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(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)容:
這樣我們通過 upstream 字段定義了一個(gè)名字叫做 splash 的服務(wù)集群配置,least_conn 代表最少鏈接負(fù)載均衡,它適合處理請(qǐng)求處理時(shí)間長短不一造成服務(wù)器過載的情況。
或者我們也可以不指定配置,配置如下:
這樣默認(rèn)以輪詢策略實(shí)現(xiàn)負(fù)載均衡,每個(gè)服務(wù)器的壓力相同,此策略適合服務(wù)器配置相當(dāng),無狀態(tài)且短平快的服務(wù)使用。
另外我們還可以指定權(quán)重,配置如下:
我們通過 weight 指定了各個(gè)服務(wù)的權(quán)重,權(quán)重越高分配到處理的請(qǐng)求越多,假如不同的服務(wù)器配置差別比較大的話,就可以使用此種配置。
最后還有一種 IP 哈希負(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 字段,配置如下:
在這里使用的用戶名密碼配置放置在 /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. 測(cè)試
最后我們可以用代碼來測(cè)試一下負(fù)載均衡的配置,看看到底是不是每次請(qǐng)求會(huì)切換IP,利用 http://httpbin.org/get 測(cè)試即可,代碼實(shí)現(xiàn)如下:
這里的 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ù)載,還是比較有用的。
網(wǎng)站題目:網(wǎng)絡(luò)爬蟲之Splash負(fù)載均衡配置
文章地址:http://chinadenli.net/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)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)