[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/haproxyhtml
[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 前端
[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合併在一塊兒配置;node
[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的安裝編譯 linux
[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
在192.168.28.7的機器上進行測192.168.28.18的地址(測試時確保192.168.28.7主機安裝了http並正常開啓,在/var/www/html/index.html下有本身創建
的內容能正常訪問到就測試成功)
nginx