心心失意 发表于 2018-11-24 10:52:48

centos6.3下haproxy+apache配置笔记

  紧张了2个礼拜,RHCE终于过了,上午满分300,下午260,虽然不知道错在哪,但这下终于可以有时间更新我的博客了。虽然平时博客访问量挺大,但基本没什么人和我互动,不过写点东西给需要帮助的朋友,我还是表示我的努力没有白费,不扯别的了,开始今天的正题。
  
  一.什么是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
  nbproc2
  pidfile /usr/local/haproxy/haproxy.pid
  defaults
  log   global
  mode    http
  optionhttplog
  optiondontlognull
  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   10 01:35 ?      00:00:00 avahi-daemon: running
  haproxy36112   10 03:43 ?      00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
  haproxy36113   10 03:43 ?      00:00:00 /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg
  root   3616820020 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
  删除配置文件内非注释内容,并添加:
  --------------
  
  DocumentRoot "/usr/local/apache2/htdocs/www.example.com"
  ServerName www.example.com
  
  --------------
  重启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
  删除配置文件内非注释内容,并添加:
  --------------
  
  DocumentRoot "/usr/local/apache2/htdocs/www.example.com"
  ServerName www.example.com
  
  --------------
  重启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服务或更改端口即可。
  




页: [1]
查看完整版本: centos6.3下haproxy+apache配置笔记