centos7編譯安裝haproxy
sudo yum install -y pcre-devel bzip2-devel gcc gcc-c++ make useradd -s /sbin/nologin -M haproxy #--創建一個不可登錄系統,且沒有家目錄的用戶 cd /home/admin/soft wget http://download.openpkg.org/components/cache/haproxy/haproxy-1.8.10.tar.gz tar -zxf haproxy-1.8.10.tar.gz cd haproxy-1.8.10 make TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 sudo make install PREFIX=/usr/local/haproxy sudo cp haproxy /usr/sbin/ sudo mkdir -p /usr/local/haproxy/log sudo touch /usr/local/haproxy/log/haproxy.log
# # USE_PCRE=1 開啟正則 USE_OPENSSL=1 開啟openssl USE_ZLIB=1
# # USE_CPU_AFFINITY=1 為開啟haproxy進程與CPU核心綁定,USE_SYSTEMD=1為支持使用 -Ws參數(systemd-aware master-worker 模式)啟動Haproxy,從而實現單主進程多子進程運行模式。
准備system啟動腳本
sudo cp examples/haproxy.init /etc/init.d/haproxy sudo chmod 755 /etc/init.d/haproxy sudo chkconfig --add haproxy sudo cp contrib/systemd/haproxy.service.in /lib/systemd/system/haproxy.service
准備系統配置文件
# cat /etc/sysconfig/haproxy # Add extra options to the haproxy daemon here. This can be useful for # specifying multiple configuration files with multiple -f options. # See haproxy(1) for a complete list of options. OPTIONS=""
配置各個負載的內核參數
# vim /etc/sysctl.conf net.ipv4.ip_nonlocal_bind = 1 #開啟允許綁定非本機的IP,haporxy啟動忽視VIP存在 net.ipv4.ip_forward = 1 #內核是否轉發數據包
sudo sysctl -p # 配置內核參數生效
配置文件
sudo mkdir /etc/haproxy sudo mkdir /var/lib/haproxy sudo mkdir /etc/haproxy/conf
# cat /etc/haproxy/haproxy.cfg #--------------全局配置---------------- global log 127.0.0.1 local0 notice #配置全局日志記錄,local0為日志設備,notice為輸出的日志級別,表示使用本地(127.0.0.1)機器上的rsyslog服務中的local0設備記錄日志等級為notice的日志。 #log loghost local0 info #定義haproxy 日志級別 maxconn 20480 #可以接收的最大並發連接數 #chroot /usr/local/haproxy-1.5.15 #工作目錄 pidfile /var/run/haproxy.pid #haproxy 進程PID文件 #maxconn 4000 #最大連接數 user haproxy #運行的程序用戶 group haproxy #運行的程序用戶組 daemon #創建1個進程進入deamon模式運行,以后台形式運行harpoxy #--------------------------------------------------------------------- #common defaults that all the 'listen' and 'backend' sections will #use if not designated in their block #--------------------------------------------------------------------- defaults mode http #所處理的類別,tcp是四層,http是七層,health只會返回OK,若是混合模式則mode不需要設置 log global #定義日志,采用全局定義 option dontlognull #不記錄健康檢查的日志信息 option httpclose #每次請求完畢后主動關閉http通道 option httplog #日志類別為http日志格式;如果是混合模式,此處還需要加上tcpclog #option forwardfor #后端服務器可以從Http Header中獲得客戶端ip option redispatch #serverId對應的服務器掛掉后,強制定向到其他健康的服務器 balance roundrobin #設置默認負載均衡方式,輪詢方式 timeout connect 10s #連接超時 timeout client 10s #客戶端連接超時 timeout server 10s #服務器連接超時 timeout check 10s #健康檢測的超時時間 maxconn 60000 #最大連接數 retries 3 #3次連接失敗就為服務不可用 #--------------統計頁面配置------------------ listen admin_stats #為haproxy訪問狀態監控頁面配置,取名為admin_stats bind 0.0.0.0:8189 #監聽端口 stats enable #啟用監聽端口 mode http #http的7層模式 log global # 繼承global中log的定義 stats uri /stats #監控頁面的url訪問路徑,即http://ip/stats訪問監控頁面 stats realm Haproxy\ Statistics #監控頁面的密碼框提示信息 stats auth admin:admin #監控頁面的用戶和密碼admin,可以設置多個用戶名 #stats hide-version #隱藏統計頁面上HAProxy的版本信息 stats admin if TRUE #當通過認證才可管理 stats refresh 30s #頁面自動刷新時間30s #---------------web設置----------------------- listen webcluster #定義webcluster服務器組。 bind 0.0.0.0:81 #定義haproxy前端部分監聽的端口。 mode http #http的7模式 #option httpchk GET /index.html #心跳檢測7層訪問 log global #繼承global中log的定義 maxconn 3000 #server進程可接受的最大並發連接數 balance roundrobin #負載均衡的方式:輪詢 cookie SESSION_COOKIE insert indirect nocache #根據cookie輪詢 server web01 10.6.76.27:1988 check inter 2000 fall 5 server web02 10.6.76.28:1988 check inter 2000 fall 5 #server web01 192.168.80.102:80 cookie web01 check inter 2000 fall 5 #server web02 192.168.80.103:80 cookie web01 check inter 2000 fall 5 # https://www.cnblogs.com/yangliheng/p/5852494.html
啟動
測試
haproxy分發成功了