<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title>meisw's blog</title>
		<link>http://meisw.wdlinux.cn//</link>
		<description>工作,学习,生活,这里将会有一些记录.     备用域名:http://meisw.wdlinux.cn</description>
		<copyright>Copyright (C) 2004 Security Angel Team [S4T] All Rights Reserved.</copyright>
		<generator>SaBlog-X Version 1.6 Build 20080806</generator>
		<lastBuildDate>Sun, 31 May 2026 00:48:34 +0000</lastBuildDate>
		<ttl>30</ttl>
		<item>
			<guid>http://meisw.wdlinux.cn//show-838-1.html</guid>
			<title>lvs</title>
			<author>admin</author>
			<description><![CDATA[<p>net.ipv4.ip_forward = 0 <br />
net.ipv4.conf.all.send_redirects = 1<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.eth0.send_redirects = 1</p>
<p>ifconfig eth0:3 17.139.148.246 broadcast 17.139.148.246 netmask 255.255.255.255 up<br />
route add -host 17.139.148.246 dev eth0:3</p>
<p>ipvsadm -C<br />
ipvsadm -A -t 17.139.148.246:http -s rr<br />
ipvsadm -a -t 17.139.148.246:http -r 17.139.165.210 -g -w 1<br />
ipvsadm -a -t 17.139.148.246:http -r 17.139.144.218 -g -w 1</p>
<p>ipvsadm -C<br />
ipvsadm -A -t 17.139.148.246:80 -s rr<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.165.210 -g -w 1<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.144.218 -g -w 1</p>
<p>ipvsadm -C<br />
ipvsadm -A -t 17.139.148.246:80 -s rr<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.148.244 -g -w 1<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.148.245 -g -w 1</p>
<p><br />
net.ipv4.ip_forward = 0<br />
net.ipv4.conf.lo.arp_ignore = 1<br />
net.ipv4.conf.lo.arp_announce = 2<br />
net.ipv4.conf.all.arp_ignore = 1<br />
net.ipv4.conf.all.arp_announce = 2</p>
<p>ifconfig lo:0 17.139.148.246 broadcast 17.139.148.246 netmask 255.255.255.255 up<br />
route add -host 17.139.148.246 dev lo:0</p>
<p><br />
grep ip_vs_init /boot/System.map</p>
<p><br />
------------------------------------</p>
<p>iptunnel</p>
<p>LB<br />
ifconfig tunl0 17.139.148.246 broadcast 17.139.148.246 netmask 255.255.255.0 up<br />
route add -host 17.139.148.246 dev tunl0<br />
ipvsadm -C<br />
ipvsadm -A -t 17.139.148.246:80 -s rr<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.165.210 -i<br />
ipvsadm -a -t 17.139.148.246:80 -r 17.139.144.218 -i<br />
ipvsadm -a -t 17.139.148.246:80 -r 6.198.139.186 -i<br />
ipvsadm -a -t 17.139.148.246:80 -r 6.229.125.146 -i<br />
ipvsadm -a -t 17.139.148.246:80 -r 11.34.173.210 -i<br />
ipvsadm -a -t 17.139.148.246:80 -r 11.34.169.10 -i</p>
<p>RS<br />
ifconfig tunl0 17.139.148.246 broadcast 17.139.148.246 netmask 255.255.255.0 up<br />
route add -host 17.139.148.246 dev tunl0</p>
<p>net.ipv4.conf.lo.arp_ignore = 1<br />
net.ipv4.conf.lo.arp_announce = 2<br />
net.ipv4.conf.all.arp_ignore = 1<br />
net.ipv4.conf.all.arp_announce = 2</p>
<p>&nbsp;</p>
<p><font color="#000080">http://lansgg.blog.51cto.com/5675165/1229421</font></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-838-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2013-11-27 21:13</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-837-1.html</guid>
			<title>haproxy配置文件详解</title>
			<author>admin</author>
			<description><![CDATA[<p>#/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid` <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ####################全局配置信息######################## <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #######参数是进程级的，通常和操作系统（OS）相关######### <br />
global <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxconn 20480&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #默认最大连接数 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log 127.0.0.1 local3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #[err warning info debug] <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; chroot /var/haproxy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #chroot运行的路径 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uid 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #所属运行的用户uid <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gid 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #所属运行的用户组 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #以后台形式运行haproxy <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nbproc 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #进程数量(可以设置多个进程提高性能) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pidfile /var/run/haproxy.pid&nbsp;&nbsp;&nbsp; #haproxy的pid存放路径,启动进程的用户必须有权限访问此文件 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit-n 65535&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #ulimit的数量限制 <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #####################默认的全局设置###################### <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ##这些参数可以被利用配置到frontend，backend，listen组件## <br />
defaults <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log global <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #所处理的类别 (#7层 http;4层tcp&nbsp; ) <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxconn 20480&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #最大连接数 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httplog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #日志类别http日志格式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpclose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #每次请求完毕后主动关闭http通道 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option dontlognull&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #不记录健康检查的日志信息 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option forwardfor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #如果后端服务器需要获得客户端真实ip需要配置的参数，可以从Http Header中获得客户端ip&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option redispatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #serverId对应的服务器挂掉后,强制定向到其他健康的服务器&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option abortonclose&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当服务器负载很高的时候，自动结束掉当前队列处理比较久的连接 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats refresh 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #统计页面刷新间隔 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retries 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #3次连接失败就认为服务不可用，也可以通过后面设置 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #默认的负载均衡的方式,轮询方式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #balance source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #默认的负载均衡的方式,类似nginx的ip_hash <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #balance leastconn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #默认的负载均衡的方式,最小连接 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contimeout 5000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #连接超时 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clitimeout 50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #客户端超时 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; srvtimeout 50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器超时 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeout check 2000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #心跳检测超时 <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ####################监控页面的设置####################### <br />
listen admin_status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #Frontend和Backend的组合体,监控组的名称，按需自定义名称 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bind 0.0.0.0:65532&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监听端口 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log 127.0.0.1 local3 err&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #错误日志记录 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats refresh 5s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #每隔5秒自动刷新监控页面 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats uri /admin?stats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监控页面的url <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats realm itnihao\ itnihao&nbsp;&nbsp; #监控页面的提示信息 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats auth admin:admin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监控页面的用户和密码admin,可以设置多个用户名 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats auth admin1:admin1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监控页面的用户和密码admin1 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats hide-version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #隐藏统计页面上的HAproxy版本信息&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats admin if TRUE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #手工启用/禁用,后端服务器(haproxy-1.4.9以后版本) <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorfile 403 /etc/haproxy/errorfiles/403.http <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorfile 500 /etc/haproxy/errorfiles/500.http <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorfile 502 /etc/haproxy/errorfiles/502.http <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorfile 503 /etc/haproxy/errorfiles/503.http <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; errorfile 504 /etc/haproxy/errorfiles/504.http <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #################HAProxy的日志记录内容设置################### <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture request&nbsp; header Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len 40 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture request&nbsp; header Content-Length len 10 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture request&nbsp; header Referer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len 200 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture response header Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; len 40 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture response header Content-Length len 10 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; capture response header Cache-Control&nbsp; len 8 <br />
&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #######################网站监测listen配置##################### <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ###########此用法主要是监控haproxy后端服务器的监控状态############ <br />
listen site_status <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bind 0.0.0.0:1081&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监听端口 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log 127.0.0.1 local3 err&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #[err warning info debug] <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; monitor-uri /site_status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #网站健康检测URL，用来检测HAProxy管理的网站是否可以用，正常返回200，不正常返回503 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acl site_dead nbsrv(server_web) lt 2 #定义网站down时的策略当挂在负载均衡上的指定backend的中有效机器数小于1台时返回true <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acl site_dead nbsrv(server_blog) lt 2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acl site_dead nbsrv(server_bbs)&nbsp; lt 2&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; monitor fail if site_dead&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当满足策略的时候返回503，网上文档说的是500，实际测试为503 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; monitor-net 192.168.16.2/32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #来自192.168.16.2的日志信息不会被记录和转发 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; monitor-net 192.168.16.3/32 <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########frontend配置############ <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #####注意，frontend配置里面可以定义多个acl进行匹配操作######## <br />
frontend http_80_in <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bind 0.0.0.0:80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #监听端口，即haproxy提供web服务的端口，和lvs的vip端口类似 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #应用全局的日志配置 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httplog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #启用http的log <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpclose&nbsp;&nbsp;&nbsp;&nbsp; #每次请求完毕后主动关闭http通道，HA-Proxy不支持keep-alive模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option forwardfor&nbsp;&nbsp;&nbsp; #如果后端服务器需要获得客户端的真实IP需要配置次参数，将可以从Http Header中获得客户端IP <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########acl策略配置############# <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acl itnihao_web hdr_reg(host) -i ^(<a href="http://www.itnihao.cn|ww1.itnihao.cn)$">www.itnihao.cn|ww1.itnihao.cn)$</a>&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #如果请求的域名满足正则表达式中的2个域名返回true -i是忽略大小写 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acl itnihao_blog hdr_dom(host) -i blog.itnihao.cn <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #如果请求的域名满足<a href="http://www.itnihao.cn">www.itnihao.cn</a>返回true -i是忽略大小写 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #acl itnihao&nbsp;&nbsp;&nbsp; hdr(host) -i itnihao.cn <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #如果请求的域名满足itnihao.cn返回true -i是忽略大小写 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #acl file_req url_sub -i&nbsp; killall= <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #在请求url中包含killall=，则此控制策略返回true,否则为false <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #acl dir_req url_dir -i allow <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #在请求url中存在allow作为部分地址路径，则此控制策略返回true,否则返回false <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #acl missing_cl hdr_cnt(Content-length) eq 0 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当请求的header中Content-length等于0时返回true <br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ########acl策略匹配相应############# <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #block if missing_cl <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当请求中header中Content-length等于0阻止请求返回403 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #block if !file_req || dir_req <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #block表示阻止请求，返回403错误，当前表示如果不满足策略file_req，或者满足策略dir_req，则阻止请求 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use_backend&nbsp; server_web&nbsp; if itnihao_web <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当满足itnihao_web的策略时使用server_web的backend <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; use_backend&nbsp; server_blog if itnihao_blog <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当满足itnihao_blog的策略时使用server_blog的backend <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #redirect prefix <a href="http://blog.itniaho.cn">http://blog.itniaho.cn</a> code 301 if itnihao <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当访问itnihao.cn的时候，用http的301挑转到<a href="http://192.168.16.3">http://192.168.16.3</a> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; default_backend server_bbs <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #以上都不满足的时候使用默认server_bbs的backend <br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ##########backend的设置############## <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #下面我将设置三组服务器 server_web，server_blog，server_bbs<br />
###########################backend server_web############################# <br />
backend server_web <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin&nbsp;&nbsp; #负载均衡的方式，roundrobin平均方式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie SERVERID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #允许插入serverid到cookie中，serverid后面可以定义 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpchk GET /index.html #心跳检测的文件 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server web1 192.168.16.2:80 cookie web1 check inter 1500 rise 3 fall 3 weight 1&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web1，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用， <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #fall 3是3次失败认为服务器不可用，weight代表权重 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server web2 192.168.16.3:80 cookie web2 check inter 1500 rise 3 fall 3 weight 2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web2，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用， <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #fall 3是3次失败认为服务器不可用，weight代表权重 <br />
&nbsp;<br />
###################################backend server_blog############################################### <br />
backend server_blog <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin&nbsp;&nbsp; #负载均衡的方式，roundrobin平均方式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie SERVERID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #允许插入serverid到cookie中，serverid后面可以定义 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpchk GET /index.html #心跳检测的文件 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server blog1 192.168.16.2:80 cookie blog1 check inter 1500 rise 3 fall 3 weight 1&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web1，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用，fall 3是3次失败认为服务器不可用，weight代表权重 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server blog2 192.168.16.3:80 cookie blog2 check inter 1500 rise 3 fall 3 weight 2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web2，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用，fall 3是3次失败认为服务器不可用，weight代表权重 <br />
&nbsp;<br />
###################################backend server_bbs############################################### <br />
&nbsp;<br />
backend server_bbs <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #http的7层模式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin&nbsp;&nbsp; #负载均衡的方式，roundrobin平均方式 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cookie SERVERID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #允许插入serverid到cookie中，serverid后面可以定义 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpchk GET /index.html #心跳检测的文件 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server bbs1 192.168.16.2:80 cookie bbs1 check inter 1500 rise 3 fall 3 weight 1&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web1，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用，fall 3是3次失败认为服务器不可用，weight代表权重 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server bbs2 192.168.16.3:80 cookie bbs2 check inter 1500 rise 3 fall 3 weight 2 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #服务器定义，cookie 1表示serverid为web2，check inter 1500是检测心跳频率rise 3是3次正确认为服务器可用，fall 3是3次失败认为服务器不可用，weight代表权重</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-837-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2013-11-27 16:06</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-836-1.html</guid>
			<title>haproxy.cfg</title>
			<author>admin</author>
			<description><![CDATA[<p>global<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp; local0<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit-n 131091<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxconn 65536<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #chroot /usr/local/haproxy<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; uid 99<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gid 99<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #stats socket /usr/local/haproxy/HaproxSocket level admin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #stats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; socket /var/run/socket level admin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; daemon<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nbproc 8<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pidfile /var/run/haproxy.pid<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #debug<br />
defaults<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; log&nbsp;&nbsp;&nbsp; 127.0.0.1&nbsp;&nbsp;&nbsp; local3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode&nbsp;&nbsp; http<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httplog<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #option httplog clf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option httpclose<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option dontlognull<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #option forwardfor<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option redispatch<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; option abortonclose<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; retries 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxconn 65536<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #balance source<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #stats&nbsp;&nbsp; uri&nbsp;&nbsp;&nbsp;&nbsp; /haproxy-stats<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #stats&nbsp;&nbsp; refresh 10s<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; contimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30s<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clitimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60s<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; srvtimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 60s<br />
listen&nbsp; Cluster 0.0.0.0:80<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode http<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; balance roundrobin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #option httpchk GET /goodo.html HTTP/1.0Host:9.126.13.13<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #option httpchk GET /goodo.html<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #server 192.168.0.111_node1&nbsp; 192.168.0.111:80 weight 3 check inter 2000 rise 2 fall 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #server node1 17.139.148.242:80 weight 3 check inter 2000 rise 2 fall 1<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #server node2 17.139.183.18:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node3 17.139.165.210:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node4 17.139.144.218:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node5 11.34.169.10:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node6 11.34.173.210:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node7 6.198.139.186:80 weight 1 check inter 12000 rise 2 fall 3<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; server node8 6.229.125.146:80 weight 1 check inter 12000 rise 2 fall 3<br />
<br />
listen&nbsp; stats_auth 0.0.0.0:91<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode&nbsp; http<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats enable<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats uri&nbsp; /admin<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats realm &quot;LOGIN&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats auth&nbsp; admin:123456<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats hide-version<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats refresh 10s<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stats admin if TRUE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bind-process&nbsp;&nbsp;&nbsp; 1</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-836-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2013-11-27 16:00</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-833-1.html</guid>
			<title>haproxy配置文件解析</title>
			<author>admin</author>
			<description><![CDATA[<p>修改操作系统的日志配置<br />
HAProxy可以收集本机及其他后端服务器日志，但是需要在HAProxy和操作系统上作一些配置。<br />
使用root账户首先修改/etc/sysconfig/syslog文件，将SYSLOGD_OPTIONS=&quot;-m 0&rdquo; 修改为SYSLOGD_OPTIONS=&quot;-m 0 -r -x&quot;，支持收集远程服务器日志。<br />
然后修改/etc/syslog.conf，增加如下语句：<br />
local0.* /home/admin/haproxy/logs/haproxy.log // haproxy.log地址代表了需要存储日志的地址，其中local0这个级别要和haproxy.cfg配置的log级别一样<br />
执行service syslog restart，重新启动系统日志器</p>
<p>&nbsp;</p>
<p>2. HAProxy的配置<br />
HAProxy配置中分成五部分内容，当然这些组件不是必选的，可以根据需要选择部分作为配置。<br />
global：参数是进程级的，通常和操作系统（OS）相关。这些参数一般只设置一次，如果配置无误，就不需要再次配置进行修改<br />
defaults：配置默认参数的，这些参数可以被利用配置到frontend，backend，listen组件<br />
frontend：接收请求的前端虚拟节点，Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)。<br />
backend：后端服务集群的配置，是真实的服务器，一个Backend对应一个或者多个实体服务器。<br />
listen：Frontend和Backend的组合体。<br />
下面是HAProxy的一些常用的配置，这个配置是用来说明HAProxy的一些常用功能的配置，具体详细配置请查看安装目录下的doc目录下的文档文件，或者到&rdquo; <a href="http://cn.haproxy.org/">http://cn.haproxy.org/</a>&rdquo;<br />
下载中文配置说明文档<br />
配置文件例子：<br />
global<br />
#全局的日志配置 其中日志级别是[err warning info debug]<br />
#local0 是日志设备，必须为如下24种标准syslog设备的一种: <br />
#kern user mail daemon auth syslog lpr news <br />
#uucp cron auth2 ftp ntp audit alert cron2 <br />
#local0 local1 local2 local3 local4 local5 local6 local7 <br />
#但是之前在/etc/syslog.conf文件中定义的是local0所以<br />
#这里也是用local0<br />
log 127.0.0.1 local0 info #[err warning info debug]<br />
#最大连接数<br />
maxconn 4096<br />
#用户<br />
user admin<br />
#组<br />
group admin<br />
#使HAProxy进程进入后台运行。这是推荐的运行模式<br />
daemon<br />
#创建4个进程进入deamon模式运行。此参数要求将运行模式设置为&quot;daemon&quot;<br />
nbproc 4<br />
#将所有进程的pid写入文件<br />
pidfile /home/admin/haproxy/logs/haproxy.pid<br />
defaults <br />
#默认的模式mode { tcp|http|health }，tcp是4层，http是7层，health只会返回OK<br />
mode http<br />
#采用http日志格式<br />
option httplog<br />
#三次连接失败就认为是服务器不可用，也可以通过后面设置<br />
retries 3<br />
如果cookie写入了serverId而客户端不会刷新cookie，<br />
#当serverId对应的服务器挂掉后，强制定向到其他健康的服务器<br />
option redispatch<br />
#当服务器负载很高的时候，自动结束掉当前队列处理比较久的链接<br />
option abortonclose<br />
#默认的最大连接数<br />
maxconn 4096<br />
#连接超时<br />
contimeout 5000<br />
#客户端超时<br />
clitimeout 30000<br />
#服务器超时<br />
srvtimeout 30000<br />
#=心跳检测超时<br />
timeout check 2000<br />
#注：一些参数值为时间，比如说timeout。时间值通常单位为毫秒(ms)，但是也可以通过加#后缀，来使用其他的单位。<br />
#- us : microseconds. 1 microsecond = 1/1000000 second<br />
#- ms : milliseconds. 1 millisecond = 1/1000 second. This is the default.<br />
#- s : seconds. 1s = 1000ms<br />
#- m : minutes. 1m = 60s = 60000ms<br />
#- h : hours. 1h = 60m = 3600s = 3600000ms<br />
#- d : days. 1d = 24h = 1440m = 86400s = 86400000ms<br />
########统计页面配置############<br />
listen admin_stats<br />
#监听端口<br />
bind 0.0.0.0:1080<br />
#http的7层模式<br />
mode http<br />
#日志设置<br />
log 127.0.0.1 local0 err #[err warning info debug]<br />
#统计页面自动刷新时间<br />
stats refresh 30s<br />
#统计页面url<br />
stats uri /admin?stats<br />
#统计页面密码框上提示文本<br />
stats realm Gemini\ Haproxy<br />
#统计页面用户名和密码设置<br />
stats auth admin:admin<br />
stats auth admin1:admin1<br />
#隐藏统计页面上HAProxy的版本信息<br />
stats hide-version<br />
#######网站检测listen定义############<br />
listen site_status<br />
bind 0.0.0.0:1081<br />
mode http<br />
log 127.0.0.1 local0 err #[err warning info debug]<br />
#网站健康检测URL，用来检测HAProxy管理的网站是否可以用，正常返回200，不正常返回500<br />
monitor-uri /site_status<br />
#定义网站down时的策略<br />
#当挂在负载均衡上的指定backend的中有效机器数小于1台时返回true<br />
acl site_dead nbsrv(denali_server) lt 1<br />
acl site_dead nbsrv(tm_server) lt 1 <br />
acl site_dead nbsrv(mms_server) lt 1<br />
#当满足策略的时候返回500<br />
monitor fail if site_dead<br />
#如果192.168.0.252或者192.168.0.31这两天机器挂了<br />
#认为网站挂了，这时候返回500，判断标准是如果mode是<br />
#http返回200认为是正常的，如果mode是tcp认为端口畅通是好的<br />
monitor-net 192.168.0.252/31<br />
########frontend配置############<br />
frontend http_80_in<br />
#监听端口<br />
bind 0.0.0.0:80<br />
#http的7层模式<br />
mode http<br />
#应用全局的日志配置<br />
log global<br />
#启用http的log<br />
option httplog<br />
#每次请求完毕后主动关闭http通道，HA-Proxy不支持keep-alive模式<br />
option httpclose<br />
#如果后端服务器需要获得客户端的真实IP需要配置次参数，将可以从Http Header中<br />
#获得客户端IP<br />
option forwardfor<br />
###########HAProxy的日志记录内容配置##########<br />
capture request header Host len 40<br />
capture request header Content-Length len 10<br />
capture request header Referer len 200<br />
capture response header Server len 40<br />
capture response header Content-Length len 10<br />
capture response header Cache-Control len 8<br />
####################acl策略定义#########################<br />
#如果请求的域名满足正则表达式返回true -i是忽略大小写<br />
acl denali_policy hdr_reg(host) -i ^(<a href="http://www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$">www.gemini.taobao.net|my.gemini.taobao.net|auction1.gemini.taobao.net)$</a><br />
#如果请求域名满足trade.gemini.taobao.net 返回 true -i是忽略大小写<br />
acl tm_policy hdr_dom(host) -i trade.gemini.taobao.net<br />
##在请求url中包含sip_apiname=，则此控制策略返回true,否则为false<br />
acl invalid_req url_sub -i sip_apiname=<br />
##在请求url中存在timetask作为部分地址路径，则此控制策略返回true,否则返回false<br />
acl timetask_req url_dir -i timetask<br />
#当请求的header中Content-length等于0时返回 true<br />
acl missing_cl hdr_cnt(Content-length) eq 0<br />
######################acl策略匹配相应###################<br />
##当请求中header中Content-length等于0 阻止请求返回403<br />
block if missing_cl<br />
##block表示阻止请求，返回403错误，当前表示如果不满足策略invalid_req，或者满足策略timetask_req，则阻止请求。 <br />
block if !invalid_req || timetask_req <br />
#当满足denali_policy的策略时使用denali_server的backend<br />
use_backend denali_server if denali_policy<br />
#当满足tm_policy的策略时使用tm_server的backend<br />
use_backend tm_server if tm_policy<br />
#reqisetbe关键字定义，根据定义的关键字选择backend<br />
reqisetbe ^Host:\ img dynamic<br />
reqisetbe ^[^\ ]*\ /(img|css)/ dynamic<br />
reqisetbe ^[^\ ]*\ /admin/stats stats<br />
#以上都不满足的时候使用默认mms_server的backend<br />
default_backend mms_server<br />
#HAProxy错误页面设置<br />
errorfile 400 /home/admin/haproxy/errorfiles/400.http<br />
errorfile 403 /home/admin/haproxy/errorfiles/403.http<br />
errorfile 408 /home/admin/haproxy/errorfiles/408.http<br />
errorfile 500 /home/admin/haproxy/errorfiles/500.http<br />
errorfile 502 /home/admin/haproxy/errorfiles/502.http<br />
errorfile 503 /home/admin/haproxy/errorfiles/503.http<br />
errorfile 504 /home/admin/haproxy/errorfiles/504.http<br />
##########backend的设置##############<br />
backend mms_server<br />
#http的7层模式<br />
mode http<br />
#负载均衡的方式，roundrobin平均方式<br />
balance roundrobin<br />
#允许插入serverid到cookie中，serverid后面可以定义<br />
cookie SERVERID<br />
#心跳检测的URL,HTTP/1.1&yen;r&yen;nHost:XXXX,指定了心跳检测HTTP的版本，XXX为检测时请求<br />
#服务器的request中的域名是什么，这个在应用的检测URL对应的功能有对域名依赖的话需要设置<br />
option httpchk GET /member/login.jhtml HTTP/1.1\r\nHost:member1.gemini.taobao.net<br />
#服务器定义，cookie 1表示serverid为1，check inter 1500 是检测心跳频率<br />
#rise 3是3次正确认为服务器可用，fall 3是3次失败认为服务器不可用，weight代表权重<br />
server mms1 10.1.5.134:80 cookie 1 check inter 1500 rise 3 fall 3 weight 1<br />
server mms2 10.1.6.118:80 cookie 2 check inter 1500 rise 3 fall 3 weight 2<br />
backend denali_server<br />
mode http<br />
#负载均衡的方式，source根据客户端IP进行哈希的方式<br />
balance source<br />
#但设置了backup的时候，默认第一个backup会优先，设置option allbackups后<br />
#所有备份服务器权重一样<br />
option allbackups<br />
#心跳检测URL设置<br />
option httpchk GET /mytaobao/home/my_taobao.jhtml HTTP/1.1\r\nHost:my.gemini.taobao.net<br />
#可以根据机器的性能不同，不使用默认的连接数配置而使用自己的特殊的连接数配置<br />
#如minconn 10 maxconn 20<br />
server denlai1 10.1.5.114:80 minconn 4 maxconn 12 check inter 1500 rise 3 fall 3<br />
server denlai2 10.1.6.104:80 minconn 10 maxconn 20 check inter 1500 rise 3 fall 3<br />
#备份机器配置，正常情况下备机不会使用，当主机的全部服务器都down的时候备备机会启用<br />
server dnali-back1 10.1.7.114:80 check backup inter 1500 rise 3 fall 3<br />
server dnali-back2 10.1.7.114:80 check backup inter 1500 rise 3 fall 3<br />
backend tm_server<br />
mode http<br />
#负载均衡的方式，leastconn根据服务器当前的请求数，取当前请求数最少的服务器<br />
balance leastconn<br />
option httpchk GET /trade/itemlist/prepayCard.htm HTTP/1.1\r\nHost:trade.gemini.taobao.ne<br />
server tm1 10.1.5.115:80 check inter 1500 rise 3 fall 3<br />
server tm2 10.1.6.105:80 check inter 1500 rise 3 fall 3<br />
######reqisetbe自定义关键字匹配backend部分#######################<br />
backend dynamic<br />
mode http<br />
balance source<br />
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net<br />
server denlai1 10.3.5.114:80 check inter 1500 rise 3 fall 3<br />
server denlai2 10.4.6.104:80 check inter 1500 rise 3 fall 3<br />
backend stats<br />
mode http<br />
balance source<br />
option httpchk GET /welcome.html HTTP/1.1\r\nHost:www.taobao.net<br />
server denlai1 10.5.5.114:80 check inter 1500 rise 3 fall 3<br />
server denlai2 10.6.6.104:80 check inter 1500 rise 3 fall 3</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>global：参数是进程级的，通常和操作系统（OS）相关</p>
<p>defaults：配置默认参数，这些参数可以被利用配置到frontend，backend，listen组件</p>
<p>frontend：接收请求的前端虚拟节点，Frontend可以根据规则直接指定具体使用后端的 backend(可动态选择)</p>
<p>backend：后端服务集群的配置，是真实的服务器，一个Backend对应一个或者多个实体服务器</p>
<p>listen：Frontend和Backend的组合体</p>
<p>&nbsp;</p>
<p>log 127.0.0.1 local0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用系统的syslog记录日志</p>
<p>maxconn 4096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 限制单个进程的最大连接数</p>
<p>option redispatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在连接失败或断开的情况下，允许当前会话被重新分发</p>
<p>retries 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置在一个服务器上链接失败后的重连次数</p>
<p>balance roundrobin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置服务器分配算法为轮询（即交替访问）<br />
&nbsp;</p>
<p>option dontlognull&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不记录空连接</p>
<p>contimeout 5000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置等待连接到服务器成功的最大时间</p>
<p>clitimeout 50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置客户端的最大超时时间</p>
<p>srvtimeout 50000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置服务器端的最大超时时间</p>
<p>nbproc 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指定作为守护进程运行的时候，要创建多少个进程，默认只创建一个，需要daemon开启模式</p>
<p>daemon&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让进程在后台运行，即作为守护进程运行，正式运行的时候开启，此处先禁止，等同于在命令行添加参数 -D</p>
<p><br />
&nbsp;</p>
<p>debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 设置debug模式运行，与daemon模式互斥，等同于在命令行添加参数 -d</p>
<p><br />
&nbsp;</p>
<p>1080&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 监听端口(随意)</p>
<p>mode http&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http的7层模式</p>
<p><br />
&nbsp;</p>
<p>stats refresh 30s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 统计页面自动刷新时间</p>
<p>stats uri /haproxy-stats&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 统计页面URL</p>
<p><br />
&nbsp;</p>
<p>stats realm Haproxy\ Statistics&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 统计页面密码框上提示文本</p>
<p>stats auth ming:123456&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 统计页面用户名和密码设置</p>
<p>stats hide-version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 隐藏统计页面上HAProxy的版本信息</p>
<p>monitor-uri /site_status&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 网站健康检测URL，用来检测HAProxy管理的网站是否可以用，正常返回200，不正常返回500</p>
<p>&nbsp;</p>
<p>weight&nbsp; -- 调节服务器的负重</p>
<p>check -- 允许对该服务器进行健康检查</p>
<p>inter&nbsp; -- 设置连续的两次健康检查之间的时间，单位为毫秒(ms)，默认值 2000</p>
<p>rise&nbsp; -- 指定多少次连续成功的健康检查后，即可认定该服务器处于可操作状态，默认值 2</p>
<p>fall&nbsp; -- 指定多少次不成功的健康检查后，认为服务器为当掉状态，默认值 3</p>
<p>&nbsp;</p>
<p>balance roundrobin&nbsp;&nbsp;&nbsp;&nbsp; 简单的轮询</p>
<p>balance source&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据请求的源IP</p>
<p>balance uri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 根据请求的url<br />
&nbsp;<br />
balance url_param&nbsp;&nbsp;&nbsp;&nbsp; 根据请求RUL中的参数</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-833-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2013-11-27 14:01</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-757-1.html</guid>
			<title>Linux高可用性方案之Heartbeat的watchdog配置（转）</title>
			<author>admin</author>
			<description><![CDATA[<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;"><span style="color: rgb(255, 0, 0);"><strong>Watchdog概述</strong><span class="Apple-converted-space">&nbsp;</span></span><br />
</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">在日常使用heartbeat接管资源的应用中，由于heartbeat无法对 操作系统自身出现的问题进行监控。如果主节点操作系统挂起，一方面可能导致服务中断，另一方面由于主节点资源无法释放，而备份节点却接管了主节点的资源， 此时就发生了两个节点同时争用一个资源的状况。<br />
针对这个问题，就需要在Linux内核中启用一个叫watchdog的模块。watchdog是一个Linux内核模块，它通过定时向/dev /watchdog设备文件执行写操作，从而确定系统是否正常运行。如果watchdog认为内核挂起，就会重新启动系统，进而释放节点资源。<br />
watchdog代码也支持用软件替换外部的硬件计时器，该软件叫做 softdog，softdog维护一个内部计时器，在另一个进程写入/dev/watchdog设备文件时更新，如果softdog没有看到进程写入 /dev/watchdog文件，它认为内核一定出故障了，它将启动一个内核恐慌，正常情况下，内核恐慌将导致系统关闭，但是你可以修改这个默认行为，将 其改为默认行为为重启系统。<br />
当你在/etc/ha.d/ha.cf文件中启用了watchdog选项后，Heartbeat将每隔相当于deadtime长的时间写入/dev /watchdog文件（或设备），因此，出现任何导致Heartbeat更新 watchdog设备失败的事情，一旦watchdog超时周期（默认是一分钟）过期，watchdog将启动内核恐慌。<br />
<strong><span style="color: rgb(255, 0, 0);">Watchdog的工作原理</span><span class="Apple-converted-space">&nbsp;</span></strong><br />
Watchdog在实现上可以是硬件电路也可以是软件定时器，能够在系统出现故障时自动重新启动系统。在Linux 内核下, watchdog的基本工作原理是：当watchdog启动后(即/dev/watchdog 设备被打开后)，如果在某一设定的时间间隔内/dev/watchdog没有被执行写操作, 硬件watchdog电路或软件定时器就会重新启动系统。<br />
/dev/watchdog 是一个主设备号为10， 从设备号130的字符设备节点。 Linux内核不仅为各种不同类型的watchdog硬件电路提供了驱动，还提供了一个基于定时器的纯软件watchdog驱动。 驱动源码位于内核源码树drivers\char\watchdog\目录下。<br />
<strong><span style="color: rgb(255, 0, 0);">硬件与软件watchdog的区别</span><span class="Apple-converted-space">&nbsp;</span></strong><br />
硬件watchdog必须有硬件电路支持, 设备节点/dev/watchdog对应着真实的物理设备， 不同类型的硬件watchdog设备由相应的硬件驱动管理。软件watchdog由一内核模块softdog.ko 通过定时器机制实现，/dev/watchdog并不对应着真实的物理设备，只是为应用提供了一个与操作硬件watchdog相同的接口。<br />
硬件watchdog比软件watchdog有更好的可靠性。 软件watchdog基于内核的定时器实现，当内核或中断出现异常时，软件watchdog将会失效。而硬件watchdog由自身的硬件电路控制, 独立于内核。无论当前系统状态如何，硬件watchdog在设定的时间间隔内没有被执行写操作，仍会重新启动系统。<br />
一些硬件watchdog卡如WDT501P 以及一些Berkshire卡还可以监测系统温度，提供了 /dev/temperature接口。 对于应用程序而言, 操作软件、硬件watchdog的方式基本相同：打开设备/dev/watchdog, 在重启时间间隔内对/dev/watchdog执行写操作。即软件、硬件watchdog对应用程序而言基本是透明的。<br />
在任一时刻， 只能有一个watchdog驱动模块被加载，管理/dev/watchdog 设备节点。如果系统没有硬件watchdog电路，可以加载软件watchdog驱动softdog.ko。<br />
<strong><span style="color: rgb(255, 0, 0);">测试Watchdog</span></strong></span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">只要在/etc/ha.d/ha.cf加入</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="color: rgb(0, 128, 0); font-size: 12px;">watchdog /dev/watchdog</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">即可自动启用watchdog功能<br />
可通过如下步骤确认<br />
</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;"><span style="color: rgb(0, 128, 0);"><span style="color: rgb(0, 0, 0);">1、</span><span class="Apple-converted-space">&nbsp;</span># grep misc /proc/devices<span class="Apple-converted-space">&nbsp;</span><br />
10 misc<br />
<span style="color: rgb(0, 0, 0);">2、</span><span class="Apple-converted-space">&nbsp;</span># cat /proc/misc |grep watchdog<br />
130 watchdog<br />
<span style="color: rgb(0, 0, 0);">3、</span><span class="Apple-converted-space">&nbsp;</span># lsmod |grep softdog<br />
softdog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9941&nbsp; 2<span class="Apple-converted-space">&nbsp;</span></span><br />
</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">即可确认启用了watchdog功能如果没有生成/dev/watchdong设备，则可通过如下命令自行创建<br />
<span style="color: rgb(0, 128, 0);"><span style="background-color: rgb(255, 255, 255);">mknod /dev/watchdog c 10 130</span><span class="Apple-converted-space">&nbsp;</span></span><br />
在主节点上可通过&quot;killall -9 heartbeat&quot;命令关闭Heartbeat进程。由于是非法关闭Heartbeat进程，因此Heartbeat所控制的资源并没有释放。备份节点 在很短一段时间没有收到主节点的响应后，就会认为主节点出现故障，进而接管主节点资源。在这种情况下，就出现了资源争用情况，两个节点都占用一个资源，造 成数据冲突。针对这个情况，可以通过Linux提供的内核监控模块watchdog来解决这个问题，将watchdog集成到Heartbeat中。如果 Heartbeat异常终止，或者系统出现故障，watchdog都会自动重启系统，从而释放集群资源，避免了数据冲突的发生。<br />
在执行&quot;killall -9 heartbeat&quot;时，会在/var/log/messages中看到如下信息：<br />
<span style="color: rgb(0, 128, 0);">Softdog: WDT device closed unexpectedly. WDT will not stop!<span class="Apple-converted-space">&nbsp;</span></span><br />
系统就会马上重启<br />
</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">&nbsp;</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">参考至:http://linux.chinaitlab.com/linuxjq/744842_6.html</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://book.51cto.com/art/200912/168038.htm</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://aaa3060.blog.163.com/blog/static/2817338520104314466314/</span></p>
<p style="font: 12px/18px Verdana, Helvetica, Arial; margin: 10px auto; text-align: justify; color: rgb(69, 69, 69); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; background-color: rgb(247, 247, 247); -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;"><span style="font-size: 12px;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://blog.sina.com.cn/s/blog_5fc3a8b60100x0ge.html</span></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-757-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2012-12-03 21:29</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-514-1.html</guid>
			<title>LVS集群（NAT\DR\IP tunnel）</title>
			<author>admin</author>
			<description><![CDATA[<p>前期准备：<br />
试验环境 Red Hat Enterprise Linux 4 U2<br />
软件版本 ipvsadm-1.24.tar.gz<br />
编译安装注意<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#pwd<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;/usr/src<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#ln -s kernels/2.6.9-22.EL.i686 linux&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;如果没有目录则安装RPEM包kernel-devel-2.6.9-22.EL<br />
&nbsp; &nbsp;&nbsp; &nbsp; <br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#rpmbuild -tb&nbsp;&nbsp;ipvsadm-1.24.tar.gz<br />
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#rpm -ivh /usr/src/redhat/RPEM/i386/ipvsadm-1.24-6.i386.rpm <br />
正常使用时提示：<br />
[root@lvs boot]# ipvsadm<br />
IP Virtual Server version 1.2.0 (size=65536)<br />
Prot LocalAddress:Port Scheduler Flags<br />
-&gt; RemoteAddress:Port Forward Weight ActiveConn InActConn<br />
&nbsp;&nbsp;<br />
一、NAT方式<br />
Load Balance：192.168.1.1<br />
Virtual IP:&nbsp; &nbsp;10.0.0.1<br />
RealServer1： 192.168.1.2&nbsp; &nbsp; <br />
RealServer2： 192.168.1.3<br />
nameserver:&nbsp; &nbsp;192.168.1.1<br />
gateway:&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.1 (使用正确地址，或者使用本机地址，否则会出现刷新ipvsadm rule时很慢)<br />
1.开启路由机制<br />
#echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
注意：<br />
&nbsp; &nbsp;&nbsp;&nbsp;永久修改要修改sysctl.conf<br />
2.加载nat模块<br />
#modprobe iptable_nat<br />
注意：<br />
&nbsp; &nbsp;&nbsp;&nbsp;用lsmod检查，另如果不加载此模块，也可以在第一次访问时成功，但是会在再次访问时出现延迟过长，或访问超时现象。<br />
3.加载rule<br />
#ipvsadm -A -t 10.0.0.1:80 -s rr<br />
#ipvsadm -a -t 10.0.0.1:80 -r 192.168.1.2:80 -m<br />
#ipvsadm -a -t 10.0.0.1:80 -r 192.168.1.3:80 -m<br />
rr 轮询方式<br />
-m 设置为NAT方式<br />
4.保存rule<br />
#ipvsadm --save &gt; /etc/sysconfig/ipvsadm <br />
5.邦定vip<br />
#ifconfig eth0:1 10.0.0.1 netmask 255.255.255.0 borcast 10.0.0.255<br />
6.RealServer设置<br />
RealServer1:<br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.2<br />
gateway:&nbsp; &nbsp; 192.168.1.1<br />
nameserver: 192.168.1.1<br />
开启HTTP服务，确认自己能够访问。<br />
RealServer2:<br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.3<br />
gateway:&nbsp; &nbsp; 192.168.1.1<br />
nameserver: 192.168.1.1<br />
开启HTTP服务，确认自己能够访问。页面与realserver1不同就可以。<br />
7.测试<br />
选择一台主机，ip设置10.0.0.2 ，访问http://10.0.0.1,反复刷新网页，每次出现的网页不同则表示成功。<br />
二、Direct Routing方式<br />
Load Balance：192.168.1.1<br />
Virtual IP:&nbsp; &nbsp;10.0.0.1<br />
RealServer1： 192.168.1.2&nbsp; &nbsp; <br />
RealServer2： 192.168.1.3<br />
nameserver:&nbsp; &nbsp;192.168.1.254<br />
gateway:&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.254<br />
1.开启路由机制<br />
#echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
注意：<br />
&nbsp; &nbsp;&nbsp;&nbsp;永久修改要修改sysctl.conf<br />
2.加载rule<br />
#ipvsadm -A -t 10.0.0.1:80 -s rr<br />
#ipvsadm -a -t 10.0.0.1:80 -r 192.168.1.2:80 -g<br />
#ipvsadm -a -t 10.0.0.1:80 -r 192.168.1.3:80 -g<br />
rr 轮询方式<br />
-g 设置为DR方式<br />
3.保存rule<br />
#ipvsadm --save &gt; /etc/sysconfig/ipvsadm<br />
4.邦定vip<br />
#ifconfig eth0:1 10.0.0.1 netmask 255.255.255.0 borcast 10.0.0.255<br />
4.RealServer设置<br />
RealServer1:<br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.2<br />
gateway:&nbsp; &nbsp; 192.168.1.254<br />
nameserver: 192.168.1.254<br />
#ifconfig lo:1 10.0.0.1 netmask 255.255.255.255 borcast 10.0.0.1<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;注释：这四句目的是为了关闭ARP广播响应<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce<br />
开启HTTP服务，确认自己能够访问。<br />
RealServer2:<br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.3<br />
gateway:&nbsp; &nbsp; 192.168.1.254<br />
nameserver: 192.168.1.254<br />
#ifconfig lo:1 10.0.0.1 netmask 255.255.255.255 borcast 10.0.0.1<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce<br />
开启HTTP服务，确认自己能够访问。页面与realserver1不同就可以。<br />
5.测试<br />
在网关作测试即可，其中一块ip设置10.0.0.2 ，另一块设置192.168.1.254。访问http://10.0.0.1,反复刷新网页，每次出现的网页不同则表示成功。<br />
三、IP Tunnel方式<br />
vpn server：&nbsp; &nbsp; <br />
&nbsp; &nbsp; eth0:10.0.0.3&nbsp; &nbsp; (测试时使用的OPENVPN)<br />
gateway server：<br />
&nbsp; &nbsp; eth0:10.0.0.2<br />
&nbsp; &nbsp; eth1:192.168.1.254&nbsp;&nbsp;<br />
gatewat server2：<br />
&nbsp; &nbsp; eth0:10.0.0.4<br />
&nbsp; &nbsp; eth1:172.0.0.254&nbsp;&nbsp;<br />
LVS Director Servers:<br />
Load Balance：192.168.1.1<br />
Virtual IP:&nbsp; &nbsp;10.0.0.1<br />
nameserver:&nbsp; &nbsp;192.168.1.254<br />
gateway:&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.254<br />
RealServer1： <br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.2<br />
gateway:&nbsp; &nbsp; 192.168.1.254<br />
nameserver: 192.168.1.254<br />
tun0:&nbsp; &nbsp;&nbsp; &nbsp; 20.0.0.1&nbsp; &nbsp;&nbsp; &nbsp;(这个是连接到vpn后有服务器分配到的)<br />
RealServer2： <br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;172.0.0.1&nbsp; &nbsp;&nbsp;&nbsp;<br />
gateway:&nbsp; &nbsp; 172.0.0.254<br />
nameserver: 172.0.0.254<br />
tun0:&nbsp; &nbsp;&nbsp; &nbsp; 20.0.0.2&nbsp; &nbsp;&nbsp; &nbsp;(这个是连接到vpn后有服务器分配到的)<br />
1.开启路由机制<br />
#echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br />
注意：<br />
&nbsp; &nbsp;&nbsp;&nbsp;永久修改要修改sysctl.conf<br />
2.加载rule<br />
#ipvsadm -A -t 10.0.0.1:80 -s rr<br />
#ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.1:80 -i&nbsp;&nbsp;(RS1的地址指定,也可以选择本地地址192.168.1.2)<br />
#ipvsadm -a -t 10.0.0.1:80 -r 20.0.0.2:80 -i<br />
rr 轮询方式<br />
-i 设置为IP Tunnel方式<br />
3.保存rule<br />
#ipvsadm --save &gt; /etc/sysconfig/ipvsadm<br />
4.邦定vip<br />
#ifconfig eth0:1 10.0.0.1 netmask 255.255.255.0 borcast 10.0.0.255<br />
4.RealServer设置<br />
RealServer1： <br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;192.168.1.2<br />
gateway:&nbsp; &nbsp; 192.168.1.254<br />
nameserver: 192.168.1.254<br />
tun0:&nbsp; &nbsp;&nbsp; &nbsp; 20.0.0.1<br />
#ifconfig tunl0 10.0.0.1 netmask 255.255.255.255 borcast 10.0.0.1<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/tunl0/arp_ignore&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;注释：这四句目的是为了关闭ARP广播响应<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/tunl0/arp_announce<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce<br />
开启HTTP服务，确认自己能够访问。<br />
RealServer2:<br />
RealServer2： <br />
ip:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;172.0.0.1<br />
gateway:&nbsp; &nbsp; 172.0.0.254<br />
nameserver: 172.0.0.254<br />
tun0:&nbsp; &nbsp;&nbsp; &nbsp; 20.0.0.2<br />
#ifconfig tunl0 10.0.0.1 netmask 255.255.255.255 borcast 10.0.0.1<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/tunl0/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/tunl0/arp_announce<br />
#echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
#echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce<br />
开启HTTP服务，确认自己能够访问。页面与realserver1不同就可以。<br />
5.测试<br />
在网关作测试即可，访问http://10.0.0.1,反复刷新网页，每次出现的网页不同则表示成功。</p>
<p>对于windows服务器配置</p>
<p>dr方式，先安装ms loopback adapter<br />
添加新硬件--〉添加网络适配器--〉microsoft--&gt;loopback adapter</p>
<p>只需要在windows的的服务器上，添加加一个microsoft loopback网卡（虚拟网卡），IP地址就是lvs的VIP，然后，进入注册表，把loopback网卡的掩码改为255.255.255.255，重启loopback网卡便可。</p>
<p>转</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-514-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2011-07-10 09:27</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-511-1.html</guid>
			<title>LVS笔记</title>
			<author>admin</author>
			<description><![CDATA[<p>在RS中建立一个lo:0接口，设置ip为vip地址。<br />
<br />
当使用arping vip时，会有多个MAC地址回应，这是因为RS也响应的VS的arp查询。[code]sysctl -e net.ipv4.conf.all.arp_ignore=1[/code]复制代码<br />
<br />
此时，RS即不再影响RS关于vip的ARP MAC查询了。<br />
<br />
假如两台VS之间使用的互备关系，那么当一台VS接管LVS服务时，可能会网络不通，这时因为路由器的MAC缓存表里关于vip这个地址的MAC地址还是被替换的VS的MAC，有两种解决方法，一种是修改新VS的MAC地址，另一种是使用send_arp 命令（piranha软件包里带的一个小工具），格式如下：[code]send_arp <br />
<br />
send_arp [-i dev] src_ip_addr src_hw_addr targ_ip_addr tar_hw_addr[/code]复制代码<br />
<br />
这个命令不一定非要在VS上执行，只要在同一VLAN即可。<br />
<br />
12-17:<br />
<br />
今天对RS ARP MAC查询有了新的认识，网上大多数的文章都提到要用四个参数来关闭arp查询响应请求：[code]<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore<br />
echo 2 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
echo 2 &gt; /proc/sys/net/ipv4/conf/all/arp_announce[/code]复制代码<br />
我的RS最近的流量也频繁出现&ldquo;异常&rdquo;，经分析是因为arp的问题，rs有时会夺取VS的ip援用权。使用以上四条之后，VS立刻有了流量。</p>
<p>1.　LVS调度的最小单位是&ldquo;连接&rdquo;。<br />
2.　当apache的KeepAlive被设置成Off时，&ldquo;连接&rdquo;才能被较均衡的调度。<br />
3.　在不指定-p参数时，LVS才真正以&ldquo;连接&rdquo;为单位按&ldquo;权值&rdquo;调度流量。<br />
4.　在指定了-p参数时，则一个client在一定时间内，将会被调度到同一台RS。<br />
5.　可以通过&rdquo;ipvsadm ?set tcp tcpfin udp&rdquo;来调整TCP和UDP的超时，让连接淘汰得快一些。<br />
6.　在NAT模式时，RS的PORT参数才有意义。<br />
7.　DR和TUN模式时，InActConn 是没有意义的(Thus the count in the InActConn column for LVS-DR, LVS-Tun is<br />
inferred rather than real.)</p>
<p>转</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-511-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2011-07-09 19:59</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-506-1.html</guid>
			<title>lvs iptun模式下realserver需要运行的脚本</title>
			<author>admin</author>
			<description><![CDATA[<div id="blog_text" class="cnt">
<p>$vip = 192.168.0.254</p>
<p>ifconfig tunl0 $vip netmask 255.255.255.255 broadcast $vip up<br />
route add -host&nbsp;$vip dev tunl0<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/all/hidden<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/tunl0/hidden</p>
</div>]]></description>
			<link>http://meisw.wdlinux.cn//show-506-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2011-07-08 13:57</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-498-1.html</guid>
			<title>LVS+Keepalived构建高可用负载均衡</title>
			<author>admin</author>
			<description><![CDATA[<p><strong>一、 LVS简介<br />
</strong>&nbsp;&nbsp; LVS是Linux Virtual Server的简称，也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目，它的官方站点是<a href="http://www.linuxvirtualserver.org/">www.linuxvirtualserver.org</a>。现在LVS已经是 Linux标准内核的一部分，在Linux2.4内核以前，使用LVS时必须要重新编译内核以支持LVS功能模块，但是从Linux2.4内核以后，已经完全内置了LVS的各个功能模块，无需给内核打任何补丁，可以直接使用LVS提供的各种功能。使用LVS技术要达到的目标是：通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集，它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 关于LVS的安装与介绍，在前面的文章中已经有过深入介绍，这里不再讲述。</p>
<p>本文讲解的环境如下：</p>
<p>操作系统：统一采用Centos5.3版本，地址规划如下：</p>
<p style="text-align: center"><a href="http://img1.51cto.com/attachment/201106/091445437.png" target="_blank"><img border="0" alt="" src="http://img1.51cto.com/attachment/201106/091445437.png" /></a>&nbsp;</p>
<p style="text-align: center">图1</p>
<p style="text-align: left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图1中的VIP指的是虚拟IP地址，还可以叫做LVS集群的服务IP，在DR、TUN模式中，数据包是直接返回给用户的，所以，在Director Server上以及集群的每个节点上都需要设置这个地址。此IP在Real Server上一般绑定在回环地址上，例如lo:0，同样，在Director Server上，虚拟IP绑定在真实的网络接口设备上，例如eth0:0。<br />
&nbsp;各个Real Server可以是在同一个网段内，也可以是相互独立的网段，还可以是分布在internet上的多个服务器.</p>
<p>LVS+Keepalived高可用负载均衡集群拓扑结构如图2所示：</p>
<p style="text-align: center"><a href="http://img1.51cto.com/attachment/201106/092217485.png" target="_blank"><img border="0" alt="" src="http://img1.51cto.com/attachment/201106/092217485.png" /></a>&nbsp;</p>
<p style="text-align: center">图2</p>
<p><br />
<strong>二、安装Keepalived<br />
</strong>keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,后来又加入了VRRP的功能，VRRP是Virtual Router Redundancy Protocol（虚拟路由器冗余协议）的缩写，VRRP出现的目的就是为了解决静态路由出现的单点故障问题，它能够保证网络的不间断、稳定的运行。所以，keepalived一方面具有服务器健康检测功能，另一方面也具有HA cluster功能。&nbsp;<br />
&nbsp;Keepalived的官方站点是<a href="http://www.keepalived.org/">http://www.keepalived.org</a>，可以在这里下载到各种版本，我们这里下载的是keepalived-1.1.19.tar.gz，安装步骤如下：<br />
[root@DR1 ~]#tar zxvf keepalived-1.1.19.tar.gz<br />
[root@DR1 ~]#cd keepalived-1.1.19<br />
[root@DR1 keepalived-1.1.19]#./configure&nbsp;&nbsp; --sysconf=/etc \<br />
&gt; --with-kernel-dir=/usr/src/kernels/2.6.18-8.el5-i686<br />
[root@DR1 keepalived-1.1.19]#make<br />
[root@DR1 keepalived-1.1.19]#make install<br />
[root@DR1 keepalived-1.1.19]#ln -s /usr/local/sbin/keepalived&nbsp; /sbin/<br />
&nbsp;在编译选项中，&ldquo;--sysconf&rdquo;指定了Keepalived配置文件的安装路径，即路径为/etc/Keepalived/Keepalived.conf，&ldquo;--with-kernel-dir&rdquo;这是个很重要的参数，但这个参数并不是要把Keepalived编译进内核，而是指定使用内核源码里面的头文件，就是include目录。如果要使用LVS时，才需要用到此参数，否则是不需要的.</p>
<p><strong>三、配置Keepalived<br />
</strong>&nbsp;Keepalived的配置非常简单，仅仅需要一个配置文件即可完成HA cluster和lvs服务节点监控功能，Keepalived的安装已经在上面章节进行了介绍，在通过Keepalived搭建高可用的LVS集群实例中，主、备Director Server都需要安装Keepalived软件，安装成功后，默认的配置文件路径为/etc/Keepalived/Keepalived.conf。一个完整的keepalived配置文件，有三个部分组成，分别是全局定义部分、vrrp实例定义部分以及虚拟服务器定义部分，下面详细介绍下这个配置文件中每个选项的详细含义和用法：<br />
&nbsp;</p>
<p><span style="color: #ff0000">#全局定义部分<br />
</span>global_defs {<br />
&nbsp;&nbsp; notification_email {<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a href="mailto:dba.gao@gmail.com">dba.gao@gmail.com</a>&nbsp;&nbsp;&nbsp; &nbsp;#设置报警邮件地址，可以设置多个，每行一个。注意，如果要开启邮件报警，需要开启本机的sendmail服务。<br />
&nbsp;&nbsp;&nbsp;&nbsp; <a href="mailto:ixdba@163.com">ixdba@163.com</a><br />
&nbsp;&nbsp; }<br />
&nbsp;&nbsp; notification_email_from <a href="mailto:Keepalived@localhost">Keepalived@localhost</a>&nbsp;&nbsp;&nbsp; &nbsp;#设置邮件的发送地址。<br />
&nbsp;&nbsp; smtp_server 192.168.200.1&nbsp;#设置smtp server地址。<br />
&nbsp;&nbsp; smtp_connect_timeout 30&nbsp;#设置连接smtp服务器超时时间。<br />
&nbsp;&nbsp; router_id&nbsp; LVS_MASTER&nbsp;&nbsp;&nbsp; #运行Keepalived服务器的一个标识。发邮件时显示在邮件标题中的信息<br />
}</p>
<p><br />
<span style="color: #ff0000">#vrrp实例定义部分<br />
</span>vrrp_instance VI_1 {<br />
state MASTER&nbsp;&nbsp;#指定Keepalived的角色，MASTER表示此主机是主用服务器，BACKUP表示是备用服务器。<br />
&nbsp;&nbsp;&nbsp; interface eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#指定HA监测网络的接口。<br />
&nbsp;&nbsp;&nbsp; virtual_router_id 51&nbsp;#虚拟路由标识，这个标识是一个数字，并且同一个vrrp实例使用唯一的标识，即同一个vrrp_instance下，MASTER和BACKUP必须是一致的。<br />
priority 100&nbsp;#定义优先级，数字越大，优先级越高，在一个vrrp_instance下，MASTER的优先级必须大于BACKUP的优先级。<br />
&nbsp;&nbsp;&nbsp; advert_int 1&nbsp; &nbsp;#设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔，单位是秒。<br />
&nbsp;&nbsp;&nbsp; authentication {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #设定验证类型和密码。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auth_type PASS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#设置验证类型，主要有PASS和AH两种。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; auth_pass 1111&nbsp;#设置验证密码，在一个vrrp_instance下，MASTER与BACKUP必须使用相同的密码才能正常通信。<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; virtual_ipaddress {&nbsp;&nbsp;#设置虚拟IP地址，可以设置多个虚拟IP地址，每行一个。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.12.135<br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p><span style="color: #ff0000">#虚拟服务器定义部分<br />
</span>virtual_server 192.168.12.135 80 {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #设置虚拟服务器，需要指定虚拟ip地址和服务端口，ip与端口之间用空格隔开。<br />
&nbsp;&nbsp;&nbsp; delay_loop 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#设置健康检查时间，单位是秒。<br />
&nbsp;&nbsp;&nbsp; lb_algo rr&nbsp;&nbsp;#设置负载调度算法，这里设置为rr，即轮询算法。<br />
&nbsp;&nbsp;&nbsp; lb_kind DR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #设置LVS实现负载均衡的机制，可以有NAT、TUN和DR三个模式可选。<br />
persistence_timeout 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #会话保持时间，单位是秒，这个选项对于动态网页是非常有用的，为集群系统中session共享提供了一个很好的解决方案。有了这个会话保持功能，用户的请求会被一直分发到某个服务节点，直到超过这个会话保持时间。需要注意的是，这个会话保持时间，是最大无响应超时时间，也就是说用户在操作动态页面时，如果在50秒内没有执行任何操作，那么接下来的操作会被分发到另外节点，但是如果一直在操作动态页面，则不受50秒的时间限制。<br />
&nbsp;&nbsp;&nbsp; protocol TCP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #指定转发协议类型，有tcp和udp两种。</p>
<p>real_server 192.168.12.246 80 {&nbsp;#配置服务节点1，需要指定real server的真实IP地址和端口，ip与端口之间用空格隔开。<br />
weight 3&nbsp;#配置服务节点的权值，权值大小用数字表示，数字越大，权值越高，设置权值的大小可以为不同性能的服务器分配不同的负载，可以对性能高的服务器设置较高的权值，而对性能较低的服务器设置相对较低的权值，这样就合理的利用和分配了系统资源。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP_CHECK {&nbsp;&nbsp;&nbsp;#realserve的状态检测设置部分，单位是秒<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect_timeout 10&nbsp;&nbsp;&nbsp;&nbsp; #10秒无响应超时<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nb_get_retry 3&nbsp;&nbsp;#重试次数<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay_before_retry 3&nbsp;&nbsp;&nbsp; #重试间隔<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; real_server 192.168.12.237 80 {&nbsp;&nbsp;#配置服务节点2<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight 1&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TCP_CHECK {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; connect_timeout 3&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nb_get_retry 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay_before_retry 3 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />
&nbsp;&nbsp;&nbsp; }<br />
}</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在配置Keepalived.conf时，需要特别注意配置文件的语法格式，因为Keepalived在启动时并不检测配置文件的正确性，即使没有配置文件，Keepalived也照样能启动起来，因而配置文件一定要正确。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在默认情况下，Keepalived在启动时会查找/etc/Keepalived/Keepalived.conf配置文件，如果你的配置文件放在了其它路径下，可以通过&ldquo;Keepalived&nbsp; -f&rdquo;参数指定你所在的配置文件路径即可。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Keepalived.conf配置完毕后，将此文件拷贝到备用Director Server对应的路径下，然后做两个简单的修改即可:<br />
&nbsp;将&ldquo;state MASTER&rdquo;更改为&ldquo;state BACKUP&rdquo;<br />
&nbsp;将priority 100更改为一个较小的值，这里改为&ldquo;priority 80&rdquo;<br />
&nbsp;最后，还要配置集群的Real server节点，以达到与Director Server相互广播通信并忽略arp的目的，脚本的内容已经在前面文章中进行过介绍，这里不做解释。</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-498-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2011-07-05 22:22</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-497-1.html</guid>
			<title>keepalived的配置文件</title>
			<author>admin</author>
			<description><![CDATA[<p>一个功能比较完整的keepalived的配置文件，其配置文件keepalived.conf可以包含三个文本块：全局定义块、VRRP实例定义块及虚拟服务器定义块。全局定义块和虚拟服务器定义块是必须的，如果在只有一个负载均衡器的场合，就不须VRRP实例定义块。</p>
<p>&nbsp;</p>
<p>接下来，我们以一个配置文件模版为例，有选择的说明其中一些重要项的功能或作用。</p>
<p>&nbsp;</p>
<p>●&nbsp;&nbsp;&nbsp;&nbsp; 全局定义块</p>
<p>1、&nbsp; email通知。作用：有故障，发邮件报警。这是可选项目，建议不用，用nagios全面监控代替之。</p>
<p>2、&nbsp; Lvs负载均衡器标识（lvs_id）。在一个网络内，它应该是唯一的。</p>
<p>3、&nbsp; 花括号&ldquo;{}&rdquo;。用来分隔定义块，因此必须成对出现。如果写漏了，keepalived运行时，不会得到预期的结果。由于定义块内存在嵌套关系，因此很容易遗漏结尾处的花括号，这点要特别注意。</p>
<p>&nbsp;</p>
<p>●&nbsp;&nbsp;&nbsp;&nbsp; VRRP定义块</p>
<p>1、&nbsp; 同步vrrp组<tt><font face="新宋体">vrrp_sync_group</font></tt>。作用：确定失败切换（FailOver）包含的路由实例个数。即在有2个负载均衡器的场景，一旦某个负载均衡器失效，需要自动切换到另外一个负载均衡器的实例是哪些？</p>
<p>2、&nbsp; 实例组group.至少包含一个vrrp实例。</p>
<p>3、&nbsp; Vrrp实例vrrp_instance.实例名出自实例组group所包含的那些名字。</p>
<p>（1）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 实例状态state.只有MASTER和BACKUP两种状态，并且需要大写这些单词。其中MASTER为工作状态，BACKUP为备用状态。当MASTER所在的服务器失效时，BACKUP所在的系统会自动把它的状态有BACKUP变换成MASTER；当失效的MASTER所在的系统恢复时，BACKUP从MASTER恢复到BACKUP状态。</p>
<p>（2）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通信接口interface。对外提供服务的网络接口，如eth0,eth1.当前主流的服务器都有2个或2个以上的接口，在选择服务接口时，一定要核实清楚。</p>
<p>（3）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <font face="新宋体"><tt>lvs_sync_daemon_inteface</tt><tt>。</tt></font>负载均衡器之间的监控接口，类似于HA HeartBeat的心跳线。但它的机制优于Heartbeat，因为它没有&ldquo;裂脑&rdquo;这个问题，它是以优先级这个机制来规避这个麻烦的。在DR模式中，lvs_sync_daemon_inteface 与服务接口interface 使用同一个网络接口。</p>
<p><tt><font face="新宋体">（4）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></tt> 虚拟路由标识<font face="新宋体"><tt>virtual_router_id.</tt><tt>这个标识是一个数字，并且同一个vrrp实例使用唯一的标识。即同一个vrrp_stance,MASTER和BACKUP的virtual_router_id是一致的，同时在整个vrrp内是唯一的。</tt></font></p>
<p><tt><font face="新宋体">（5）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></tt> <font face="新宋体"><tt>优先级</tt><tt>priority.</tt></font>这是一个数字，数值愈大，优先级越高<tt><font face="新宋体">。在同一个vrrp_instance里，MASTER 的优先级高于BACKUP。若MASTER的priority值为150，那么BACKUP的priority只能是140或更小的数值。</font></tt></p>
<p>（6）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同步通知间隔 advert_int .MASTER与BACKUP负载均衡器之间同步检查的时间间隔，单位为秒。</p>
<p><tt><font face="新宋体">（7）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></tt> 验证<font face="新宋体"><tt>authentication</tt><tt>。</tt><tt>包含验证类型和验证密码。类型主要有PASS、AH两种，通常使用的类型为PASS，据说AH使用时有问题。验证密码为明文，同一vrrp实例MASTER与BACKUP 使用相同的密码才能正常通信。</tt></font></p>
<p><tt><font face="新宋体">4、&nbsp;</font></tt> <tt><font face="新宋体">虚拟ip地址virtual_ipaddress . 可以有多个地址，每个地址占一行，不需要指定子网掩码。注意：这个ip必须与我们在lvs客户端设定的vip相一致！</font></tt></p>
<p>&nbsp;</p>
<p>●&nbsp;&nbsp;&nbsp;&nbsp; 虚拟服务器virtual_server定义块</p>
<p>虚拟服务器定义是keepalived框架最重要的项目了，是keepalived.conf必不可少的部分。</p>
<p>1、&nbsp; 虚拟服务器virtual_server. 这个ip来自于vrrp定义块的第&ldquo;4&rdquo;步，后面一个空格，然后加上端口号。定义一个vip，可以实现多个tcp端口的负载均衡功能。</p>
<p>（1）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; delay_loop。健康检查时间间隔，单位是秒。</p>
<p>（2）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb_algo. 负载均衡调度算法，互联网应用常使用wlc或rr。</p>
<p>（3）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; lb_kind. 负载均衡转发规则。一般包括DR,NAT,TUN3种，在我的方案中，都使用DR的方式。</p>
<p>（4）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; persistence_timeout.会话保持时间，单位是秒。这个选项对动态网站很有用处：当用户从远程用帐号进行登陆网站时，有了这个会话保持功能，就能把用户的请求转发给同一个应用服务器。在这里，我们来做一个假设，假定现在有一个lvs&nbsp;环境，使用DR转发模式，真实服务器有3个，负载均衡器不启用会话保持功能。当用户第一次访问的时候，他的访问请求被负载均衡器转给某个真实服务器，这样他看到一个登陆页面，第一次访问完毕；接着他在登陆框填写用户名和密码，然后提交；这时候，问题就可能出现了&mdash;登陆不能成功。因为没有会话保持，负载均衡器可能会把第2次的请求转发到其他的服务器。</p>
<p>（5）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 转发协议protocol.一般有tcp和udp两种。实话说，我还没尝试过udp协议类的转发。</p>
<p>2、&nbsp; 真实服务器real_server.也即服务器池。Real_server的值包括ip地址和端口号。多个连续的真实ip，转发的端口相同，是不是可以以范围表示？需要进一步实验。如写成real_server 61.135.20.1-10 80 .</p>
<p>（1）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 权重weight.权重值是一个数字，数值越大，权重越高。使用不同的权重值的目的在于为不同性能的机器分配不同的负载，性能较好的机器，负载分担大些；反之，性能差的机器，则分担较少的负载，这样就可以合理的利用不同性能的机器资源。</p>
<p>（2）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tcp检查 tcp_check.</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-497-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2011-07-05 22:21</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-71-1.html</guid>
			<title>使用简单的 5 个步骤设置 Web 服务器集群</title>
			<author>admin</author>
			<description><![CDATA[<h1>使用简单的 5 个步骤设置 Web 服务器集群</h1>
<p><a href="http://www.ibm.com/developerworks/cn/linux/l-linux-ha/index.html?ca=drs-cn">http://www.ibm.com/developerworks/cn/linux/l-linux-ha/index.html?ca=drs-cn</a></p>]]></description>
			<link>http://meisw.wdlinux.cn//show-71-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2007-10-09 19:21</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-36-1.html</guid>
			<title>nfs使用设定</title>
			<author>admin</author>
			<description><![CDATA[<p>server<br />
vi /etc/exportfs<br />
/usr/src 192.168.1.*(rw,no_root_squash,async)</p>
<p>exportfs -rv //重新export一次<br />
showmount/or -e localhost</p>
<p>client<br />
showmount -e serverip<br />
mount serverip:/www/web /www/bbs or<br />
mount -t nfs serverip:/www/web /www/bbs<br />
umount /www/bbs</p>
<p><br />
time dd if=/dev/zero of=/mnt/home/testfile bs=16k count=16384</p>
<p><br />
http://www.chinaitlab.com/www/special/linux14.asp</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-36-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2007-07-17 14:29</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-35-1.html</guid>
			<title>一组ab测试的数据结果</title>
			<author>admin</author>
			<description><![CDATA[<p>[root@www ~]# ab -n 50000 -c 500 <a href="http://192.168.1.32/info.php">http://192.168.1.32/info.php</a><br />
This is ApacheBench, Version 2.0.41-dev &lt;$Revision: 1.121.2.12 $&gt; apache-2.0<br />
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright (c) 1998-2002 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking 192.168.1.32 (be patient)<br />
Completed 5000 requests<br />
Completed 10000 requests<br />
Completed 15000 requests<br />
Completed 20000 requests<br />
Completed 25000 requests<br />
Completed 30000 requests<br />
Completed 35000 requests<br />
Completed 40000 requests<br />
Completed 45000 requests<br />
Finished 50000 requests</p>
<p><br />
Server Software:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache/2.0.55<br />
Server Hostname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.32<br />
Server Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80</p>
<p>Document Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /info.php<br />
Document Length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26397 bytes</p>
<p>Concurrency Level:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500<br />
Time taken for tests:&nbsp;&nbsp; 159.25877 seconds<br />
Complete requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50000<br />
Failed requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 213<br />
&nbsp;&nbsp; (Connect: 0, Length: 213, Exceptions: 0)<br />
Write errors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
Total transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1328293693 bytes<br />
HTML transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1320041878 bytes<br />
Requests per second:&nbsp;&nbsp;&nbsp; 314.41 [#/sec] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1590.259 [ms] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.181 [ms] (mean, across all concurrent requests)<br />
Transfer rate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8156.92 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min&nbsp; mean[+/-sd] median&nbsp;&nbsp; max<br />
Connect:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 567 2412.7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp; 45014<br />
Processing:&nbsp;&nbsp;&nbsp; 14&nbsp; 906 2940.3&nbsp;&nbsp;&nbsp; 416&nbsp;&nbsp; 52023<br />
Waiting:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp; 715 2777.0&nbsp;&nbsp;&nbsp; 386&nbsp;&nbsp; 51974<br />
Total:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18 1474 4070.8&nbsp;&nbsp;&nbsp; 426&nbsp;&nbsp; 73025</p>
<p>Percentage of the requests served within a certain time (ms)<br />
&nbsp; 50%&nbsp;&nbsp;&nbsp; 426<br />
&nbsp; 66%&nbsp;&nbsp;&nbsp; 457<br />
&nbsp; 75%&nbsp;&nbsp;&nbsp; 693<br />
&nbsp; 80%&nbsp;&nbsp; 1042<br />
&nbsp; 90%&nbsp;&nbsp; 3422<br />
&nbsp; 95%&nbsp;&nbsp; 4742<br />
&nbsp; 98%&nbsp;&nbsp; 9709<br />
&nbsp; 99%&nbsp; 21422<br />
&nbsp;100%&nbsp; 73025 (longest request)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>[root@www ~]# ab -n 50000 -c 500 <a href="http://192.168.1.30/info.php">http://192.168.1.30/info.php</a><br />
This is ApacheBench, Version 2.0.41-dev &lt;$Revision: 1.121.2.12 $&gt; apache-2.0<br />
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright (c) 1998-2002 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking 192.168.1.30 (be patient)<br />
Completed 5000 requests<br />
Completed 10000 requests<br />
Completed 15000 requests<br />
Completed 20000 requests<br />
Completed 25000 requests<br />
Completed 30000 requests<br />
Completed 35000 requests<br />
Completed 40000 requests<br />
Completed 45000 requests<br />
Finished 50000 requests</p>
<p><br />
Server Software:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache/2.0.55<br />
Server Hostname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30<br />
Server Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80</p>
<p>Document Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /info.php<br />
Document Length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26397 bytes</p>
<p>Concurrency Level:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 500<br />
Time taken for tests:&nbsp;&nbsp; 231.351912 seconds<br />
Complete requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50000<br />
Failed requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30322<br />
&nbsp;&nbsp; (Connect: 0, Length: 30322, Exceptions: 0)<br />
Write errors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
Total transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1329951482 bytes<br />
HTML transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1321653137 bytes<br />
Requests per second:&nbsp;&nbsp;&nbsp; 216.12 [#/sec] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2313.519 [ms] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.627 [ms] (mean, across all concurrent requests)<br />
Transfer rate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5613.87 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min&nbsp; mean[+/-sd] median&nbsp;&nbsp; max<br />
Connect:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 390 1154.3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp; 21000<br />
Processing:&nbsp;&nbsp;&nbsp; 10 1675 6393.1&nbsp;&nbsp;&nbsp; 201&nbsp; 197589<br />
Waiting:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -16&nbsp; 527 1989.6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp; 85574<br />
Total:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12 2065 6579.0&nbsp;&nbsp;&nbsp; 209&nbsp; 197673</p>
<p>Percentage of the requests served within a certain time (ms)<br />
&nbsp; 50%&nbsp;&nbsp;&nbsp; 209<br />
&nbsp; 66%&nbsp;&nbsp;&nbsp; 642<br />
&nbsp; 75%&nbsp;&nbsp; 1863<br />
&nbsp; 80%&nbsp;&nbsp; 3022<br />
&nbsp; 90%&nbsp;&nbsp; 4899<br />
&nbsp; 95%&nbsp;&nbsp; 8765<br />
&nbsp; 98%&nbsp; 19135<br />
&nbsp; 99%&nbsp; 23680<br />
&nbsp;100%&nbsp; 197673 (longest request)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>[root@www ~]# ab -n 10000 -c 1000 <a href="http://192.168.1.30/info.php">http://192.168.1.30/info.php</a><br />
This is ApacheBench, Version 2.0.41-dev &lt;$Revision: 1.121.2.12 $&gt; apache-2.0<br />
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright (c) 1998-2002 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking 192.168.1.30 (be patient)<br />
Completed 1000 requests<br />
Completed 2000 requests<br />
Completed 3000 requests<br />
Completed 4000 requests<br />
Completed 5000 requests<br />
Completed 6000 requests<br />
Completed 7000 requests<br />
Completed 8000 requests<br />
Completed 9000 requests<br />
Finished 10000 requests</p>
<p><br />
Server Software:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache/2.0.55<br />
Server Hostname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.30<br />
Server Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80</p>
<p>Document Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /info.php<br />
Document Length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26395 bytes</p>
<p>Concurrency Level:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000<br />
Time taken for tests:&nbsp;&nbsp; 28.618709 seconds<br />
Complete requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10000<br />
Failed requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8597<br />
&nbsp;&nbsp; (Connect: 0, Length: 8595, Exceptions: 2)<br />
Write errors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
Total transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 270178276 bytes<br />
HTML transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 268480921 bytes<br />
Requests per second:&nbsp;&nbsp;&nbsp; 349.42 [#/sec] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2861.871 [ms] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.862 [ms] (mean, across all concurrent requests)<br />
Transfer rate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9219.32 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min&nbsp; mean[+/-sd] median&nbsp;&nbsp; max<br />
Connect:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp; 986 2390.4&nbsp;&nbsp;&nbsp;&nbsp; 73&nbsp;&nbsp; 21075<br />
Processing:&nbsp;&nbsp;&nbsp; 33 1265 1842.8&nbsp;&nbsp;&nbsp; 644&nbsp;&nbsp; 18738<br />
Waiting:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp; 685 1315.4&nbsp;&nbsp;&nbsp; 402&nbsp;&nbsp; 18453<br />
Total:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 85 2251 3016.6&nbsp;&nbsp;&nbsp; 973&nbsp;&nbsp; 24678</p>
<p>Percentage of the requests served within a certain time (ms)<br />
&nbsp; 50%&nbsp;&nbsp;&nbsp; 973<br />
&nbsp; 66%&nbsp;&nbsp; 1587<br />
&nbsp; 75%&nbsp;&nbsp; 3447<br />
&nbsp; 80%&nbsp;&nbsp; 3569<br />
&nbsp; 90%&nbsp;&nbsp; 4976<br />
&nbsp; 95%&nbsp;&nbsp; 9462<br />
&nbsp; 98%&nbsp; 10595<br />
&nbsp; 99%&nbsp; 12878<br />
&nbsp;100%&nbsp; 24678 (longest request)</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />
[root@www ~]# ab -n 10000 -c 1000 <a href="http://192.168.1.32/info.php">http://192.168.1.32/info.php</a><br />
This is ApacheBench, Version 2.0.41-dev &lt;$Revision: 1.121.2.12 $&gt; apache-2.0<br />
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, <a href="http://www.zeustech.net/">http://www.zeustech.net/</a><br />
Copyright (c) 1998-2002 The Apache Software Foundation, <a href="http://www.apache.org/">http://www.apache.org/</a></p>
<p>Benchmarking 192.168.1.32 (be patient)<br />
Completed 1000 requests<br />
Completed 2000 requests<br />
Completed 3000 requests<br />
Completed 4000 requests<br />
Completed 5000 requests<br />
Completed 6000 requests<br />
Completed 7000 requests<br />
Completed 8000 requests<br />
Completed 9000 requests<br />
Finished 10000 requests</p>
<p><br />
Server Software:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Apache/2.0.55<br />
Server Hostname:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.32<br />
Server Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80</p>
<p>Document Path:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /info.php<br />
Document Length:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 26397 bytes</p>
<p>Concurrency Level:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1000<br />
Time taken for tests:&nbsp;&nbsp; 33.452000 seconds<br />
Complete requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10000<br />
Failed requests:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6<br />
&nbsp;&nbsp; (Connect: 0, Length: 6, Exceptions: 0)<br />
Write errors:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />
Total transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 265957580 bytes<br />
HTML transferred:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 264304610 bytes<br />
Requests per second:&nbsp;&nbsp;&nbsp; 298.94 [#/sec] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3345.200 [ms] (mean)<br />
Time per request:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.345 [ms] (mean, across all concurrent requests)<br />
Transfer rate:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7764.08 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; min&nbsp; mean[+/-sd] median&nbsp;&nbsp; max<br />
Connect:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp; 885 2212.4&nbsp;&nbsp;&nbsp;&nbsp; 19&nbsp;&nbsp; 21019<br />
Processing:&nbsp;&nbsp; 158&nbsp; 777 1613.7&nbsp;&nbsp;&nbsp; 437&nbsp;&nbsp; 18516<br />
Waiting:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 112&nbsp; 699 1607.6&nbsp;&nbsp;&nbsp; 383&nbsp;&nbsp; 18469<br />
Total:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 298 1662 3192.1&nbsp;&nbsp;&nbsp; 458&nbsp;&nbsp; 21752</p>
<p>Percentage of the requests served within a certain time (ms)<br />
&nbsp; 50%&nbsp;&nbsp;&nbsp; 458<br />
&nbsp; 66%&nbsp;&nbsp;&nbsp; 517<br />
&nbsp; 75%&nbsp;&nbsp;&nbsp; 856<br />
&nbsp; 80%&nbsp;&nbsp; 2376<br />
&nbsp; 90%&nbsp;&nbsp; 3477<br />
&nbsp; 95%&nbsp;&nbsp; 9080<br />
&nbsp; 98%&nbsp;&nbsp; 9525<br />
&nbsp; 99%&nbsp; 21177<br />
&nbsp;100%&nbsp; 21752 (longest request)</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-35-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2007-07-17 14:15</pubDate>
		</item>
		<item>
			<guid>http://meisw.wdlinux.cn//show-34-1.html</guid>
			<title>用ha,lvs构建的高可用负载均衡系统</title>
			<author>admin</author>
			<description><![CDATA[<p>//////////////////////////////////////////////////<br />
此文档为半年多前做的测试笔记了.采用HeatBeat+lvs构建的高可用负载均衡系统.当时测试算是比较成功的.也上了项目使用.但没用多久就撒了.在实时要求比较高的环境下,问题比较多.要解决的问题也多.但用在静态上的话,感觉还是很不错的说.现在整理一下,发布上来.可惜后期的文档没怎么记录.如各位看观有什么不明或疑问,欢迎指出或和我联系:QQ5846690.mail/man:mymail#3126.com<br />
同时转截请注册来自 <a href="http://meisw.cn/show-34-1.html">http://meisw.cn/show-34-1.html</a><br />
///////////////////////////////////////////////////</p>
<p>&nbsp;</p>
<p>环境:机器5台,均采用rhel4,使用DR方式.</p>
<p>结构:两台做双机热备,串口线一条.两台做real server,一台做数据库.同时,双机里的备机也可以做real server.我测试的时候,有用过三台,四台,加上虚拟机的话有5台.开始单测试lvs,用了三台.</p>
<p>LVS分流,三台机.</p>
<p>图表<br />
director <br />
dip:192.168.1.10&nbsp; (eth0)<br />
vip:192.168.1.9 (eth0:0)</p>
<p>realserver1<br />
rip:192.168.1.11 (eth0)<br />
vip:192.168.1.9 (lo:0)</p>
<p>realserver2<br />
rip:192.168.1.12 (eth0)<br />
vip:192.168.1.9 (lo:0)</p>
<p>&nbsp;</p>
<p>一 director(调度器)<br />
1 修改内核参数 (/etc/sysctl.conf)<br />
net.ipv4.ip_forward = 0 <br />
net.ipv4.conf.all.send_redirects = 1<br />
net.ipv4.conf.default.send_redirects = 1<br />
net.ipv4.conf.eth0.send_redirects = 1</p>
<p>sysctl -p 使之生效</p>
<p>2 配置VIP地址<br />
ifconfig eth0:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up<br />
route add -host 192.168.1.9 dev eth0:0</p>
<p>3 清除ipvsadm表<br />
ipvsadm -C</p>
<p>4 使用ipvsadm安装LVS服务<br />
ipvsadm -A -t 192.168.1.9:http -s rr</p>
<p>5 增加readserver<br />
#forward http to realserver using direct routing with weight 1<br />
ipvsadm -a -t 192.168.1.9:http -r 192.168.1.11 -g -w 1<br />
ipvsadm -a -t 192.168.1.9:Http -r 192.168.1.12 -g -w 1</p>
<p><br />
系统启动后要确认内核是否支持ipvs，只需要执行下面的命令即可：grep ip_vs_init /boot/System.map</p>
<p>二 配置realserver<br />
1 修改内核参数(/etc/sysctl.conf)<br />
net.ipv4.ip_forward = 0<br />
net.ipv4.conf.lo.arp_ignore = 1<br />
net.ipv4.conf.lo.arp_announce = 2<br />
net.ipv4.conf.all.arp_ignore = 1<br />
net.ipv4.conf.all.arp_announce = 2</p>
<p>sysctl -p 使之生效</p>
<p>2 配置VIP地址<br />
ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up<br />
route add -host 192.168.1.9 dev lo:0</p>
<p>测试</p>
<p>用IE打开<a href="http://192.168.1.10">http://192.168.1.10</a>访问看看结果是否正确.&nbsp;可以在两台real server服务器放置两个不同的页面.如是real server1/real server2.这样就可以看出有没分流到两台real server上了.或者用一些软件来测试一下性能.</p>
<p>&nbsp;</p>
<p>ha+lvs高可用负载分流</p>
<p><br />
#######################################<br />
# HeatBeat<br />
#######################################</p>
<p>HeartBeat是Linux-HA的高可用性集群软件，它的主要作用是：<br />
安装在Load Balancer和Backup上，运行于active/standby模式。<br />
当Load Balancer失效时，Backup自动激活，成为实际的Load Balancer。 <br />
切换到active模式时，按顺序启动Virtual IP、IPVS和Ldirectord。<br />
切换到standby模式时，按顺序关闭Ldirectord、IPVS和Virtual IP。</p>
<p>HeartBeat串口线连接测试方法：<br />
在Load Balancer上：cat &lt; /dev/ttyS0<br />
在Backup上：echo hello &gt;; /dev/ttyS0<br />
在VMWare上设置串口的时候一端做server，一端做client即可</p>
<p>1 修改主机名(/etc/hosts)：</p>
<p>127.0.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; localhost.localdomain localhost<br />
192.168.136.11&nbsp;&nbsp;&nbsp; loadbalancer<br />
192.168.136.12&nbsp;&nbsp;&nbsp; backup</p>
<p>2 安装<br />
groupadd -g 694 haclient<br />
useradd -u 694 -g haclient hacluster</p>
<p>wget <a href="http://www.packetfactory.net/libnet/dist/libnet.tar.gz">http://www.packetfactory.net/libnet/dist/libnet.tar.gz</a><br />
tar zxf libnet.tar.gz<br />
cd libnet<br />
./configure <br />
make<br />
make install</p>
<p>wget <a href="http://www.linux-ha.org/download/heartbeat-1.99.4-tar.gz">http://www.linux-ha.org/download/heartbeat-1.99.4-tar.gz</a><br />
tar zxf heartbeat-1.99.4.tar.gz<br />
cd heartbeat-1.99.4<br />
./ConfigureMe configure --disable-swig --disable-snmp-subagent<br />
make<br />
make install<br />
cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/<br />
cp ldirectord/ldirectord.cf /etc/ha.d/</p>
<p>chkconfig --add heartbeat<br />
chkconfig --del ldirectord&nbsp;</p>
<p>&nbsp;</p>
<p>相关配置文件<br />
haresources<br />
#<br />
rhel4u2 IPaddr::192.168.1.9/24/192.168.1.255 ipvsadm ldirectord</p>
<p>ha.cf</p>
<p>vip<br />
/sbin/ifconfig lo:0 192.168.1.9 broadcast 192.168.1.9 netmask 255.255.255.255 up<br />
/sbin/route add -host 192.168.1.9 dev lo:0<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_announce<br />
echo 0 &gt;/proc/sys/net/ipv4/ip_forward<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/all/arp_ignore<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_announce<br />
echo 1 &gt; /proc/sys/net/ipv4/conf/lo/arp_ignore</p>
<p>&nbsp;</p>
<p>#失效无用连接<br />
echo 1 &gt; /proc/sys/net/ipv4/vs/expire_nodest_conn</p>
<p><br />
FAQ<br />
1 cookie时间,即在线问题 加-p选项</p>
<p>an:</p>
<p>-p选项,是设置保持cookie的一个持续时间.<br />
也就是 客户机 &gt;　转发器 &gt; real server 持续的时间.<br />
这个时间内,某台机所有连接,都是指向前一个已建立过的连接上.</p>
<p>但在设置了-p选项后,在<br />
转发器&gt;real server间还有一个持续时间(为1分钟)</p>
<p>也就是说,在设置了-p选项后<br />
转发器 &gt; real server 的连接时间为 1分钟加上-p设置的时间</p>
<p><br />
在这个时间内,假如某real server挂了,ld是能检测出问题,并且在转发规则里把它的权值改为0<br />
但在上面的前提下,所有之前与这台real servel有连接过的客户机,在这个时间内(1分钟+P设置的时间),仍然会继续往这台机上转发<br />
问题也就出现了.</p>
<p><br />
如果倘若不设置-p选项,在转发器上,会维护着客户机与每一个real server 的连接状态</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>ha的一些资料</p>
<p>多个节点，只要还有一个节点，服务就能继续...<br />
而且增加了资源监控，如IP失效了会自动恢复...</p>
<p>如果是2.0,简单的可以这样配，以三个节点为例<br />
1.三个节点都装上heartbeat 2.0.0.0.<br />
2.把三个节点都加到ha.cf里，然后在ha.cf里加上&quot;crm 1&quot;<br />
3.然后用/usr/lib/heartbeat/cts/haresources2cib.py 把原来的/etc/ha.d/haresources 转换成 /var/lib/heartbeat/crm/cib.xml.<br />
&quot;/usr/lib/heartbeat/cts/haresources2cib.py haresources &gt;;/var/lib/heartbeat/crm/cib.xml&quot;<br />
4.把haresources清空<br />
5.启动三台计算机的heartbeat.</p>
<p>2.0用cib替代了haresources.<br />
<a href="http://www.linux-ha.org/ClusterInformationBase_2fUserGuide">http://www.linux-ha.org/ClusterInformationBase_2fUserGuide</a></p>
<p>2.0里面没有工作节点和备份节点之分，资源在哪里个节点运行，失效后可以在哪些另外的节点运行等的都是cib.xml(资源配置文件)里规定的.</p>
<p>2.0里面基本没有活动-备份的概念，换句话说，cib.xml中你可以指定一个服务在不同机器上跑的权重，甚至禁止某个服务在某个机器上跑，等等。各个节点都是平等的。运行时，heartbeat2会根据当前的情况，计算出那里是运行服务的最佳机器。如果你把所有服务的最佳运行节点都设到一台机器，那就相当于一个跑服务，两个备份，如果你把服务配到两个节点，留一个节点空着，那就相当于两个跑服务，一个备份。 <br />
CRM, Cluster Resouce Manager, 用于在cluster计算管理资源。开启了它，就开启了2.0的新功能</p>
<p>HA的概念和1.x的配置:<br />
<a href="http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html">http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html</a><br />
2.x的概念和基本配置:<br />
<a href="http://www.linux-ha.org/GettingStartedV2">http://www.linux-ha.org/GettingStartedV2</a><br />
2.x的资源配置的详细介绍:<br />
<a href="http://www.linux-ha.org/ClusterInformationBase_2fUserGuide">http://www.linux-ha.org/ClusterInformationBase_2fUserGuide</a></p>
<p>这个中文的介绍挺好的，不过是1.x的，不过概念都一样。<br />
<a href="http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html">http://www-128.ibm.com/developerworks/cn/linux/l-halinux/index.html</a></p>
<p>&nbsp;</p>
<p>LVS的官方网站</p>
<p><a href="http://www.linuxvirtualserver.org/zh/lvs1.html">http://www.linuxvirtualserver.org/zh/lvs1.html</a></p>
<p><a href="http://zh.linuxvirtualserver.org/">http://zh.linuxvirtualserver.org/</a>&nbsp;论坛讨论区</p>
<p>&nbsp;</p>
<p>注:本文档是06年底作测试时的笔记.但测试完后,没作整理.现在才发觉,所以,有一些是现在加上的,如有错误或不足之处,请指出或提出意见.谢谢</p>
<p>&nbsp;</p>]]></description>
			<link>http://meisw.wdlinux.cn//show-34-1.html</link>
			<category domain="http://meisw.wdlinux.cn//category-7-1.html">集群/分流</category>
			<pubDate>2007-07-17 13:11</pubDate>
		</item>
	</channel>
</rss>
