日期:2014-05-17  浏览次数:20961 次

apache安装+负载均衡配置

1.??? 下载apache安装包
以下载httpd-2.2.19.tar.gz作为后续操作的示例
下载httpd-2.2.19.tar.gz到工作主目录,例如:/install_home/


2.??? 解压缩
$>cd /install_home
$>gzip –d httpd-2.2.19.tar.gz
$>tar –xvf httpd-2.2.19.tar
解压后目录结构为:
http-2.2.19
?
3.??? 安装
$> cd /install_home
$>mkdir? apache2
apache2 目录作为apache server的安装目标目录
$> cd /install_home/httpd-2.2.19
$>./configure --prefix= /install_home/apache2 \
?--enable-modules=so --enable-dav \
--enable-maintainer-mode -enable-rewrite --enable-so \
--enable-proxy --enable-http --enable-vhost-alias --enable-proxy-ftp \
?--enable-proxy-ajp --enable-proxy-balancer --enable-proxy-connect
“\”是命令换行但不结束命令
--enable-modules是指启用的models,除了so之外 还有all 和 most两个选项,此处我选择的so,感觉像是所有额外的so的model都会启用,注意只是感觉啊。
--enable-XXXX等这些都是启用的功能,因为要用apache作为负载均衡器,所以启用了相关的模块。上面列出的这些已经能够支持负载均衡的功能了。
这个命令执行需要一段时间,要等一会。
$>make
$>make install
安装完成。


4.??? 基础配置
4.1??? 修改端口
Apache httpd监听的默认端口是80,这个可以在配置文件中进行修改.
$>cd /install_home/apache2/conf
打开httpd.conf文件,将其中的Listen 80 改为自定义的端口号,例如Listen 12000


5.??? 启动停止

5.1??? 启动
$>cd /install_home/apache2/bin
$>./ apachectl start
5.2??? 停止
$>cd? /install_home/apache2/bin
$>./ apachectl stop
5.3??? 测试启动结果
在浏览器中键入http://IP:12000/
在页面中会显示It Works字样,说明启动成功。
注:启动过程中提示如下错误:httpd:Could not reliably determine the server's fully qualified domain name
这个是因为httpd.conf中没有指定servername。解决方案是将配置文件中的
#ServerName localhost:8080
前面的注释去掉,并且修改为正确的servername,比如主机IP等。

6.??? 负载均衡配置
终于到了正餐了。
S1:在httpd.conf文件的最后添加如下内容:
ProxyRequests Off???
<proxy balancer://cluster >
BalancerMember http://192.168.0.140:8080/ loadfactor=1?
BalancerMember http://192.168.0.140:8081/ loadfactor=2???
</proxy>
ProxyPass / balancer://cluster /
???? 其中的红色部分的”cluster”是负载均衡器的名称,可以自己随便定义。
??? BalancerMember 配置的是各个均衡点,http://192.168.0.140:8080/和http://192.168.0.140:8081/ 分别是需要做负载均衡的服务。loadfactor是权重比例,取值为1-100,现在这种比例就是1:2,也就是说访问http://192.168.0.140:8081的次数是http://192.168.0.140:8080的两倍。
另外关于负载均衡还其他几种方案,还有多种负载均衡算法,目前这种能够满足最基础的要求了。其他的负载算法在这里不做赘述,请参考http://saybody.iteye.com/blog/1143094
??? 附:如果是windows环境下,httpd.conf文件还需要去掉下列配置项的注释,这样重启后可以开启相关功能。
??? LoadModule negotiation_module modules/mod_negotiation.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so

S2: 修改extra/httpd-vhosts.conf文件
??? ?修改其中的监听端口
??? NameVirtualHost 12000
??? 删除原有的<VirtualHost>的所有配置内容,然后添加如下内容:
??? <VirtualHost *:12000>
ServerAdmin harvey@harvey.com
ServerName? 192.168.1.1

ServerAlias 192.168.1.1

ProxyPass / balancer://cluster/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://cluster/
</VirtualHost>
注:192.168.1.1 是服务器的IP。cluster是负载均衡器的名称。
S3:重启httpd服务,确认负载均衡是否正常。
在浏览器中键入http://192.168.1.1:12000/ 连续刷新检查是否请求到不同的服务点。

注:如果配置负载均衡后启动提示如下错误:
Invalid command 'ProxyPass', perhaps misspelled or defined by