1. 程式人生 > >Centos7 haproxy動靜分離

Centos7 haproxy動靜分離

Centos7 haproxy動靜分離

實現的結果:
當客戶端訪問haproxy時,請求的是靜態檔案內容時,請求轉交給static server,請求的是php內容時,請求轉交給php server,請求的是jsp內容時,請求轉交給tomcat server,以實現動靜分離。
haproxy伺服器:192.168.80.100
先部署三臺web伺服器:
一臺httpd支援php 192.168.80.101
一臺部署httpd支援靜態資源 192.168.80.102
一臺tomcat支援jsp 192.168.80.103

192.168.80.100:
1、安裝編譯環境與軟體
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

2、原始碼編譯安裝haproxy
tar xzvf haproxy-1.5.15.tar.gz -C /opt

cd /opt/haproxy-1.5.15
make TARGET=linux26  PREFIX=/usr/local/haproxy     //標識64為系統
make install PREFIX=/usr/local/haproxy

3、配置haproxy配置檔案
mkdir /etc/haproxy

useradd -s /sbin/nologin -M haproxy

cp /opt/haproxy-1.5.15/examples/haproxy.cfg /etc/haproxy/

vi /etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
        log 127.0.0.1   local3            
        maxconn 204800
        chroot /usr/local/haproxy
        user  haproxy
        group haproxy
        daemon
        nbproc 1
        pidfile /var/run/haproxy.pid
        stats socket /usr/local/haproxy/stats
        description haproxy server
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
        log     global
        mode    http
        maxconn 10000
        option  httplog
        option  httpclose
        option  dontlognull
        option  forwardfor      except 127.0.0.0/8
        retries 3
        option redispatch
        option abortonclose
        balance roundrobin
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
#---------------------------------------------------------------------
# use listen setting the haproxy status for site
#---------------------------------------------------------------------
listen admin_status     #設定haproxy監控狀態
        bind *:8089
        mode http
        log 127.0.0.1 local3 err
        stats refresh 5s
        stats uri /status     #監控狀態頁面訪問url
        stats realm www.skeryp.com
        stats auth admin:admin
        stats hide-version
        stats admin if TRUE
#---------------------------------------------------------------------
# main listen which proxys to the backends
#---------------------------------------------------------------------
listen  www
        bind *:80
        maxconn 5000
        mode http
        log global
        option httplog
        option httpclose
        option forwardfor  
        log         global

        default_backend default   #設定預設訪問頁面
        #定義當請求的內容是靜態內容時,將請求轉交給static server的acl規則       
        acl url_static path_beg  -i /static /images /img /javascript /stylesheets
        acl url_static path_end  -i .jpg .gif .png .css .js .html 
        acl host_static hdr_beg(host)  -i img. video. download. ftp. imags. videos.
        #定義當請求的內容是php內容時,將請求轉交給php server的acl規則    
        acl url_php path_end     -i .php
        #定義當請求的內容是.jsp或.do內容時,將請求轉交給tomcat server的acl規則    
        acl url_jsp path_end     -i .jsp .do

        #引用acl匹配規則
        use_backend static_pool if  url_static or host_static
        use_backend php_pool    if  url_php
        use_backend tomcat_pool if  url_jsp

   #定義後端backend server
 backend static_pool
        option  httpchk GET /index.html
        server static1 192.168.80.101:80 cookie id1  check inter 2000 rise 2 fall 3
 backend php_pool
        option  httpchk GET /info.php
        server php1 192.168.80.102:80 cookie id1 check inter 2000 rise 2 fall 3
 backend tomcat_pool
        option  httpchk GET /index.jsp
        server tomcat1 192.168.80.103:8086 cookie id2 check inter 2000 rise 2 fall 3

#<----------------------default site for listen and frontend------------------------------------>
backend default
        mode http
        option  httpchk GET /index.html
        server default 192.168.80.104:80 cookie id1 check inter 2000 rise 2 fall 3 maxconn 5000

192.168.80.101:
1、安裝php
yum install -y php

2、安裝php外掛

yum install -y \
php-mysql \
php-gd \
libjpeg* \
php-ldap \
php-odbc \
php-pear \
php-xml \
php-xmlrpc \
php-mbstring \
php-bcmath \
php-mhash

3、修改配置檔案

vi /etc/httpd/conf/httpd.conf
ServerName www.aa.com
DirectoryIndex index.html index.php
vi /etc/php.ini
date.timezone = PRC    日期時區=×××

4、建立一個php網頁

cd  /var/www/html
vi index.php
<?php
phpinfo();
?>

systemctl start httpd

瀏覽器輸入:192.168.80.101
Centos7 haproxy動靜分離

192.168.80.102:
1、安裝httpd
yum install httpd -y

2、安裝上傳軟體
yum install lrz* -y

3、修改配置檔案

vi /etc/httpd/conf/httpd.conf
ServerName www.aa.com

4、建立一個img目錄,在給img目錄裡放進去一張圖片,在建立一個index.html網頁

cd  /var/www/html
mkdir img
放進入一張圖片,找一張圖片直接拉到Xshell
cd ..
vi  index.html
<h1>靜態</h1>

systemctl start httpd
瀏覽器輸入:192.168.80.102
192.168.80.102/img/圖片名稱.格式
Centos7 haproxy動靜分離
Centos7 haproxy動靜分離

192.168.80.103:
軟體包自己去網上找
1、安裝JAVA
tar xf jdk-8u144-linux-x64.tar.gz

cp -rv jdk1.8.0_144/ /usr/local/java

vi /etc/profile //在檔案末尾新增

export JAVA_HOME=/usr/local/java  安裝路徑
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib

source /etc/profile
Centos7 haproxy動靜分離

2、安裝tomcat

cp -r apache-tomcat-8.5.23 /usr/local/tomcat8

ln -s /usr/local/tomcat8/bin/startup.sh /usr/bin/tomcatup
ln -s /usr/local/tomcat8/bin/shutdown.sh /usr/bin/tomcatdown

tomcatup
netstat -anpt | grep 8080

Centos7 haproxy動靜分離

瀏覽器輸入:192.168.80.103:8080
Centos7 haproxy動靜分離

測試:瀏覽器中輸入
192.168.80.100:8089/status 統計頁面
Centos7 haproxy動靜分離
瀏覽器中輸入:192.168.80.100/index.php
Centos7 haproxy動靜分離
192.168.80.100/img/圖片名稱.格式
Centos7 haproxy動靜分離
192.168.80.100/index.jsp
Centos7 haproxy動靜分離