Haproxy和Tengine的編譯安裝(實現(xiàn)Haproxy代理轉(zhuǎn)發(fā)Tengine的http請求)

目錄

實驗環(huán)境及要求
實驗一
1.1:準備NFS
1.2:準備Tengine
1.2.1:編譯安裝Tengine
1.2.2:掛載NFS
1.2.3:配置Tengine站點
1.2.4:客戶端訪問測試
實驗二
2.1:準備Haproxy
2.1.1:編譯安裝Hapoxy
2.1.2:根據(jù)代理轉(zhuǎn)發(fā)要求讶请,定義Haproxy配置文件
2.1.3:啟動Haproxy
2.2:準備測試靜態(tài)資源
2.3:客戶端訪問測試

實驗環(huán)境及要求

image-20200617155512032.png

實驗一:

  1. 192.168.43.73和192.168.43.74編譯安裝Tengine夺溢,均可以代理站點api.yqc.com:9001;
  2. 192.168.43.75配置NFS存儲风响,供73和74共享靜態(tài)資源。

實驗二:

  1. 192.168.43.219為Haproxy状勤,為后端兩臺Tengine提供七層代理(api.yqc.com:9001);
  2. 192.168.43.73和192.168.43.74為Tengine服務器持搜,經(jīng)Haproxy代理轉(zhuǎn)發(fā)后焙矛,73負責響應路徑為/a的請求,74負責響應路徑為/b的請求贫导。

實驗一

1.1:準備NFS

在192168.43.75上安裝nfs抛猫,并進行相應配置:

~]# yum install nfs-utils -y

~]# mkdir /data/tengine -p

~]# vim /etc/exports
/data/tengine *(rw,no_root_squash)

~]# systemctl start nfs
~]# systemctl enable nfs

1.2:準備Tengine

1.2.1:編譯安裝Tengine

tengine是基于nginx開發(fā)的孩灯,官網(wǎng)下載地址:http://tengine.taobao.org/download.html

2.png

這里使用Tengine-2.3.0峰档,在192.168.43.73和74上分別編譯安裝Tengine:

執(zhí)行下方命令準備編譯基礎環(huán)境:

~]# yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget ntpdate gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel net-tools iotop bc zip unzip zlib-devel bash-completion nfs-utils automake libxml2 libxml2-devel libxslt libxslt-devel perl perl-ExtUtils-Embed

下載解壓tengine:

~]# cd /usr/local/src
src]# wget http://tengine.taobao.org/download/tengine-2.3.0.tar.gz
src]# tar zxvf tengine-2.3.0.tar.gz
src]# cd tengine-2.3.0/

進行編譯安裝:

#進行編譯
tengine-2.3.0]# ./configure --prefix=/usr/local/tengine --user=tengine --group=tengine --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module --with-http_perl_module

#安裝
tengine-2.3.0]# make && make install

添加tengine用戶:

~]# useradd tengine -s /sbin/nologin -u 2001

創(chuàng)建nginx命令軟鏈接:

~]# ln -sv /usr/local/tengine/sbin/nginx /usr/bin/nginx

驗證:

~]# nginx -v
Tengine version: Tengine/2.3.0 (nginx/1.15.9)

~]# nginx
~]# ps -ef | grep nginx
root      19949      1  0 12:10 ?        00:00:00 nginx: master process nginx
tengine   19950  19949  0 12:10 ?        00:00:00 nginx: worker process

~]# lsof -i:80
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   19949    root    6u  IPv4  58815      0t0  TCP *:http (LISTEN)
nginx   19950 tengine    6u  IPv4  58815      0t0  TCP *:http (LISTEN)

1.2.2:掛載NFS

為兩臺Tengine服務器分別安裝nfs面哥,用于掛載NFS存儲:

~]# yum install nfs-utils -y

~]# showmount -e 192.168.43.75
Export list for 192.168.43.75:
/data/tengine *

掛載NFS存儲:

~]# mkdir /data/tengine -p
~]# mount -t nfs 192.168.43.75:/data/tengine/ /data/tengine/
~]# df -TH
192.168.43.75:/data/tengine nfs4       52G  1.4G   50G   3% /data/tengine

配置開機掛載:

~]# vim /etc/fstab
192.168.43.75:/data/tengine /data/tengine nfs defaults,_netdev 0 0
#加上_netdev參數(shù)后,啟動系統(tǒng)掛載分區(qū)時尚卫,會有一個超時時間,避免了無法訪問網(wǎng)絡存儲而一直卡在掛載那里無法啟動系統(tǒng)吱涉。

驗證掛載參數(shù):

~]# umount /data/tengine
~]# mount -a
~]# df -TH
192.168.43.75:/data/tengine nfs4       52G  1.4G   50G   3% /data/tengine

1.2.3:配置Tengine站點

此為模仿api調(diào)用,這里配置tengine監(jiān)聽在9001端口特石,server_name為api.yqc.com鳖链。

在兩臺Tengine上都進行如下配置:

~]# cd /usr/local/tengine/
tengine]# mkdir conf.d
tengine]# vim conf/nginx.conf
……
http {
    include       /usr/local/tengine/conf.d/*.conf;
    ……
}

tengine]# vim conf.d/api_yqc.conf
server {
    listen 9001;
    server_name api.yqc.com;
    location / {
        root /data/tengine;
    }
}

~]# nginx -t
~]# nginx -s reload

~]# vim /data/tengine/index.html
page api.yqc.com:9001

1.2.4:客戶端訪問測試

~]# vim /etc/hosts
192.168.43.73   api.yqc.com

~]# curl api.yqc.com:9001
page api.yqc.com:9001

~]# vim /etc/hosts
192.168.43.74   api.yqc.com

~]# curl api.yqc.com:9001
page api.yqc.com:9001

實驗二

2.1:準備Haproxy

2.1.1:編譯安裝Hapoxy

192.168.43.219上操作

安裝基礎依賴包:

~]# yum install gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel systemd-devel net-tools vim iotop bc  zip unzip zlib-devel lrzsz tree screen lsof tcpdump wget ntpdate -y

編譯安裝haproxy-1.8.20:

~]# cd /usr/local/src/
src]# ll haproxy-1.8.20.tar.gz 
-rw-r--r--. 1 root root 2083917 Jun 17 17:00 haproxy-1.8.20.tar.gz

src]# tar zxvf haproxy-1.8.20.tar.gz
src]# cd haproxy-1.8.20/

#編譯
haproxy-1.8.20]# make  ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  USE_CPU_AFFINITY=1  PREFIX=/usr/local/haproxy

#USE_CPU_AFFINITY=1為開啟haproxy進程與CPU核心綁定
#USE_SYSTEMD=1為支持使用-Ws參數(shù)(systemd-aware master-worker 模式)啟動Haproxy,從而實現(xiàn)單主進程多子進程運行模式逞敷。

#安裝
haproxy-1.8.20]# make install PREFIX=/usr/local/haproxy

haproxy-1.8.20]# cp haproxy  /usr/sbin/

準備啟動腳本文件:

~]# vim /lib/systemd/system/haproxy.service
[Unit]
Description=HAProxy Load Balancer
After=syslog.target network.target

[Service]
ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

驗證版本:

~]# haproxy -v
HA-Proxy version 1.8.20 2019/04/25
Copyright 2000-2019 Willy Tarreau <willy@haproxy.org>

2.1.2:根據(jù)代理轉(zhuǎn)發(fā)要求灌侣,定義Haproxy配置文件

實驗要求192.168.43.73負責響應路徑為/a的請求,192.168.43.74負責響應路徑為/b的請求牛柒,這里通過Haproxy的ACL中的path_beg,來匹配請求URL的開頭皮壁,實現(xiàn)不同路徑的請求調(diào)度符喝。

~]# mkdir /etc/haproxy/conf -p
~]# vim /etc/haproxy/haproxy.cfg 
global
maxconn 100000
chroot /usr/local/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
nbproc 2
cpu-map 1 0
cpu-map 2 1
pidfile /usr/local/haproxy/run/haproxy.pid
log 127.0.0.1 local3 info

defaults
option http-keep-alive
option  forwardfor
maxconn 100000
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms

listen api
  bind 192.168.43.219:9001
  mode http
  acl a_request path_beg -i /a
  use_backend a_server if a_request
  acl b_request path_beg -i /b
  use_backend b_server if b_request

backend a_server
  server a1 192.168.43.73:9001 weight 1 check port 9001 inter 3s fall 3 rise 5

backend b_server
  server b1 192.168.43.74:9001 weight 1 check port 9001 inter 3s fall 3 rise 5

2.1.3:啟動Haproxy

~]# systemctl daemon-reload
~]# systemctl start haproxy
~]# systemctl enable haproxy
~]# ps -ef | grep haproxy
root      37810      1  0 17:10 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid
nobody    37813  37810  0 17:10 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid
nobody    37814  37810  0 17:10 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -f /etc/haproxy/conf -p /run/haproxy.pid

2.2:準備測試靜態(tài)資源

準備/a和/b路徑的靜態(tài)資源,以驗證配置結(jié)果(因為NFS是共享的畏腕,無法從訪問結(jié)果上直觀看出到底是哪臺Tengine響應了請求,所以這里先把NFS的分區(qū)卸載描馅,在兩臺Tengine本地分別創(chuàng)建/a和/b的訪問頁面):

192.168.43.73:

~]# umount /data/tengine 
~]# mkdir /data/tengine/a
~]# vim /data/tengine/a/index.html
a page(192.168.43.73)

192.168.43.74:

~]# umount /data/tengine 
~]# mkdir /data/tengine/b
~]# vim /data/tengine/b/index.html
b page(192.168.43.74)

2.3:客戶端訪問測試

~]# vim /etc/hosts
192.168.43.219  api.yqc.com

~]# curl api.yqc.com:9001/a/index.html
a page(192.168.43.73)
~]# curl api.yqc.com:9001/b/index.html
b page(192.168.43.74)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末铭污,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子膀篮,更是在濱河造成了極大的恐慌,老刑警劉巖磅网,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件筷屡,死亡現(xiàn)場離奇詭異,居然都是意外死亡毙死,警方通過查閱死者的電腦和手機燎潮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門扼倘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人再菊,你說我怎么就攤上這事“兰颍” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵绿语,是天一觀的道長。 經(jīng)常有香客問我种柑,道長匹耕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任驶赏,我火速辦了婚禮炸卑,結(jié)果婚禮上盖文,老公的妹妹穿的比我還像新娘。我一直安慰自己五续,他們只是感情好龄恋,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著郭毕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪铣卡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天敞峭,我揣著相機與錄音蝉仇,去河邊找鬼。 笑死轿衔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的害驹。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼葫松,長吁一口氣:“原來是場噩夢啊……” “哼底洗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起亥揖,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摧扇,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扳剿,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡昼激,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了橙困。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡辟狈,死狀恐怖夏跷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情槽华,我是刑警寧澤壹蔓,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布佣蓉,位于F島的核電站亲雪,受9級特大地震影響勇凭,放射性物質(zhì)發(fā)生泄漏义辕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一灌砖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧柳譬,春花似錦、人聲如沸美澳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽擂涛。三九已至,卻和暖如春撒妈,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狰右。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工舆床, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挨队。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓盛垦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親情臭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348