1. 程式人生 > >Impala負載均衡方案

Impala負載均衡方案

概述

Impala分為是三個元件,statestored/catalogd和impalad,其中statestored和catalogd是單點的,沒有高可用的需求,因為這兩個例項是無狀態的,本身不儲存任何資料,例如catalogd的資料儲存在第三方資料庫(例如mysql中),statestore的資料全都儲存在記憶體中,可以通過簡單的主備的方式來實現高可用,本文最後會提到。正常情況下只有master提供服務,slave只是執行狀態但是不接受任何請求,當master出現問題之後再slave提升為master提供服務。

而對於impalad節點,每一個節點都可以提供jdbc和thrift等服務,並且對於連線到該impalad的查詢作為coordinator節點(需要消耗一定的記憶體和CPU)存在,為了保證每一個節點的負載的平衡需要對於這些impalad做一下均衡,負載均衡分為四層負載均衡和七層負載均衡,前者是針對運輸層的,後者是針對應用層的,區別在於前者不需要了解應用協議,只需要對傳輸層收到的IP資料包進行轉發,而後者需要了解應用協議的,而對於impalad這種SQL伺服器,就需要使用SQL協議的代理,所以七層代理對於impalad是有點不切實際的。

下面以haproxy作為四層代理伺服器來說明如何對impalad節點進行load balance。官方推薦的代理方案參見該文件

除了本文件提到的使用 load-balancing proxy server外,最簡單的方案莫過於使用DNS做負載均衡,但是DNS的效能一般,所以這裡我們按照官方的建議使用haproxy實現四層的負載均衡,相對於通常的負載均衡的實現,這裡我們還需要拷貝kerberos的支援。

impalad負載均衡

make TARGET=generic

構建完成之後會在當前目錄下生成haproxy可執行檔案,然後關鍵的是對haproxy進行配置,可以參考如下配置檔案:

cat etc/haproxy.cfg
global
    log 127.0.0.1 local0
    uid 71488
    gid 1003
    deamon
    pidfile /path/to/haproxy/pid/haproxy.pid
    maxconn 65536

defaults
    backlog 2048
    balance roundrobin
    log global
    mode tcp
    stats enable
    stats refresh 5s
    retries 3
    timeout connect 120s
    timeout client 600s
    timeout server 600s

listen impala_ha
    bind 0.0.0.0:8006
    mode tcp 

    balance roundrobin
    server impala1 hadoop461.lt.server.org:21050 check
    server impala2 hadoop462.lt.server.org:21050 check
    server impala3 hadoop463.lt.server.org:21050 check
    server impala4 hadoop464.lt.server.org:21050 check
    server impala5 hadoop465.lt.server.org:21050 check

這裡只配置了一個負載均衡代理impala的hs2服務,監聽在本機的8006埠,代理模式為tcp,也就是四層代理,使用roundrobin的方式輪詢後端伺服器,這裡使用了五臺後端impalad節點,分別轉發到impalad的hive server服務,除了對這個服務進行負載均衡,還可以對其他的服務進行負載均衡,只需要新增一個listen配置就可以了。還需要注意的是uid和gid分別是當前的使用者id和組id。

配置好配置檔案之後,啟直接啟動haproxy:

./haproxy -f ./etc/haproxy.cfg 

此時haproxy如果沒出現什麼問題就會以daemon的方式啟動,此時通過beline或者jdbc程式碼就可以通過訪問haproxy_host:8006來訪問impala了。

kerberos配置

但是對於配置了kerberos認證的叢集,還需要額外的處理,因為對於開啟kerberos的impala使用的url格式為:jdbc:hive2://haproxy_host:8006/default;principal=impala/${hostname}@realm;而一般情況下不同的impalad節點使用相同的impala.keytab,但是使用不同的impala principal,例如 hadoop461.lt.server.org使用的principal是impala/[email protected],而hadoop462.lt.server.org使用的principal是impala/[email protected],由於在建立impala連線的時候只能在url中指定一個principal的配置,這樣就導致建立連線的時候會出現null異常(應該是空指標了)。

所以我們需要做的是如果將不同的impalad識別的principal設定成相同的,在impalad的引數中存在兩個關於principal的:-principal和-be_principal,前者設定的是外部連線使用的principal,也就是url中需要填的,後者是impalad和其它節點通訊使用的principal,因此可以通過如下的處理方式修改principal:

  • 建立一個新的proxy.keytab,假設它的principal是proxy/[email protected]
  • 執行如下操作分別將不同impalad使用的的impala.keytab合併成一個keytab,這樣使用同一個keytab可以對應兩個principal,分別是:proxy/[email protected]和impala/${hostname}@realm

    ktutil 
    ktutil:  rkt proxy.keytab 
    ktutil:  rkt impala.keytab 
    ktutil:  wkt proxy_impala.keytab
    ktutil:  quit
    
  • 然後將合併之後的proxy_impala.keytab分別拷貝到對應的impalad機器上,通常需要將其設定為400,只有當前使用者可讀,防止其他使用者使用該keytab非法訪問。

  • 分別重啟每一個impalad節點,使用如下的kerberos配置引數:

    --principal=impala/${hostname}@realm
    --be_principal=proxy/[email protected]
    --keytab_file=path_to_proxy_impala.keytab
    

重新建立到proxy伺服器的jdbc連線,It works!

總結

最後,haproxy本身又是一個單點服務,可以在它之上再做一個高可用配置,類似於statestored和catalogd服務,他們的需求都是主備配置,所有的服務由主節點提供,當主節點掛了之後備節點提升為主節點服務,這種工作通常使用keepalived完成。

本文介紹了impala叢集所有服務的高可用方案,尤其是impalad配置高可用服務的流程。

相關推薦

Impala負載均衡方案——zookeeper

由來 之前根據Impala官方的文件嘗試使用haproxy實現impalad節點的負載均衡,但是這種方案存在一些弊端,例如haproxy本身也是單點的,雖然可以通過keeplived實現haproxy的高可用,但是這樣的配置難免有點太重了,實現impala負載

Impala負載均衡方案

概述 Impala分為是三個元件,statestored/catalogd和impalad,其中statestored和catalogd是單點的,沒有高可用的需求,因為這兩個例項是無狀態的,本身不儲存任何資料,例如catalogd的資料儲存在第三方資料庫(例如

負載均衡方案(摘抄)

負載均衡 反向代理 1、負載均衡之DNS域名解析DNS(Domain Name System)是因特網的一項服務,它作為域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便的訪問互聯網。人們在通過瀏覽器訪問網站時只需要記住網站的域名即可,而不需要記住那些不太容易理解的IP地址。在DNS系統中有

負載均衡方案(摘抄)

負載均衡 ip dns 反向代理 負載均衡之DNS域名解析 DNS(Domain Name System)是因特網的一項服務,它作為域名和IP地址相互映射的一個分布式數據庫,能夠使人更方便的訪問互聯網。人們在通過瀏覽器訪問網站時只需要記住網站的域名即可,而不需要記住那些不太容易理解的IP地

基於滴滴雲DC2+Nginx搭建負載均衡方案

Nginx是一款輕量級、高效能的Web伺服器,專為高流量應用場景而設計。 本文主要介紹它的健康檢查和負載均衡機制。健康檢查和負載均衡是相輔相成,健康檢查能夠及時標記出服務異常的後端RS,使得資料面負載到可用的RS上,提高系統的可靠性和高可用。 Nginx支援豐富的第三方模組,這裡示例

Redis快取叢集及叢集負載均衡方案設計

快取模組設計 採用分散式快取: 說明: (1)Web伺服器端只負責呼叫介面獲取/更新資料,不必關心業務資料處理; (2)介面負責具體的資料處理,包括快取資料的寫入/更新; (3)快取叢集用於快取伺服器宕機後,資料仍然高可用。 快取寫入規則

大資料時代下的SQL Server第三方負載均衡方案----Moebius測試

一.本文所涉及的內容(Contents) 二.背景(Contexts)   前幾天在SQL Server MVP宋大俠(宋沄劍)的一篇文章"資料庫叢集技術漫談”中看到了格瑞趨勢在SQL Server上的負載均衡產品Moebius,搞資料庫的都知道:在Oracle上有RAC,MySQL也有對應的方案(可

Windows下高可靠性網路負載均衡方案NLB+ARR

序言 在上一篇配置iis負載均衡中我們使用啦微軟的ARR,我在那篇文章也中提到了網站的高可用性,但是ARR只能做請求入口的訊息分發服務,這樣如果我們的訊息分發伺服器給down掉啦,那麼做再多的應用服務叢集也都枉然。 這篇文章我主要針對解決這一問題來做分析,引入NLB,相對於ARR來說,ARR算是應用級別的

Windows下應用級別的IIS負載均衡方案 Application Request Route

序言 隨著公司業務的發展,後臺業務就變的越來越多,然而伺服器的故障又像月經一樣,時不時的洶湧而至,讓我們防不勝防。那麼後臺的高可用,以及伺服器的處理能力就要做一個橫向擴充套件的方案,以使後臺業務持續的穩定可用,平復人心。 由於我們的後臺業務,清一色都是.net應用程式,加上總監的一致推薦,我們的負載均衡其

Haproxy + keepalived 高可用負載均衡解決方案

haproxy + keepalived文檔作者:amunlinux文檔版本:Version 1.1修改記錄:2017-04-22系統環境:CentOS 6.8 64 bitIP 信息列表: 名稱 IP -----------------------------------VIP 192.1

Nginx負載均衡4種方案

nginx配置 another 服務器 nginx負載均衡 address 第一個 session 添加 後端 1、輪詢 輪詢即Round Robin,根據Nginx配置文件中的順序,依次把客戶端的Web請求分發到不同的後端服務器。 配置的例子如下:http{ up

負載均衡集群中的session解決方案

集群 負載均衡 解決方案 前言在我們給Web站點使用負載均衡之後,必須面臨的一個重要問題就是Session的處理辦法,無論是PHP、Python、Ruby還是Java,只要使用服務器保存Session,在做負載均衡時都需要考慮Session的問題。分享目錄:問題在哪裏?如何處理?會話保持(案例:N

「mysql優化專題」高可用性、負載均衡的mysql集群解決方案(12)

格式 return 建議 處理方式 sage 主機 等待 status 深度 一、為什麽需要mysql集群? 一個龐大的分布式系統的性能瓶頸中,最脆弱的就是連接。連接有兩個,一個是客戶端與後端的連接,另一個是後端與數據庫的連接。簡單如圖下兩個藍色框框(其實,這張圖是我在悟空

域名到站點的負載均衡技術一覽(主要是探討一臺Nginx抵禦大並發的解決方案)(轉)

零成本 參考 硬件 名詞 virt 很好 web 常見 .com 繼上一篇文章Http://www.cnblogs.com/EasonJim/p/7807794.html中說到的,Nginx雖然很強大,但是面對大並發時,一臺Nginx總是有限的。即使後端有多臺Nginx組成

apache分別基於三種方案實現tomcat的代理、負載均衡及會話綁定

tomcat apacheapache分別基於mod_proxy_ajp, mod_proxy_http, mod_jk三種方案實現代理、負載均衡、會話綁定及Tomcat session cluster1、nginx, haproxy, apache(mod_proxy_ajp, mod_proxy_http

負載均衡架構方案

gpo 輪詢 cal beat nginx big-ip 架構 linu linux集群 負載均衡器 1、硬件負載均衡 F5 BIG-IP Citrix NetScaler Array 2、軟件負載均衡 LVS Nginx及HAProxy 3、高可用軟件 Hear

架構設計:負載均衡層設計方案負載均衡技術總結篇

error_log 基於 地址映射 高可用 lvs-dr模式 緩解 映射 node yum 前言 1、概述 通過前面文章的介紹,並不能覆蓋負載均衡層的所有技術,但是可以作為一個引子,告訴各位讀者一個學習和使用負載均衡技術的思路。雖然後面我們將轉向“業務層”和“業務通信”層的

企業級開源四層負載均衡解決方案--LVS 高清無密 百度網盤

簡介 進行 規劃 詳細介紹 存在 keepaliv get 服務器 應用 企業級開源四層負載均衡解決方案--LVS 本課程將在Linux環境下,學習配置使用LVS,對Web集群和MySQL集群進行負載均衡,並結合利用Keepalived實現負載均衡器的高可用,實現對後端Re

域名到站點的負載均衡技術一覽(主要是探討一臺Nginx抵禦大併發的解決方案)(轉)https://www.cnblogs.com/EasonJim/p/7823410.html

一、問題域 Nginx、LVS、Keepalived、F5、DNS輪詢,往往討論的是接入層的這樣幾個問題: 1)可用性:任何一臺機器掛了,服務受不受影響 2)擴充套件性:能否通過增加機器,擴充系統的效能 3)反向代理+負載均衡:請求是否均勻分攤到後端的操作單元執行 二、上面那些名詞都是什麼概念 1

域名到站點的負載均衡技術一覽(主要是探討一臺Nginx抵禦大並發的解決方案)(轉)https://www.cnblogs.com/EasonJim/p/7823410.html

設有 eas 均衡 bsp qps 服務器 基本 .cn 操作 一、問題域 Nginx、LVS、Keepalived、F5、DNS輪詢,往往討論的是接入層的這樣幾個問題: 1)可用性:任何一臺機器掛了,服務受不受影響 2)擴展性:能否通過增加機器,擴充系統的性能 3)反向代