apache 负载均衡http 配置

 

apache安装


yum  install   gcc  gcc-c++ make cmake git wget  zip  unzip  bzip2 zlib-devel
Linux中安装Apache 编译出现问题:

解决办法:

1、下载所需要的软件包

wget http://archive.apache.org/dist/apr/apr-1.4.5.tar.gz  
wget http://archive.apache.org/dist/apr/apr-util-1.3.12.tar.gz  
wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.10/pcre-8.10.zip  

3、解决APR not found报错
tar -zxf apr-1.4.5.tar.gz  
cd  apr-1.4.5  
./configure --prefix=/usr/local/apr  
make && make install 
4、解决APR-util not found问题 tar -zxf apr-util-1.3.12.tar.gz cd apr-util-1.3.12 ./configure --prefix=/usr/local/apr-util -with-apr=/usr/local/apr/bin/apr-1-config make && make install
5、解决pcre问题 unzip -o pcre-8.10.zip cd pcre-8.10 ./configure --prefix=/usr/local/pcre make && make install
6、最后编译加上
 ./configure --prefix=/usr/local/apache/ --enable-deflate --enable-expires \
 --enable-headers --enable-modules=most \
 --enable-so --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/bin/pcre-config --with-mpn=worker \
 --enable-rewrite && make  && make install
 
 --enable-deflate 提供对内容的压缩传输编码的支持(html  js  css) 提高传输速率,
 --enable-expires  激活允许通过配置文件控制http 的'expires' 和 'cache-control' 头内容
 --enable-headers  提供允许对http请求头的控制
 --enable-modules=most  激活大多数的模块
 --enable-so  让apapche可以支持大多数模块
 --with-mpm=worker  工作在具备的两种模式 worker/prefork
 --enable-rewrite 开启url重写 
 
 useradd -M -s /sbin/nologin  apache

 

apache 配置


 
 
 apache 虚拟主机, 反向代理以及负载均衡功能的实现
 
 虚拟主机
 #virtual  hosts
 Include  conf/extra/httpd-vhosts.conf
 
<VirtualHost *:80>
    Serveradmin xxxxxx
    DocumentRoot /webdata/www1
    ServerName  www.www1.com
    ErrorLog logs/error_log
CustomLog logs/access_log  common   
<Directory "/webdata/www1">    
    Options None
    AllowOverride None
    Require all granted
</Directory>
</VirtualHost>    
 
<VirtualHost *:80>
    Serveradmin xxxxxx
    DocumentRoot /webdata/www2
    ServerName  www.www2.com
    ErrorLog logs/error_log
CustomLog logs/access_log  common
<Directory "/webdata/www2">    
    Options Indexes FollowSymLinks      #列出所有文件, 不建议使用,会暴露目录所有内容
    AllowOverride None
    Require all granted
</Directory>
</VirtualHost>    
 

<VirtualHost *:80>
    Serveradmin xxxxxx
    DocumentRoot /webdata/www3         #就访问不到
    ServerName  www.www3.com
    ErrorLog logs/error_log
CustomLog logs/access_log  common
</VirtualHost>    
  
  
  反向代理以及负载均衡功能的实现
  
要使用反向搭理功能, 首先需要动态开启apache的代理模块, 找到apache的配置文件httpd.conf, 添加如下模块到配置文件
LoadModule  proxy_module modules/mod_proxy.so
LoadModule  proxy_http_module  modules/mod_proxy_http.so
LoadModule  proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule  slotmem_shm_module  modules/mod_slotmem_shm.so
可鞥还需要开启如下模块, 后面会用到

LoadModule  lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
LoadModule    lbmethod_bytraffic_module  modules/mod_lbmethod_bytraffic.so
LoadModule    lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so


1. ProxyPass 指令
ProxyPass 指令用法如下:
ProxyPass [path]  !|url
    path参数为本地主机的url 路径, url 参数为代理的后端服务器的url的一部分, 不能包含查询参数, proxypass指令用于映射请求到后端服务器,
    它主要是用作url前缀匹配, 不能有正则表达式, 它里面配置的path 实际上是一个虚拟的路径, 在反向代理到后端url后, path是不会带过去的.
    最简单的代理示例是对所欧请求"/" 都映射到一个后端服务器上,
    ProxyPass  "/"   "http://www.abc.com"
    
    要在特定的url进行代理,  其它的所有请求都在本地处理, 可以配置如下:
    ProxyPass "/images"   "http://www.abc.com"
    这个配置说明只有 /images 开头的路径才会代理转发, 假定访问的域名为 http://www.example.com, 当客户端请求 http://www.example.com/images/server.git
    这个url后, /images这个路径没有带过去,
    
    ProxyPass  /  image/  !
    表示 /images/请求不被转发
    
2. ProxyPassReverse指令
   此指令一般和proxypass 指令搭配使用, 此指令可使用 apache 调整http重定向应答中URL头里的url, 通过此指令, 可以避免在apache作为反向代理使用时后端服务器
   的http 重定向造成绕过反向代理的问题,
   ProxyPass  /example  http://www.abc.com
   ProxyPassReverse  /example   http://www.abc.com
   
3. ProxyPassMatch 指令
   此指令实际上是正则匹配模式的proxypass, 是基于URL的正则匹配, 而匹配上的规则部分是会带到后端的URL的,
   ProxyPassMatch   ^/images  !
   表示对/images的请求, 都不会被转发
   
   ProxyPassMatch  ^(/.*.gif)   http://www.static.com/$1
   表示对所有gif图片的请求, 都会转到后端服务器, 假定访问的域名为www.abc.com 当有如下访问请求时:
   http://www.abc.com/img/abc.gif ,那么法相代理将会转换为下面的内部请求地址:
   http://www.static.com/img/abc.gif
   
<VirtualHost *:80>
    Serveradmin xxxxxx
    DocumentRoot /webdata/www2
    ServerName  www.www2.com
    ErrorLog logs/error_log
CustomLog logs/access_log  common
<Directory "/webdata/www2">    
    Options Indexes FollowSymLinks      #列出所有文件, 不建议使用,会暴露目录所有内容
    AllowOverride None
    Require all granted
</Directory>
</VirtualHost>    

ProxyPass  /a/b/c  http://192.168.62.168
ProxyPassReverse  /a/b/c/  http://192.168.62.168    
   

负载均衡
apache 支持创建一个后端服务器节点组, 通过反向代理进行引用, 实现负载均衡功能,
<Proxy balancer://myserver>
    BalancerMember  http://1.1.1.1
    BalancerMember  http://2.2.2.2
    ProxySet  lbmethod=byrequests
</Proxy>

ProxyPass "/img"  "balancer://myserver/img"
ProxyPassReverse "/img"  "balancer://myserver/img"     

httpd 有3种负载均衡算法,分别是
    byrequests: 默认, 基于请求数量计算权重
    bytraffic: 基于I/O流量大小计算权重
    bybusyness: 基于挂起的请求(排队暂未处理) 数量计算权重
    
<Proxy balancer://myserver>
    BalancerMember  http://1.1.1.1
    BalancerMember  http://2.2.2.2   loadfactor=3  timeout=1
    ProxySet  lbmethod=byrequests
</Proxy>

ProxyPass "/img"  "balancer://myserver/img"
ProxyPassReverse "/img"  "balancer://myserver/img"         

参数 loadfactor 表示apache 发送请求到后端服务器的权重,默认为1, 可以将该值设置为1 到100之间, 值越大,权重越高
才是 timeout 表示等待后端节点返回数据的超时时间, 单位为秒


在使用了apache负载均衡后,查看负载状态, apache提供了负载均衡状态显示页面.在httpd.conf 添加
<Location "/lbstatus">
    SetHandler balancer-manager
    Require hosts  localhost
    Require ip  172.16.230.120
</Location>    
 

 

 

配置mod_cluster 模块

  • linux-x86_64 mod_cluster binaries,一组httpd的so模块,下载后得到压缩包mod_cluster-1.2.6.Final-linux2-x64-so.tar.gz,只包含mod_advertise.so, mod_manager.so, mod_proxy_cluster.so, mod_slotmem.so 四个so文件,还需要单独安装httpd
  • linux-x86_64 httpd binaries,一个已内置mod_cluster的httpd,下载后得到压缩包mod_cluster-1.2.6.Final-linux2-x64.tar.gz,解压后会得到一个安装配置完成的httpd位于opt/jboss目录下,不需要再单独安装httpd

直接下载so模块(版本有问题)

wget https://ghproxy.com/https://github.com/modcluster/mod_cluster/releases/download/1.3.1.Final/mod_cluster-1.3.1.Final-linux2-x64-so.tar.gz

 

解压缩后拷贝到 /usr/local/apache/modules下

[root@apache mod_cluster-1.3.1]# tar -zxvf mod_cluster-1.3.1.Final-linux2-x64-so.tar.gz

/bin/cp *.so /usr/local/apache/modules/

 

重启apache

./apachectl restart

 

posted @ 2022-03-15 11:11  fengjian1585  阅读(242)  评论(0编辑  收藏  举报