歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

centos 6.3下haproxy和apache的配置過程

一.什麼是haproxy

HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機,它是免費、快速並且可 靠的一種解決方案。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。 HAProxy運行在當前的硬件上,完全可以支持數以萬計的並發連接。並且它的運行模式使得它可以很簡單安全 的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。

二.安裝haproxy

系統環境:centos6.3

apache: httpd-2.4.4

haproxy: haproxy-1.4.8

haproxy server: 192.168.7.198

apache client1: 192.168.7.196

apache client2: 192.168.7.197

關閉iptables和SELINUX

# service iptables stop

# setenforce 0

# vi /etc/sysconfig/selinux

---------------

SELINUX=disabled

---------------

# wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.8.tar.gz

# tar zxvf haproxy-1.4.8.tar.gz

# cd haproxy-1.4.8

# uname -a           //查看linux內核版本

# make TARGET=linux26 PREFIX=/usr/local/haproxy

# make install PREFIX=/usr/local/haproxy

# useradd -s /sbin/nologin haproxy

# passwd haproxy

# chown -R haproxy.haproxy /usr/local/haproxy

三.配置haproxy

# vi /usr/local/haproxy/haproxy.cfg

-----------------

global

       maxconn 5120

       chroot /usr/local/haproxy

       user haproxy

       group haproxy

       daemon

       quiet

       nbproc  2

       pidfile /usr/local/haproxy/haproxy.pid

defaults

       log     global

       mode    http

       option  httplog

       option  dontlognull

       log 127.0.0.1 local3

       retries 3

       option redispatch

       maxconn 2000

       contimeout      5000

       clitimeout      50000

       srvtimeout      50000

listen web :80

      mode http

      balance roundrobin

      option httpclose

      option forwardfor

      server client1 192.168.7.196:80 check weight 1 minconn 1 maxconn 3 check inter 40000

      server client2 192.168.7.197:80 check weight 1 minconn 1 maxconn 3 check inter 40000

listen stats :8888

      mode http

      transparent

      stats uri / haproxy-stats

      stats realm Haproxy \ statistic

      #認證

      stats auth haproxy:password

-----------------

四.啟動haproxy

啟動haproxy

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

查看是否啟動

# ps -ef|grep haproxy

--------------------------

avahi     1430     1  0 01:35 ?        00:00:00 avahi-daemon: running [haproxy.local]

haproxy  36112     1  0 03:43 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

haproxy  36113     1  0 03:43 ?        00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

root     36168  2002  0 04:02 pts/0    00:00:00 grep haproxy

--------------------------

重啟haproxy

# pkill haproxy

# /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

其中:

haproxy server監聽的端口:80

client1代理:192.168.7.196:80

client2代理:192.168.7.197:80

統計頁面監聽的端口:8888

訪問頁面:

http://192.168.7.198:8888/haproxy-stats

認證賬號/密碼:haproxy/password

總結:

用戶只需訪問http://192.168.7.198即可隨機跳轉到client1或client2頁面,只要haproxy server 服務不掛掉,即使掛掉任意一台client1或client2服務器,另外一台也會實時接管web服務,實現web服務高可 用性與負載均衡。

 

基於域名的訪問:

首先apache client1與apache client2做一個相同的虛擬主機配置

例如都做成:www.example.com

client1端(192.168.7.196)配置:

# mkdir /usr/local/apache2/htdocs/www.example.com/

# cd /usr/local/apache2/htdocs/www.example.com/

# echo "IP:192.168.7.196" > index.html

# vi /usr/local/apache2/conf/httpd.conf

找到461行,去掉該行注釋:

----------------

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

----------------

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

刪除配置文件內非注釋內容,並添加:

--------------

<VirtualHost *:80>

   DocumentRoot "/usr/local/apache2/htdocs/www.example.com"

   ServerName www.example.com

</VirtualHost>

--------------

重啟apache服務

# /usr/local/apache2/bin/apachectl restart

client2端(192.168.7.197)配置:

# mkdir /usr/local/apache2/htdocs/www.example.com/

# cd /usr/local/apache2/htdocs/www.example.com/

# echo "IP:192.168.7.197" > index.html

# vi /usr/local/apache2/conf/httpd.conf

找到461行,去掉該行注釋:

----------------

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

----------------

# vi /usr/local/apache2/conf/extra/httpd-vhosts.conf

刪除配置文件內非注釋內容,並添加:

--------------

<VirtualHost *:80>

   DocumentRoot "/usr/local/apache2/htdocs/www.example.com"

   ServerName www.example.com

</VirtualHost>

--------------

重啟apache服務

# /usr/local/apache2/bin/apachectl restart

最後客戶端浏覽器做好www.example.com的解析地址是192.168.7.198

客戶端訪問如圖:

客戶端浏覽器最終訪問www.example.com地址時會隨機在client1與client2虛擬主機目錄之間來回跳轉,實 現基於域名的負載均衡。

注:haproxy啟動報錯

Starting proxy : cannot bind socket

一般是haproxy server安裝web服務(apache或nginx),由於默認端口為80,和haproxy配 置文件設置的端口沖突導致,關閉web服務或更改端口即可。

Copyright © Linux教程網 All Rights Reserved