如何配置Web服务器实现负载均衡

如何配置Web服务器实现负载均衡,第1张

这篇实用文章介绍如何将pfSense 2.0配置成你那些Web服务器负载均衡器。这篇实用文章假设你已经安装了一个pfSense设备和至少两台Apache服务器,并且运行在你的网络上;还假设你具备了pfSense方面的一些知识。

要求

一台设备用于安装pfSense 2.0(如果这是你的边缘防火墙,我会建议物理机器)。

至少两台Apache2服务器(这些可以是虚拟服务器)。

对Apache服务器进行了配置,以便以某种方式同步Web文件(rsync/corosync或通过Web服务器维持文件版本最新的另一个选项)。

配置pfSense

pfSense使用负载均衡器,将某些类型的流量带来的负载分摊到多台服务器上;如果你有多台服务器用于托管运行应用程序,这很好;你可以将负载分摊到所有服务器上,而不是把负载全扔给一台服务器、导致不堪重负。

可以入手了,先点击“Services”(服务),然后点击“Load Balancers”(负载均衡器),然后点击“Monitor”(监视器)选项卡。

要添加一个新条目,点击“Plus”(添加)按钮,指槐皮定“Name”(名称)和“Description”(描述,在这个示例中,我会使用ApacheClusterMon作为名称和描述),将类型设成“HTTP”,然后为“Host”(主机)设置一个未使用的IP地址(我们随后会创建虚拟服务器的IP,以便分配给故障切换服务器组),任由“HTTP Code”(HTTP代码)设成“200 OK”。需要的话,然后点击“Save”(保存),使更改生效。

现在我们要创建服务器池。点击“Pools”(服务器池)选项卡,点击“Plus”(添加)按钮,即可添加新的服务器池。

指定一个名称(ApacheSrvPool将用在我的示例中)。将“Mode”(模式)设成“Load Balance”(负载均衡),然后将“Port”(端口)设成“80”(你可以让pfSense对其他端口上的其他应用程序实现负载均衡),将“Monitor”(监视器)设成你之前创建的监视器配置,并且指定你希望在服务器池中的所有Web服务器的IP地址,需要的话,点击“Save”(保存),使更改生效。

接下来铅胡差点击“Virtual Servers”(虚拟服务器)选项卡,点击“Plus”(添加)按钮,添加一个新条目。指定“Name”(名称)和“Description”(描述),然后用你之前选择的未使用IP地址来设置“IP Address”(IP地址),将“Port”(端口)设成“80”,然后将“Virtual Server Pool”(虚拟服务器池)设成你之前创建的服务器池,点击做信“Submit”(提交),使更改生效。

就这样,你刚配置好了pfSense,对你的Web服务器之间的网络流量实现负载均衡。

顺便提一下,如果任何一台服务器没有给出200 OK状态这样的回应(pfSense定期向你的Web服务器发送请求,以确定它们是否正常运行),服务器池就会处于离线停运状态。要避免出现停运,最好的办法就是配置故障切换系统(下一篇文章会有介绍)。

HAProxy是一款反向代理服务器工具,通过它,可以实现基渗负载均衡。它支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。新的1.3引入了frontend,backend,frontend根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend.

利用HAPorxy实现负载均衡

1. 利用HAProxy实现负载均衡

192.168.169.137 (haproxy)———负载均搏悔脊衡———-(192.168.169.117192.168.169.118)

安装配置HAproxy

cd /usr/local/

wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.2.tar.gz

tar zxvf haproxy-1.3.14.2.tar.gz

mv haproxy-1.3.14.2 haproxy

cd haproxy

make TARGET=linux26

2. 创建配置文件

# vi haproxy.cfg

global

maxconn 5120

chroot /前派usr/local/haproxy

uid 99

gid 99

daemon

quiet

nbproc 2 #通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会短很多,性能自然就能提高不少

#pidfile /var/run/haproxy-private.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 webfarm 0.0.0.0:80

mode http

stats uri /haproxy-stats #监控haproxy状态

stats realm Haproxy\ statistics

stats auth netseek:52netseek #设置状态监控的用户名为netseek密码为52netseek

balance roundrobin #负载均衡算法

cookie SERVERID insert indirect

option httpclose #

option forwardfor #apache日志转发功能

option httpchk HEAD /check.txt HTTP/1.0 #健康检测

server app_bbs1 192.168.169.117:80 cookie app1inst1 check inter 2000 rise 2 fall 5

server app_bbs2 192.168.169.118:80 cookie app1inst2 check inter 2000 rise 2 fall 5

syslog.conf里加一行

local3.* /var/log/haproxy.log

# touch /var/log/haproxy.log

# chown haproxy:haproxy /var/log/haproxy.log

# chmod u+x /var/log/haproxy.log

# tail –f /var/log/harpoxy.log 监控日志

# ./haproxy -f haproxy.cfg 启动服务.

监控状态图示http://192.168.169.137/haproxy-stats ,输入用户名密码查看状态。

后端apache日志处理

配置httpd.conf

LogFormat “%{X-Forwarded-For}i %l %u %t \”%r\” %>s %b ” combined

CustomLog /var/log/httpd/access_log combined

虚拟主机不记录检测日志:

SetEnvIf Request_URI “^/check\.txt$” dontlog

LogLevel warn

ErrorLog /var/log/httpd/vhost_error.log

CustomLog /var/log/httpd/vhost_access.log combined env=!dontlog

相关介绍

#./haproxy –help //haproxy相关命令参数介绍.

haproxy -f <配置文件>[-n 最大并发连接总数] [-N 每个侦听的最大并发数] [-d] [-D] [-q] [-V] [-c] [-p <pid文件>] [-s] [-l] [-dk]

[-ds] [-de] [-dp] [-db] [-m <内存限制M>] [{-sf|-st} pidlist...]

-d 前台,debug模式

-D daemon模式启动

-q 安静模式,不输出信息

-V 详细模式

-c 对配置文件进行语法检查

-s 显示统计数据

-l 显示详细统计数据

-dk 不使用kqueue

-ds 不使用speculative epoll

-de 不使用epoll

-dp 不使用poll

-db 禁用后台模式,程序跑在前台

-sf <pidlist>

程序启动后向pidlist里的进程发送FINISH信号,这个参数放在命令行的最后

-st <pidlist>

程序启动后向pidlist里的进程发送TERMINATE信号,这个参数放在命令行的最后


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12380851.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存