负载均衡如何实现,如何做负载均衡


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

利用HAPorxy实现负载均衡

1. 利用HAProxy实现负载均衡
192.168.169.137 (haproxy)———负载均衡———-(192.168.169.117;192.168.169.118)
安装配置HAproxy
cd /usr/local/
wget
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 启动服务.
监控状态图示 ,输入用户名密码查看状态 。

后端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信号 , 这个参数放在命令行的最后
怎样实现服务器的负载均衡??? 内网负载均衡应该是两台核心层交换机中间链路做链路聚合lacp , 个人认为是这样、、
负载均衡技术及实现方法 它们是按SMP、NUMA、MPP、集群、分布处理从最紧密到最松散的排列 。 SMP(多处理系统):这种系统是在一台计算机里有多个CPU,CPU之间的地位是平等的 , 它们共享内存空间和I/O设备 。 其工作方法是由操作系统负责将任务分解成多个并发进程 , 然后让其在不同的CPU上运行 。 NUMA(非统一内存存取):这种系统可以让多处理计算机的CPU比SMP更高效地共享本地内存 , CPU可以更快速地存取单一的内存区域 , 不过如需要也可以用间接方式存取其他区域的内存 , 这种方法是让某些CPU在给定范围的物理内存中有更大的优先使用权 。 MPP(巨型并行处理):这种系统的节点都有自己的CPU , 并有自己的专有资源 。 此种结构相对独立 , 但各个节点一般没有完全存取I/O的能力 。 集群:集群系统是由独立的计算机组成 , 但有控制管理工具统一管理 。 分布处理:它是比我们要构筑的集群系统更松散的连接 , 一般是任务在不同的地方完成 , 没有可以作为整体管理的单一实体 。 以上的聚合方式有紧有疏 , 它们都有自己的适用范围 , 这里就不多说了 , 有兴趣可自己找些资料看 , 这里只是想让大家了解它所处的位置 。 实现负载均衡的方法 集群的目的是共享和高效地利用资源 , 提供大型运算 , 提供负载均衡分配请求压力以及出现故障时能够进行切换实现高可用性 。 限于篇幅 , 本文只对负载均衡的实现做些介绍(针对TurboLinux Cluster Server) 。 通过对相关软件的分析 , 实现集群负载的功能是通过流量管理实现的 , 具体有这样几种实现方法:直接路由(Direct forwarding)、网络地址转换(NAT)、隧道技术(Tunneling) 。 直接路由(Direct forwarding) 当参与集群的计算机和作为控制管理的计算机在同一个网段时可以用此法 , 控制管理的计算机接收到请求包时直接送到参与集群的节点 。 优点是返回给客户的流量不经过控制主机 , 速度快开销少 。 网络地址转换(NAT) 这种方法可能大家较熟悉 , 地址转换器有能被外界访问到的合法IP地址 , 它修改来自专有网络的流出包的地址 , 外界看起来包是来自地址转换器本身 , 当外界包送到转换器时 , 它能判断出应该将包送到内部网的哪个节点 。 优点是节省IP地址 , 能对内部进行伪装;缺点是效率低 , 因为返回给请求方的流量经过转换器 。 隧道技术(Tunneling) 这种方式是在集群的节点不在同一个网段时可用的转发机制 , 是将IP包封装在其他网络流量中的方法 , 为了安全的考虑 , 应该使用隧道技术中的VPN,也可使用租用专线 。 集群所能提供的服务是基于TCP/IP的Web服务、Mail服务、News服务、DNS服务、Proxy服务器等等 , 下面我们将就具体的产品TurboLinux Cluster Server 来实现一个进行负载均衡集群系统 , 用于提供Web和FTP的服务 。 四台服务器的负载均衡实例 所提供的服务:Web、FTP 。 系统的实现目的:做一个较完善负载均衡的系统 , 以便能用到其中的较多的功能 。 采用设备状况:使用四台服务器 , 其中3台装TurboLinux Cluster Server,1台安装Windows 2000 Sever 。 系统安装 1.在两台服务器上安装TurboLinux ,  apache和wu-ftpd也要安装 , 因为集群要提供这种服务,安装完后重启 , 挂接光驱在目录/mnt/cdrom下 , 执 行./TLCS-install,然后按提示完全安装 。

推荐阅读