前端主機:172.16.71.1
,后端主機:172.16.71.4
和172.16.71.5
前端主機安裝haproxy
yum install haproxy
vim /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
#errorfile 503 /etc/haproxy/errorpages/503.html
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode tcp # 默認為http,若要負載均衡MySQL,要換成tcp
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8 header X-Client
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 30000
frontend main *:80 #可以直接寫成*:80,也可以寫成下面一行這樣,bind *:80
#bind *:80
maxconn 6000
acl invalid_src src 172.16.251.57 # 定義acl非法源地址
acl adminapp path_beg -i /admin # 定義acl起始路徑,-i表示不區分大小寫
acl static path_end -i .jpg .gif .png .jpeg .css .js .html # 定義acl結尾路徑,-i表示不區分大小寫
acl static path_beg /images /imgs /stylesheets /javascripts # 定義acl起始路徑,-i表示不區分大小寫
block if invalid_src adminapp # 如果符合acl invalid_src條件則禁止訪問。
use_backend staticsrvs if static # 如果符合acl static條件,則使用后端主機staticsrvs
default_backend dynamicsrvs # 默認使用后端主機dynamicsrvs
# 上面的功能主要是動靜分離
listen stats *:9022
stats enable # 開啟stats功能
stats uri /admin?hastats # 定義stats uri
stats realm Haproxy\ admin\ area # stats提示
stats auth admin:magedu # 定義stats認證賬戶
stats hide-version # 隱藏版本信息
stats admin if TRUE # 始終啟用stats admin
backend dynamicsrvs
# balance roundrobin
balance roundrobin # 采用輪詢方式負載均衡
hash-type consistent # hash方式采用一致性hash算法
# option httpchk GET / HTTP/1.1\r\nHost:\
# http-check expect status 200
server web1 172.16.71.4:80 check weight 2 inter 3000 rise 1 fall 2 cookie web1 # 定義后端server 名稱 地址+端口,檢查,權重,檢查間隔(ms),如果檢查成功幾次則啟用,如果檢查失敗幾次則停用,添加的cookie內容。
backend staticsrvs
cookie SRV insert indirect nocache
server web2 172.16.71.5:80 check cookie web2 maxconn 2000 # 定義server 名稱 地址+端口,檢查,cookie添加內容,最大并發連接數。
frontend mysql
bind *:3306
log global
# acl invalid_src src 172.16.71.4
# tcp-request connection reject if invalid_src
mode tcp
default_backend mysrvs
backend mysrvs
balance leastconn
server mysql1 172.16.71.4:3306 check
server mysql2 172.16.71.5:3306 check
# 后端MySQL服務器內要有相同的賬號密碼權限等內容。
添加支持https
vim /etc/haproxy/haproxy.cfg
frontend sslconn
bind *:443 ssl crt /etc/haproxy/certs/haproxy.pem
default_backend dynamicsrvs
# 生成證書
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048 )
openssl req -new -x509 -key private/cakey.pem -out cacert.pem
touch index.txt
echo 00 > serial
cd /etc/haproxy/
mkdir certs
(umask 077;openssl genrsa -out haproxy.key 2048)
openssl req -new -key haproxy.key -out haproxy.csr
openssl ca -in haproxy.csr -out haproxy.crt
cat haproxy.crt haproxy.key >haproxy.pem
mv haproxy.pem c
原創文章,作者:wangshuai,如若轉載,請注明出處:http://www.www58058.com/68249