HAProxy1.8.20版本編譯安裝

HAProxy1.8.20版本編譯安裝

一、官網下載版本並編譯安裝

[root@node2-centos7 haproxy]# cd /usr/local/src/ #此目錄下一般放自己編譯的源碼  
[root@node2-centos7 src]# 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
#安裝基礎依賴包,必須安裝system-devel,如果不安裝會報錯  
[root@node2-centos7 src]# ll
-rw-r--r--  1 root root 2083917 Jun  2 09:08 haproxy-1.8.20.tar.gz #安裝包軟件
[root@node2-centos7 src]# tar xvf haproxy-1.8.20.tar.gz #解壓  
[root@node2-centos7 src]# cd haproxy-1.8.20/
[root@node2-centos7 haproxy-1.8.20]# ll
total 8724
-rw-rw-r--  1 root root  513114 Apr 25 21:59 CHANGELOG
drwxrwxr-x 18 root root     273 Apr 25 21:59 contrib
-rw-rw-r--  1 root root   41508 Apr 25 21:59 CONTRIBUTING
drwxrwxr-x  5 root root    4096 Apr 25 21:59 doc
drwxrwxr-x  2 root root    4096 Jun  4 02:55 ebtree
drwxrwxr-x  3 root root    4096 Apr 25 21:59 examples
-rwxr-xr-x  1 root root 8259352 Jun  4 02:56 haproxy #可執行的文件
drwxrwxr-x  6 root root      60 Apr 25 21:59 include
-rw-rw-r--  1 root root    2029 Apr 25 21:59 LICENSE
-rw-rw-r--  1 root root    3087 Apr 25 21:59 MAINTAINERS
-rw-rw-r--  1 root root   37713 Apr 25 21:59 Makefile
-rw-rw-r--  1 root root   15355 Apr 25 21:59 README #讀一下安裝說明
drwxrwxr-x  5 root root      50 Apr 25 21:59 reg-tests
-rw-rw-r--  1 root root    2713 Apr 25 21:59 ROADMAP
drwxrwxr-x  2 root root     101 Apr 25 21:59 scripts
drwxrwxr-x  2 root root    8192 Jun  4 02:56 src
-rw-rw-r--  1 root root      14 Apr 25 21:59 SUBVERS
drwxrwxr-x  2 root root    4096 Apr 25 21:59 tests
-rw-rw-r--  1 root root      24 Apr 25 21:59 VERDATE
-rw-rw-r--  1 root root       7 Apr 25 21:59 VERSION  
[root@node2-centos7 haproxy-1.8.20]# cat README
[root@node2-centos7 haproxy-1.8.20]# make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1  
[root@node2-centos7 haproxy-1.8.20]# make install PREFIX=/usr/local/haproxy  
[root@node2-centos7 haproxy-1.8.20]# cp haproxy /usr/sbin  

haproxy主程序:/usr/sbin/haproxy

二、準備啓動腳本

[root@node2-centos7 haproxy-1.8.20]# vim /usr/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 -c -q
ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
ExecReload=/bin/kill -USR2 $MAINPID  

[Install]
WantedBy=multi-user.target  

haproxy啓動文件:/usr/lib/systemd/system/haproxy.service

三、定義haproxy配置文件

[root@node2-centos7 haproxy-1.8.20]# mkdir /etc/haproxy
[root@node2-centos7 haproxy-1.8.20]# cd /etc/haproxy/  
[root@node2-centos7 haproxy]# vim haproxy.cfg haproxy配置文件編寫
global #全局配置段 進程及安全相關的參數配置 
maxconn 100000  #每個haproxy進程的最大併發連接數  
chroot /usr/local/haproxy #鎖定運行目錄爲/usr/local/haproxy 
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin #socket文件   
uid 99
gid 99 #運行haproxy的用戶身份,默認的是99,nobody用戶
daemon #守護進程
nbproc 2 #開啓的haproxy進程數,與CPU保持一致  
nbthread #指定每個haproxy進程開啓的線程數,默認爲每個進程一個線程(只在新版本支持1.8及以上)
cpu-map 1 0  #綁定第一個haproxy 進程至指定的CPU的第0個核心上
cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
pidfile /usr/local/haproxy/run/haproxy.pid  #指定pid文件路徑
log 127.0.0.1 local3 info  
maxconnrate #每個進程每秒最大連接數  
maxsslconn  #SSL每個haproxy進程ssl最大連接數  
spread-checks   #後端server狀態check隨機提前或延遲百分比時間,建議2-5(20%-50%)之間  

defaults  
option redispatch   #當server Id對應的服務器掛掉後,強制定向到其他健康的服務器  
option abortonclose #當服務器負載很高的時候,自動結束掉當前隊列處理比較久的鏈接  
option http-keep-alive #開啓會話保持
option  forwardfor #開啓IP透傳
maxconn 100000 #每個haproxy進程的最大併發連接數
mode http #指定負載協議類型 後邊的片段不指定就用全局默認的類型
timeout connect 300000ms  #轉發客戶端請求到後端server的最長連接時間(TCP之前)
timeout client  300000ms #與客戶端的最長空閒時間
timeout server  300000ms 轉發客戶端請求到後端服務端的超時超時時長(TCP之後)

listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:q1w2e3r4ys

listen  web_port #可以使用listen替換frontend和backend的配置方式
 bind 0.0.0.0:8080
 mode http
 log global
 server web1  127.0.0.1:8080  check inter 3000 fall 2 rise 5

frontend web #前端servername,類似於Nginx的一個虛擬主機 server
 bind 192.168.28.18:80  #bind指定HAProxy的監聽地址,可以是IPV4或IPV6,可以同時監聽多個IP或端口,監聽多個地址時中間用逗號分隔,同時也適用於listen片段中;
 use_backend web_host #use_backend調用的後端服務器組名稱,要保證前後的一致性

backend web_host #後端服務器組,等於nginx的upstream
 server web1 192.168.28.7:80 #定義後端真正的服務器
# server web2 192.168.28.38:80  #沒有啓用這組後端服務器

haproxy主配置文件:/etc/haproxy/haproxy.cfg
注意:以上name字段只能使用 - _ . : 並且嚴格區分大小寫;
listen <name> 將frontend和backend合併在一起配置;

四、啓動服務

[root@node2-centos7 haproxy]# systemctl start haproxy
[root@node2-centos7 haproxy]# ss -ntl
State      Recv-Q Send-Q      Local Address:Port                     Peer Address:Port              
LISTEN     0      128                     *:9999                                *:*                  
LISTEN     0      128                     *:111                                 *:*                  
LISTEN     0      128         192.168.28.18:80                                  *:*                    
#監聽的端口
LISTEN     0      128                     *:8080                                *:*                  
LISTEN     0      128                     *:22                                  *:*                  
LISTEN     0      100             127.0.0.1:25                                  *:*                  
LISTEN     0      128                    :::111                                :::*                  
LISTEN     0      128                    :::22                                 :::*                  
LISTEN     0      100                   ::1:25                                 :::*    

以上完成了整個haproxy的安裝編譯

五、驗證haproxy

[root@node2-centos7 ~]# ps -ef |grep haproxy
root       7511      1  0 03:35 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxyhaproxy.cfg -p /run/haproxy.pid
nobody     7514   7511  0 03:35 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxyhaproxy.cfg -p /run/haproxy.pid
nobody     7515   7511  0 03:35 ?        00:00:00 /usr/sbin/haproxy -Ws -f /etc/haproxyhaproxy.cfg -p /run/haproxy.pid
root       7751   6740  0 06:48 pts/0    00:00:00 grep --color=auto haproxy  

六、測試haproxy的配置是否成功

在192.168.28.7的機器上進行測192.168.28.18的地址(測試時確保192.168.28.7主機安裝了http並正常開啓,在/var/www/html/index.html下有自己建立
的內容能正常訪問到就測試成功)
測試成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章