中間件服務器架構:Keepalived+HaProxy+Thrift

目錄:

1.原理圖

2.CentOS 6.5下安裝Haproxy

3.CentOS 6.5下安裝Keepalived

4.windows下啓動ThriftServer(Linux同理)

5.windows下啓動ThriftClient(Linux同理)

相關文章:

http://blog.csdn.net/ceasadan/article/details/52277136 《安裝Thrift並寫一個簡單的測試程序》
http://blog.csdn.net/ceasadan/article/details/52317586 《Thrift小試牛刀:實現Windows_C#_客戶端與Linux_C++_服務端通信》
http://blog.csdn.net/ceasadan/article/details/52318585 《Thrift應用:Windows下C#服務端實現》
http://blog.csdn.net/ceasadan/article/details/52369045 《使用HaProxy實現Thrift服務端的負載均衡》


一.原理圖


a.客戶端
所有ThriftClient通過keepalived發佈的虛擬IP訪問(1個IP);

b.KeepAlived+Haproxy的服務器集羣
KeepAlived和Haproxy部署在同一臺Linux服務器;
KeepAlived監測Haproxy運行狀態,如果Haproxy停止了,就重新啓動Haproxy;
KeepAlived+Haproxy的服務器集羣保證了服務的可靠性;

c.Haproxy負載均衡
Haproxy維護與多個ThriftServer的鏈接,並實現負載均衡;
Haproxy還可在網頁上顯示ThriftServer的運行狀態;

d.ThriftServer集羣
保證了ThriftServer服務提供的可靠性;

待完善:
1.KeepAlived監測Haproxy運行狀態,併發郵件通知管理員


二.CentOS 6.5下安裝Haproxy

1.下載解壓:

下載:http://download.csdn.net/tag/haproxy 
解壓:tar xvf haproxy-1.6.4.tar.gz

2.編譯
進入目錄:cd haproxy-1.6.4
make TARGET=linux2628 CPU=x86_64 PREFIX=/usr/local/haprpxy

3.安裝
make install PREFIX=/usr/local/haproxy

4.創建配置文件目錄
mkdir -p /etc/haproxy

5.編輯配置文件
vi /etc/haproxy/haproxy.cfg

###########全局配置#########
global
        daemon
        nbproc 1
        pidfile /var/run/haproxy.pid
########默認配置############
defaults
        mode http               #默認的模式mode { tcp|http|health },tcp是4層,http是7層,health只會返回OK
        retries 2               #兩次連接失敗就認爲是服務器不可用,也可以通過後面設置
        option redispatch       #當serverId對應的服務器掛掉後,強制定向到其他健康的服務器
        option abortonclose     #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接
        maxconn 4096            #默認的最大連接數
        timeout connect 5000ms  #連接超時
        timeout client 30000ms  #客戶端超時
        timeout server 30000ms  #服務器超時
        #timeout check 2000      #=心跳檢測超時
        log 127.0.0.1 local0 err #[err warning info debug]
########統計頁面配置########
listen admin_stats
        bind 0.0.0.0:1080               #監聽端口
        mode http                       #http的7層模式
        option httplog                  #採用http日誌格式
        #log 127.0.0.1 local0 err
        maxconn 10
        stats refresh 30s               #統計頁面自動刷新時間
        stats uri /stats                #統計頁面url
        stats realm XingCloud\ Haproxy  #統計頁面密碼框上提示文本
        stats auth admin:admin          #統計頁面用戶名和密碼設置
        stats hide-version              #隱藏統計頁面上HAProxy的版本信息
########testThrift配置#################
listen ThriftServer
    bind 0.0.0.0:8888
    balance roundrobin
    mode tcp 
    option tcplog
    option tcp-check
#maxconn 4086
    log 127.0.0.1 local2 debug
    server ThriftServer1 172.16.61.160:9090   check
    server ThriftServer2 192.168.1.199:9090    check
########frontend配置##############

6.#拷貝安裝包haproxy-1.6.4/examples目錄下的文件
cp haproxy.init /etc/init.d/haproxy
chmod 775 /etc/init.d/haproxy #授權
sed -i "s/BIN=\/usr\/sbin/BIN=\/usr\/local\/sbin/g" /etc/init.d/haproxy #修改執行路徑
cp -r errorfiles/ /etc/haproxy/ #HTTP響應文件

7.日誌文件:
a.

#打開haproxy日誌,編輯文件

vi /etc/rsyslog.d/haproxy.conf
添加配置:

# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log
local1.* /var/log/haproxy.log 

b.

vi /etc/sysconfig/rsyslog
#SYSLOGD_OPTIONS="-c 5" #註釋掉默認配置

SYSLOGD_OPTIONS="-c 2 -r -m 0" #添加新配置

#注:
#-c 2 使用兼容模式,默認是 -c 5
#-r 開啓遠程日誌
#-m 0 標記時間戳。單位是分鐘,爲0時,表示禁用該功能

c.

#重啓系統日誌服務
service rsyslog restart


8.啓動服務
啓動服務:
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
重啓服務:
# /usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (沒有換行)
停止服務:
/etc/init.d/haproxy stop

9.查看監控網頁
http://localhost:1080/stats
usr:admin
psw:admin


三.CentOS 6.5下安裝Keepalived

1.下載解壓

官網下載:http://www.keepalived.org/
tar zxvf keepalived-1.2.23.tar.gz
cd keepalived-1.2.23
./configure --prefix=/
編譯:make
安裝:make install(需要管理員權限su)

2.移動配置文件
#cd /etc/keepalived/
#mv keepalived.conf keepalived.conf.default

3.配置文件配置
#vi keepalived.conf

! Configuration File for keepalived

vrrp_script chk_http_port {
script "/etc/keepalived/check_haproxy.sh"
interval 2
weight 2

global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #備用keepalived主機上改爲BACKUP
interface eth0
virtual_router_id 51 
priority 150 #備用keepalived主機上改爲120
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}

track_script {
chk_http_port
}

virtual_ipaddress {
192.168.1.200 
}
}
}

說明:
virtual_ipaddress {
192.168.1.200 }
thrift客戶端:連接此IP,端口號還是haproxy開放的端口號8888

4.配置check_haproxy.sh(啓動keepalived時,自動啓動haproxy,並且監聽haproxy,haproxy停掉後自動啓動)
#vi /etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/haproxy/sbin/haproxy -f /etc/haproxy/haproxy.cfg
sleep 3
if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then
/etc/init.d/keepalived stop
fi
fi
授權:
#chmod 755 /etc/keepalived/check_haproxy.sh


5.啓動keepalived
/etc/init.d/keepalived start (這條命令會自動把haproxy啓動)
附:停止命令
/etc/init.d/keepalived stop

四.windows下啓動ThriftServer(Linux同理)


五.windows下啓動ThriftClient(Linux同理)

發佈了94 篇原創文章 · 獲贊 23 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章