<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[『AskWan』]]></title> 
<link>http://www.askwan.com/index.php</link> 
<description><![CDATA[Related About My Life,Unix,Linux,System Architecture,Mysql,PostgreSQL,Oracle Etc ]]></description> 
<language>en-US</language> 
<copyright><![CDATA[『AskWan』]]></copyright>
<item>
<link>http://www.askwan.com/use_Pgpool-II_and_heartbeat_realize_high_availability_of_postgresql/</link>
<title><![CDATA[use Pgpool-II and HeartBeat realize high availability of postgresql ]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Fri, 04 Dec 2009 01:42:15 +0000</pubDate> 
<guid>http://www.askwan.com/use_Pgpool-II_and_heartbeat_realize_high_availability_of_postgresql/</guid> 
<description>
<![CDATA[ 
	Pgpool-II:<br/>pgpool-II is a middleware that works between PostgreSQL servers and a PostgreSQL database client.<br/><a href="http://pgpool.projects.postgresql.org/" target="_blank">http://pgpool.projects.postgresql.org/</a><br/>it can used for Connection Pooling,Replication,Load Balance,Limiting Exceeding Connections and Parallel Query<br/><br/>that&nbsp;&nbsp;Heartbeat is a daemon that provides cluster infrastructure (communication and membership) services to its clients.<br/><a href="http://www.linux-ha.org/" target="_blank">http://www.linux-ha.org/</a><br/><br/>I have archived this :<br/><a href="http://www.askwan.com/attachment.php?fid=197" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=197" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>May be I have to do more testing :)<br/>Tags - <a href="http://www.askwan.com/tags/pgpool-ii/" rel="tag">pgpool-ii</a> , <a href="http://www.askwan.com/tags/heartbeat/" rel="tag">heartbeat</a> , <a href="http://www.askwan.com/tags/realize/" rel="tag">realize</a> , <a href="http://www.askwan.com/tags/high/" rel="tag">high</a> , <a href="http://www.askwan.com/tags/availability/" rel="tag">availability</a> , <a href="http://www.askwan.com/tags/postgresql/" rel="tag">postgresql</a> , <a href="http://www.askwan.com/tags/pgpool2/" rel="tag">pgpool2</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/108/</link>
<title><![CDATA[LVS + Keepalived 之DR实现]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Fri, 19 Sep 2008 09:25:47 +0000</pubDate> 
<guid>http://www.askwan.com/post/108/</guid> 
<description>
<![CDATA[ 
	<span style="color: #0000FF;">LVS原理可以看章博士的文章，Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现</span><br/><br/>OS:&nbsp;&nbsp; CentOS5.2/RHEL5.2<br/>VIP:&nbsp;&nbsp; 129.0.3.236<br/>LoadBalance :&nbsp;&nbsp; 129.0.3.230<br/>BackUP:&nbsp;&nbsp; 129.0.3.231<br/>RealServer1:&nbsp;&nbsp; 129.0.3.233<br/>RealServer2:&nbsp;&nbsp;129.0.3.234<br/><br/><br/>1.&nbsp;&nbsp;LoadBalance配置<br/>设置<br/><br/><div class="code">net.ipv4.ip_forward = 1</div><br/><br/>安装ipvsadm<br/>下载地址：<a href="http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz" target="_blank">http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz</a><br/>如果编译错误，看时候做了内核的软连接 /usr/src/linux<br/>然后 make &&　make install<br/><br/><br/>配置lvs<br/>依次执行：<br/><br/><div class="code">ipvsadm –C<br/>ipvsadm -A -t 129.0.3.236:80 -s wlc<br/>ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g<br/>ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 –g</div>或者执行这脚本<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#!/bin/sh<br/>ipvsadm -C<br/>ipvsadm -A -t 129.0.3.236:80 -s wlc<br/>ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.233 -g<br/>ipvsadm -a -t 129.0.3.236:80 -r 129.0.3.234 -g</div></div><br/><br/>&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>安装keepalived<br/>下载地址：<a href="http://www.keepalived.org/software/keepalived-1.1.15.tar.gz" target="_blank">http://www.keepalived.org/software/keepalived-1.1.15.tar.gz</a><br/>编辑keepalived.conf<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">./configure&nbsp;&nbsp;--prefix=/you/path/　<br/>make && make install</div></div><br/><br/><div class="code">lobal_defs {<br/>&nbsp;&nbsp; notification_email {<br/>&nbsp;&nbsp;&nbsp;&nbsp; askwan1@yahoo.com<br/>&nbsp;&nbsp; }<br/>&nbsp;&nbsp; notification_email_from askwan@yahoo.com<br/>&nbsp;&nbsp; smtp_server 127.0.0.1<br/>&nbsp;&nbsp; smtp_connect_timeout 30<br/>&nbsp;&nbsp; router_id LVS_DEVEL<br/>}<br/><br/>vrrp_instance VI_1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;state MASTER<br/>&nbsp;&nbsp;&nbsp;&nbsp;interface eth0<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id 51<br/>&nbsp;&nbsp;&nbsp;&nbsp;priority 150<br/>&nbsp;&nbsp;&nbsp;&nbsp;advert_int 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;authentication {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type PASS<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass 1111<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;129.0.3.236<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>virtual_server 129.0.3.236 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;delay_loop 6<br/>&nbsp;&nbsp;&nbsp;&nbsp;lb_algo rr<br/>&nbsp;&nbsp;&nbsp;&nbsp;lb_kind DR<br/>&nbsp;&nbsp;&nbsp;&nbsp;nat_mask 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;persistence_timeout 50<br/>&nbsp;&nbsp;&nbsp;&nbsp;protocol TCP<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;real_server 129.0.3.233 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP_CHECK {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_port 80<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_timeout 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp; real_server 129.0.3.234 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP_CHECK {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_port 80<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_timeout 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}</div><br/><br/>2.&nbsp;&nbsp;BackUP主机配置<br/>BackUP主机配置同上。<br/>只需配置文件简单修改下<br/><div class="code">lobal_defs {<br/>&nbsp;&nbsp; notification_email {<br/>&nbsp;&nbsp;&nbsp;&nbsp; askwan1@yahoo.com<br/>&nbsp;&nbsp; }<br/>&nbsp;&nbsp; notification_email_from askwan@yahoo.com<br/>&nbsp;&nbsp; smtp_server 127.0.0.1<br/>&nbsp;&nbsp; smtp_connect_timeout 30<br/>&nbsp;&nbsp; router_id LVS_DEVEL<br/>}<br/><br/>vrrp_instance VI_1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;state BACKUP<br/>&nbsp;&nbsp;&nbsp;&nbsp;interface eth0<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id 51<br/>&nbsp;&nbsp;&nbsp;&nbsp;priority 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;advert_int 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;authentication {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type PASS<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass 1111<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;129.0.3.236<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/>virtual_server 129.0.3.236 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;delay_loop 6<br/>&nbsp;&nbsp;&nbsp;&nbsp;lb_algo rr<br/>&nbsp;&nbsp;&nbsp;&nbsp;lb_kind DR<br/>&nbsp;&nbsp;&nbsp;&nbsp;nat_mask 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp;persistence_timeout 50<br/>&nbsp;&nbsp;&nbsp;&nbsp;protocol TCP<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;real_server 129.0.3.233 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP_CHECK {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_port 80<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_timeout 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp; real_server 129.0.3.234 80 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;weight 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCP_CHECK {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_port 80<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;connect_timeout 30<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}</div><br/>启动keepalived<br/>看系统实时日志查找出现问题<br/><br/>3.&nbsp;&nbsp;Realserver配置<br/>/etc/sysctl.conf<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">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</div></div><br/>sysctl -p生效<br/><br/>lo地址绑定VIP<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">ip addr add 129.0.3.236/32 dev lo</div></div><br/>ip addr list 查看是否绑定争取<br/><br/>开启Realserver上httpd<br/><br/>4.&nbsp;&nbsp;调试与测试<br/><br/>下面是捕获的日志信息<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">Sep 12 05:32:58 server230 kernel: IPVS: Registered protocols (TCP, UDP, AH, ESP)<br/>Sep 12 05:32:58 server230 kernel: IPVS: Connection hash table configured (size=4096, memory=32Kbytes)<br/>Sep 12 05:32:58 server230 kernel: IPVS: ipvs loaded.<br/>Sep 12 06:00:35 server230 kernel: IPVS: [wlc] scheduler registered.<br/>Sep 12 06:00:38 server230 Keepalived: Starting Keepalived v1.1.15 (09/12,2008) <br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Using MII-BMSR NIC polling thread...<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.230 added<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink reflector<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Registering Kernel netlink command channel<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'. <br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Configuration is using : 11811 Bytes<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Service already exists<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: IPVS: Destination already exists<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.233:80]<br/>Sep 12 06:00:38 server230 Keepalived_healthcheckers: Activating healtchecker for service [129.0.3.234:80]<br/>Sep 12 06:00:38 server230 Keepalived: Starting Healthcheck child process, pid=10650<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Using MII-BMSR NIC polling thread...<br/>Sep 12 06:00:38 server230 Keepalived: Starting VRRP child process, pid=10651<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.230 added<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink reflector<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Registering Kernel netlink command channel<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Registering gratutious ARP shared channel<br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'. <br/>Sep 12 06:00:38 server230 Keepalived_vrrp: Configuration is using : 36198 Bytes<br/>Sep 12 06:00:39 server230 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(8,9)]<br/><span style="color: #FF0000;">Sep 12 06:00:40 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE<br/>Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE<br/>Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.<br/>Sep 12 06:00:41 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236</span><br/>Sep 12 06:00:41 server230 Keepalived_healthcheckers: Netlink reflector reports IP 129.0.3.236 added<br/>Sep 12 06:00:41 server230 avahi-daemon[8014]: Registering new address record for 129.0.3.236 on eth0.<br/><span style="color: #FF0000;">Sep 12 06:00:41 server230 Keepalived_vrrp: Netlink reflector reports IP 129.0.3.236 added</span><br/>Sep 12 06:00:42 server230 Keepalived_healthcheckers: Removing service [129.0.3.234:80] from VS [129.0.3.236:80]<br/>Sep 12 06:00:42 server230 Keepalived_healthcheckers: Remote SMTP server [127.0.0.1:25] connected.<br/>Sep 12 06:00:43 server230 Keepalived_healthcheckers: SMTP alert successfully sent.<br/>Sep 12 06:00:46 server230 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 129.0.3.236</div></div><br/><br/>红色表示的部分表面LoadBalance主机已经获得VIP的地址，进入MASTER状态，实现成功。<br/><br/>Tags - <a href="http://www.askwan.com/tags/lvs/" rel="tag">lvs</a> , <a href="http://www.askwan.com/tags/keepalived/" rel="tag">keepalived</a> , <a href="http://www.askwan.com/tags/dr/" rel="tag">dr</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/106/</link>
<title><![CDATA[LVS + piranha 之NAT配置]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Sun, 14 Sep 2008 03:02:30 +0000</pubDate> 
<guid>http://www.askwan.com/post/106/</guid> 
<description>
<![CDATA[ 
	OS&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;centos4.6<br/>VIP ：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.18.240<br/>LoadBalance:&nbsp;&nbsp;eth0： 192.168.18.241<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eth1： 10.10.10.241&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>BackUp:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;eth0:&nbsp;&nbsp; 192.168.18.242<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eth1:&nbsp;&nbsp; 10.10.10.242<br/><br/>Real Server1:&nbsp;&nbsp;10.10.10.243<br/>RealServer2: &nbsp;&nbsp; 10.10.10.244<br/>Gateway&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp; 10.10.10.241(10.10.10.242)<br/><br/>1.&nbsp;&nbsp;安装piranha和ipvsadm<br/>2.&nbsp;&nbsp;设置piranha密码<br/>piranha-passwd<br/>3.&nbsp;&nbsp;启动piranha-gui<br/>service piranha-gui start<br/>4.&nbsp;&nbsp;配置LVS<br/><a href="http://192.168.18.241:3636" target="_blank">http://192.168.18.241:3636</a><br/><br/>具体配置过程不详述<br/>附上配置文件<br/>vim /etc/sysconfig/ha/lvs.cf<br/><br/><div class="code">serial_no = 14<br/>primary = 192.168.18.241<br/>service = lvs<br/>backup_active = 1<br/>backup = 192.168.18.242<br/>heartbeat = 1<br/>heartbeat_port = 539<br/>keepalive = 6<br/>deadtime = 18<br/>network = nat<br/>nat_router = 10.10.10.241 eth1<br/>nat_nmask = 255.255.255.0<br/>debug_level = NONE<br/>monitor_links = 0<br/>virtual webserv {<br/>&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.240 eth0:1<br/>&nbsp;&nbsp;&nbsp;&nbsp; vip_nmask = 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp; port = 80<br/>&nbsp;&nbsp;&nbsp;&nbsp; send = &quot;GET / HTTP/1.0&#92;r&#92;n&#92;r&#92;n&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; expect = &quot;HTTP&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; use_regex = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; load_monitor = none<br/>&nbsp;&nbsp;&nbsp;&nbsp; scheduler = wlc<br/>&nbsp;&nbsp;&nbsp;&nbsp; protocol = tcp<br/>&nbsp;&nbsp;&nbsp;&nbsp; timeout = 6<br/>&nbsp;&nbsp;&nbsp;&nbsp; reentry = 15<br/>&nbsp;&nbsp;&nbsp;&nbsp; quiesce_server = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 10.10.10.243<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node2 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 10.10.10.244<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}</div>5.&nbsp;&nbsp;将配置文件copy至Backup相应目录下<br/>6.&nbsp;&nbsp;分别在LB和BackUp上启用数据转发<br/># vi /etc/sysctl.conf<br/>net.ipv4.ip_forward = 1<br/>#sysctl&nbsp;&nbsp;-p <br/><br/>7.&nbsp;&nbsp;启动RealServer上httpd服务<br/>8.&nbsp;&nbsp;启动LB和Backup上pulse<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#service pulse start</div></div><br/>9.&nbsp;&nbsp;测试<br/><br/>Tags - <a href="http://www.askwan.com/tags/lvs/" rel="tag">lvs</a> , <a href="http://www.askwan.com/tags/piranha/" rel="tag">piranha</a> , <a href="http://www.askwan.com/tags/nat/" rel="tag">nat</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/105/</link>
<title><![CDATA[LVS  + piranha 之Tunnel配置]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Sat, 13 Sep 2008 23:49:07 +0000</pubDate> 
<guid>http://www.askwan.com/post/105/</guid> 
<description>
<![CDATA[ 
	OS&nbsp;&nbsp;:&nbsp;&nbsp;&nbsp;&nbsp;centos4.6<br/>VIP ：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.18.200<br/>LoadBalance:&nbsp;&nbsp;192.168.18.241<br/>BackUp:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.18.242<br/>Real Server1:&nbsp;&nbsp;192.168.18.243<br/>RealServer2:&nbsp;&nbsp;&nbsp;&nbsp;192.168.18.244<br/><br/>1.&nbsp;&nbsp;安装piranha和ipvsadm<br/>2.&nbsp;&nbsp;设置piranha密码<br/>piranha-passwd<br/>3.&nbsp;&nbsp;启动piranha-gui<br/>service piranha-gui start<br/>4.&nbsp;&nbsp;配置LVS<br/><a href="http://192.168.18.241:3636" target="_blank">http://192.168.18.241:3636</a><br/><br/>具体配置过程不详述<br/>附上配置文件<br/>vim /etc/sysconfig/ha/lvs.cf<br/><div class="code">serial_no = 14<br/>primary = 192.168.18.241<br/>service = lvs<br/>backup_active = 1<br/>backup = 192.168.18.242<br/>heartbeat = 1<br/>heartbeat_port = 539<br/>keepalive = 6<br/>deadtime = 18<br/>network = tunnel<br/>debug_level = NONE<br/>monitor_links = 0<br/>virtual webserv {<br/>&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.240 eth0:1<br/>&nbsp;&nbsp;&nbsp;&nbsp; vip_nmask = 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp; port = 80<br/>&nbsp;&nbsp;&nbsp;&nbsp; send = &quot;GET / HTTP/1.0&#92;r&#92;n&#92;r&#92;n&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; expect = &quot;HTTP&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; use_regex = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; load_monitor = none<br/>&nbsp;&nbsp;&nbsp;&nbsp; scheduler = wrr<br/>&nbsp;&nbsp;&nbsp;&nbsp; protocol = tcp<br/>&nbsp;&nbsp;&nbsp;&nbsp; timeout = 6<br/>&nbsp;&nbsp;&nbsp;&nbsp; reentry = 15<br/>&nbsp;&nbsp;&nbsp;&nbsp; quiesce_server = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.243<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node2 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.244<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}</div><br/><br/>5.&nbsp;&nbsp;将配置文件copy至Backup相应目录下<br/>6.&nbsp;&nbsp;分别在LB和BackUp上启用数据转发<br/># vi /etc/sysctl.conf<br/>net.ipv4.ip_forward = 0<br/>修改为<br/>net.ipv4.ip_forward = 1<br/>#sysctl&nbsp;&nbsp;-p <br/><br/>7.&nbsp;&nbsp;配置RealServer<br/><br/>创建IP Tunnel<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"># ifconfig tunl0 192.168.18.240 netmask 255.255.255.255 broadcast 192.168.18.240 up</div></div><br/>将tunl0加入路由表（routing table）<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"># route add -host 192.168.18.240 dev tunl0</div></div><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"><br/>#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore<br/>#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce<br/>#echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore<br/>#echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce</div></div><br/><br/>8.&nbsp;&nbsp;启动RealServer上httpd服务<br/>9.&nbsp;&nbsp;启动LB和Backup上pulse<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#service pulse start</div></div><br/>10.&nbsp;&nbsp;测试<br/><br/>Tags - <a href="http://www.askwan.com/tags/lvs/" rel="tag">lvs</a> , <a href="http://www.askwan.com/tags/piranha/" rel="tag">piranha</a> , <a href="http://www.askwan.com/tags/tunnel/" rel="tag">tunnel</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/104/</link>
<title><![CDATA[LVS + piranha  之DR配置]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Sat, 13 Sep 2008 23:45:37 +0000</pubDate> 
<guid>http://www.askwan.com/post/104/</guid> 
<description>
<![CDATA[ 
	OS&nbsp;&nbsp;:&nbsp;&nbsp;centos4.6<br/>VIP ：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 192.168.18.200<br/>LoadBalance:&nbsp;&nbsp;192.168.18.241<br/>BackUp:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.18.242<br/>Real Server1:&nbsp;&nbsp;192.168.18.243<br/>RealServer2:&nbsp;&nbsp;192.168.18.244<br/>Gateway&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;&nbsp; 192.168.18.1<br/><br/>1.&nbsp;&nbsp;安装piranha和ipvsadm<br/>2.&nbsp;&nbsp;设置piranha密码<br/>piranha-passwd<br/>3.&nbsp;&nbsp;启动piranha-gui<br/>service piranha-gui start<br/>4.&nbsp;&nbsp;配置LVS<br/><a href="http://192.168.18.241:3636" target="_blank">http://192.168.18.241:3636</a><br/><br/>具体配置过程不详述<br/>附上配置文件<br/>vim /etc/sysconfig/ha/lvs.cf<br/><br/><div class="code">serial_no = 16<br/>primary = 192.168.18.241<br/>service = lvs<br/>backup_active = 1<br/>backup = 192.168.18.242<br/>heartbeat = 1<br/>heartbeat_port = 539<br/>keepalive = 6<br/>deadtime = 18<br/>network = direct<br/>debug_level = NONE<br/>monitor_links = 0<br/>virtual webserv {<br/>&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.240 eth0:1<br/>&nbsp;&nbsp;&nbsp;&nbsp; vip_nmask = 255.255.255.0<br/>&nbsp;&nbsp;&nbsp;&nbsp; port = 80<br/>&nbsp;&nbsp;&nbsp;&nbsp; send = &quot;GET / HTTP/1.0&#92;r&#92;n&#92;r&#92;n&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; expect = &quot;HTTP&quot;<br/>&nbsp;&nbsp;&nbsp;&nbsp; use_regex = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; load_monitor = none<br/>&nbsp;&nbsp;&nbsp;&nbsp; scheduler = wrr<br/>&nbsp;&nbsp;&nbsp;&nbsp; protocol = tcp<br/>&nbsp;&nbsp;&nbsp;&nbsp; timeout = 6<br/>&nbsp;&nbsp;&nbsp;&nbsp; reentry = 15<br/>&nbsp;&nbsp;&nbsp;&nbsp; quiesce_server = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.243<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp; server node2 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; address = 192.168.18.244<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; active = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weight = 50<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>}</div><br/>5.&nbsp;&nbsp;将配置文件copy至Backup相应目录下<br/>6.&nbsp;&nbsp;分别在LB和BackUp上启用数据转发<br/># vi /etc/sysctl.conf<br/>net.ipv4.ip_forward = 1<br/>#sysctl&nbsp;&nbsp;-p <br/><br/>7.&nbsp;&nbsp;配置RealServer<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#ifconfig lo:0 192.168.18.240 broadcast 192.168.18.240 netmask 255.255.255.255 up<br/>#route add -host 192.168.18.240 dev lo:0</div></div><br/><br/>关闭ARP广播响应<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore<br/>#echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce<br/>#echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore<br/>#echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce</div></div><br/><br/><br/>8.&nbsp;&nbsp;启动RealServer上httpd服务<br/>9.&nbsp;&nbsp;启动LB和Backup上pulse<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#service pulse start</div></div><br/>10.&nbsp;&nbsp;测试<br/><br/>Tags - <a href="http://www.askwan.com/tags/lvs/" rel="tag">lvs</a> , <a href="http://www.askwan.com/tags/piranha/" rel="tag">piranha</a> , <a href="http://www.askwan.com/tags/dr/" rel="tag">dr</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/78/</link>
<title><![CDATA[Zeus web server集群配置]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Wed, 23 Jul 2008 03:19:07 +0000</pubDate> 
<guid>http://www.askwan.com/post/78/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zeus Web Server 功能比较强大地方之一是直接支持负载均衡，并且对后端服务器有检测监控功能，而高端的流量控制设备， 比如硬件负载均衡设备F5 BIGIP ,Radware等在这方面更是发挥到极致，但是价格昂贵，大企业用的多，一般中小企业应用也用不着，而zeus web server根据官方权威测试，用ZWS搭建集群，可以支持几万并发访问量，对于中小企业级互联网应用绰绰有余，而且能节省不少成本，何乐而不为!<br/>&nbsp;&nbsp;&nbsp;&nbsp; 废话不说了，下面介绍本人利用Zeus Web Server 搭建负载均衡的一点经验，仅供参考！<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zws集群系统，有管理主机administrator host和后端真实主机real server组成，相互之间通过TCP/IP协议通讯，当然，管理主机也可以作为Real Server来使用，通过ZWS提供的RR轮训算法，将客户端请求均衡的分发到后端服务器，而且利用HA搭配ZWS就可以搭建高可用web服务器集群方案，如下图示<br/><a href="http://www.askwan.com/attachment.php?fid=97" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=97" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zeus在我用过所有web服务器中，各种配置都是最人性化的，这点，大概就是商业产品和非商业产品之间一个重要区别吧。<br/>进入管理主机节点的“Cluster Configuration”页面，就可以开始进行傻瓜式集群配置工作了。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这以前，到其他真实主机安装好ZWS，然后运行$ZEUSHOME/web/bin/registerwithadminserver脚本，到管理主机节点进行注册，这样管理主机节点才可以监控这台主机状况。<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">[root@askwan bin]# .$ZEUSHOME/web/bin/registerwithadminserver</div></div><br/><br/><div class="code">This program registers this back-end web server with an<br/>Administration Server (Zeus User Interface)<br/><br/>You will need to know the hostname and port of your<br/>administration server, together with the password used<br/>to access the User Interface.<br/><br/><br/><br/>Note: this program will (re)start your web server on this machine.<br/><br/>Administration Server Hostname: admin.askwan.com<br/><br/>Administration Server Port&nbsp;&nbsp;&nbsp;&nbsp; &#91;9090&#93;: <br/><br/>Administration Server Password: 此处输入管理主机节点管理密码<br/><br/><br/>This Web Server has now been successfully registered with the<br/>specified Zeus Administration Server.<br/><br/>It will now be visible in the Administration Server<br/>User Interface (on the Machines Configuration page)<br/>as askwan:9080.<br/><br/><br/><br/>Registration with admin.askwan.com:9090 was successful.<br/>Now restarting this server...<br/><br/><br/>basename: too few arguments<br/>Try `basename --help&#039; for more information.<br/>Zeus Web Server stopped<br/>Zeus Web Server - (C) 1995 - 2004 Zeus Technology Limited<br/>Version 4.3, Build date: Jun 13 2004 18:37:34<br/>Process permissions set to nobody:nobody<br/> INFO:sendfile: Linux sendfile driver<br/> INFO:2nd level shared-memory SSL cache enabled<br/> INFO:Zeus Web Server started<br/> INFO:Version 4.3, Build date: Jun 13 2004 18:37:34<br/> INFO:Zeus Web Server running<br/>Zeus Web Server restarted.</div><br/><br/>注册完毕后，在管理主机节点配置，“Adding a Web Server to the Cluster”<br/><br/>Machine name 填写真实主机名称<br/>Port 默认9080<br/><br/>然后依次添加其他<br/>配置页面以图形方式现实集群中机器的状态，如下图，左边两台主机正常，右边主机表示不正常，请求也就不会转发到这台主机。<br/><br/><a href="http://www.askwan.com/attachment.php?fid=98" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=98" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>流量监控则可以详细比较后端服务器流量变化<br/><br/><a href="http://www.askwan.com/attachment.php?fid=99" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=99" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>无论如何，本人还是觉得zws对于中小企业级web应用来说，是一个不错的选择！<br/><br/>Tags - <a href="http://www.askwan.com/tags/zeus/" rel="tag">zeus</a> , <a href="http://www.askwan.com/tags/web/" rel="tag">web</a> , <a href="http://www.askwan.com/tags/server/" rel="tag">server</a> , <a href="http://www.askwan.com/tags/cluster/" rel="tag">cluster</a> , <a href="http://www.askwan.com/tags/%25E8%25B4%259F%25E8%25BD%25BD%25E5%259D%2587%25E8%25A1%25A1/" rel="tag">负载均衡</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/74/</link>
<title><![CDATA[我最近做的项目规划架构图]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Tue, 15 Jul 2008 06:10:30 +0000</pubDate> 
<guid>http://www.askwan.com/post/74/</guid> 
<description>
<![CDATA[ 
	最近几个月就做与这个东西 七七八八的费用加起来 150多万了 <br/><br/><a href="http://www.askwan.com/attachment.php?fid=84" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=84" class="insertimage" alt="Open in new window" title="Open in new window" border="0" width="750" height="600"/></a><br/><br/>最后的各设备参考配置如下：<br/>Dell 2950 <br/>四核至强处理器E5405 2GHz,2×6M缓存/4G/146G*2/RAID/3年保修/双电源/远程管理卡/Qlogic HBA*2<br/><a href="http://www.askwan.com/attachment.php?fid=85" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=85" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>DS3200&nbsp;&nbsp;<br/>8块146GB 15K SAS HS 3.5" SAS Hot-Swap 15K<br/><a href="http://www.askwan.com/attachment.php?fid=86" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=86" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>Juniper netstreen ISG 1000<br/>NS-ISG 1000 Advanced System, 4-10/100/1000 ports, Fan Tray, 0 I/O modules, AC power supply, 0 VSYS NetScreen-ISG 1000 <br/><a href="http://www.askwan.com/attachment.php?fid=87" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=87" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>Cisco 3750交换机<br/>Catalyst 3750 48 10/100+4 SFP Standard Multilayer Image<br/><a href="http://www.askwan.com/attachment.php?fid=88" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=88" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>Brocade 220E<br/>单台FC交换机接口配置要求：8prt/8 SWL/4Gb SFPs<br/><a href="http://www.askwan.com/attachment.php?fid=89" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=89" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>HDS AMS200<br/>双控，Cache容量2GB，15个146GB硬盘，4个FC类型端口，2个冗余电源模块,5*HDLM license<br/><a href="http://www.askwan.com/attachment.php?fid=90" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=90" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/><br/><br/>Tags - <a href="http://www.askwan.com/tags/%25E9%25A1%25B9%25E7%259B%25AE%25E8%25A7%2584%25E5%2588%2592/" rel="tag">项目规划</a> , <a href="http://www.askwan.com/tags/san/" rel="tag">san</a> , <a href="http://www.askwan.com/tags/dell2950/" rel="tag">dell2950</a> , <a href="http://www.askwan.com/tags/cisco3750/" rel="tag">cisco3750</a> , <a href="http://www.askwan.com/tags/hds/" rel="tag">hds</a> , <a href="http://www.askwan.com/tags/ams200/" rel="tag">ams200</a> , <a href="http://www.askwan.com/tags/brocade220e/" rel="tag">brocade220e</a> , <a href="http://www.askwan.com/tags/juniper/" rel="tag">juniper</a> , <a href="http://www.askwan.com/tags/netstreen/" rel="tag">netstreen</a> , <a href="http://www.askwan.com/tags/isg1000/" rel="tag">isg1000</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/30/</link>
<title><![CDATA[centos 4.4下用DRBD搭建网络RAID  ]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Thu, 24 Apr 2008 14:06:12 +0000</pubDate> 
<guid>http://www.askwan.com/post/30/</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;有关 DRBD的介绍可以参考<a href="http://www.drbd.org" target="_blank">这里</a><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">DRBD is a block device which is designed to build high availability clusters. This is done by mirroring a whole block device via (a dedicated) network. You could see it as a network raid-1. </div></div><br/><br/>有数据表明DRBD搭配heartbeat等作为一种高可用性方案在生产环境下是完全可行的，最新的8.0.0以上版本已经支持多种文件系统。包括一些集群文件系统，如OCFS2 和 GFS，相信DRBD以后应用在存储应用领域会有很多施展的空间。 <br/><br/>本文利用drbd做个简单的网络RAID-1，实现两台及其数据和同步和备份<br/><br/>机器两台分别为<br/>192.168.1.124&nbsp;&nbsp;server5<br/>192.168.1.125&nbsp;&nbsp;server6<br/><br/>1。到官方网站 <a href="http://www.drbd.org" target="_blank">www.drbd.org</a>下载最新版本的DRBD<br/> 目前最新版本是8.2.5<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#cp drbd-8.2.5.tar.tar /usr/src/<br/>#cd /usr/src/<br/>#tar -zxvf drbd-8.2.5.tar.tar <br/>#cd drbd-8.2.5<br/>#make clean<br/>#make KDIR=/usr/src/kernels/2.6.9-42.EL-smp-i686/<br/>#make install</div></div>没有问题的话，相关文件就安装到默认路径下了 主要是/etc/drbd.conf 和/etc/init.d/drbd <br/>然后是几个实用命令工具drbdadm ， drbdmeta，&nbsp;&nbsp; drbdsetup&nbsp;&nbsp;<br/>最后用modprobe重新加载drbd模块到内核中<br/><br/>2.配置drbd.conf文件<br/><br/>这里给出我测试的简单例子<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"><br/>global {<br/>usage-count yes;<br/>}<br/><br/><br/>common {<br/>&nbsp;&nbsp;syncer { rate 10M; }<br/>}<br/><br/>resource askwan {<br/><br/>&nbsp;&nbsp;protocol&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C;<br/>&nbsp;&nbsp;startup { wfc-timeout 0; degr-wfc-timeout&nbsp;&nbsp;&nbsp;&nbsp; 120; }<br/>&nbsp;&nbsp;disk { on-io-error detach; }<br/>&nbsp;&nbsp;syncer { rate 10M; }<br/><br/><br/>&nbsp;&nbsp;on server5{<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/drbd0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;disk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/sdb1;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.124:44444;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;meta-disk&nbsp;&nbsp; internal;<br/>&nbsp;&nbsp;}<br/><br/><br/>&nbsp;&nbsp;on server6 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/drbd0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;disk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/dev/sdb1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;address&nbsp;&nbsp;&nbsp;&nbsp; 192.168.1.125:44444;<br/>&nbsp;&nbsp;&nbsp;&nbsp;meta-disk&nbsp;&nbsp; internal;<br/>&nbsp;&nbsp;}<br/>}</div></div><br/>3.创建原数据<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#drbdadm create-md all</div></div><br/><br/>4.启动drbd：<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#/etc/init.d/drbd start</div></div><br/><br/>5。设置192.168.1.124为主节点：<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"> #drbdadm — –overwrite-data-of-peer primary all</div></div><br/><br/>6. 创建文件系统<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#mkfs.ext3 /dev/drbd0</div></div><br/><br/>7. 挂载文件系统<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#mkdir /askwandata<br/> #mount /dev/drbd0 /askwandata</div></div><br/><br/>8.在192.168.1.125上同上先创建原数据，然后启动DRBD<br/><br/><br/>主节点上<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"><br/>[root@server5 ~]# cat /proc/drbd <br/>version: 8.2.5 (api:88/proto:86-88)<br/>GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server6, 2008-04-23 21:20:43<br/> 0: cs:Connected st:Primary/Secondary ds:UpToDate/UpToDate C r---<br/>&nbsp;&nbsp;&nbsp;&nbsp;ns:392 nr:1077344 dw:1077736 dr:97 al:2 bm:64 lo:0 pe:0 ua:0 ap:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resync: used:0/31 hits:65194 misses:64 starving:0 dirty:0 changed:64<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;act_log: used:0/127 hits:96 misses:2 starving:0 dirty:0 changed:2</div></div><br/><br/>从节点<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">[root@server6 ～]# cat /proc/drbd <br/>version: 8.2.5 (api:88/proto:86-88)<br/>GIT-hash: 9faf052fdae5ef0c61b4d03890e2d2eab550610c build by root@server5, 2008-04-23 21:12:34<br/> 0: cs:Connected st:Secondary/Primary ds:UpToDate/UpToDate C r---<br/>&nbsp;&nbsp;&nbsp;&nbsp;ns:4 nr:392 dw:33612 dr:1044285 al:13 bm:74 lo:0 pe:0 ua:0 ap:0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resync: used:0/31 hits:65194 misses:64 starving:0 dirty:0 changed:64<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;act_log: used:0/127 hits:8292 misses:13 starving:0 dirty:0 changed:13</div></div><br/><br/>最后可以做一些模拟故障，用以检验此网络RAID-1的可靠性，这部分就不作描述了，更多DRBD<br/>技术研究中。<br/><br/><br/><br/>Tags - <a href="http://www.askwan.com/tags/drbd/" rel="tag">drbd</a> , <a href="http://www.askwan.com/tags/raid/" rel="tag">raid</a> , <a href="http://www.askwan.com/tags/%25E7%25BD%2591%25E7%25BB%259C%25E5%25A4%2587%25E4%25BB%25BD/" rel="tag">网络备份</a> , <a href="http://www.askwan.com/tags/ha/" rel="tag">ha</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/28/</link>
<title><![CDATA[linux下利用Haproxy和keepalived实现简单负载均衡]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Wed, 23 Apr 2008 13:07:09 +0000</pubDate> 
<guid>http://www.askwan.com/post/28/</guid> 
<description>
<![CDATA[ 
	架构拓扑图如下：<br/><br/><a href="http://www.askwan.com/attachment.php?fid=25" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=25" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/>haproxy <br/>VIP：&nbsp;&nbsp;192.168.1.150<br/>Master：192.168.1.10<br/>Slave： 192.168.1.11<br/>之间用keepalived实现HA<br/>webserver1：192.168.1.101<br/>webserver2：192.168.1.102<br/>webserver3：192.168.1.103<br/>webserver4：192.168.1.104<br/><br/>1.下载： <br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#wget <a href="http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.4.tar.gz" target="_blank">http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.14.4.tar.gz</a></div></div><br/><br/>2.解压安装 <br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#tar&nbsp;&nbsp;–zxvf&nbsp;&nbsp;haproxy-1.3.14.4.tar.gz<br/>#tar zxvf haproxy-1.3.14.4..tar.gz<br/>#mv&nbsp;&nbsp;haproxy-1.3.14.4&nbsp;&nbsp;haproxy<br/>#cd haproxy<br/>#make TARGET=linux26&nbsp;&nbsp; </div></div>（2.4内核版本 make TARGET=linux24 <br/>freebsd&nbsp;&nbsp;make&nbsp;&nbsp;TARGET=freebsd<br/>solaris系统&nbsp;&nbsp;make TARGET=solaris CPU=ultrasparc REGEX=static-pcre）<br/>然后增加一个haproxy用户<br/><br/>3.配置haproxy<br/>vi /etc/haproxy/haproxy.cfg<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">global<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chroot /var/chroot/haproxy<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;daemon<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gid&nbsp;&nbsp;&nbsp;&nbsp; 501<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log 127.0.0.1 local3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nbproc&nbsp;&nbsp;2<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pidfile /var/run/haproxy-private.pid<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ulimit-n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;65535<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user&nbsp;&nbsp;&nbsp;&nbsp;haproxy<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxconn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;spread-checks&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tune.maxaccept&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tune.maxpollevents&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;100<br/><br/><br/>defaults askwan<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log&nbsp;&nbsp;&nbsp;&nbsp; global<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode&nbsp;&nbsp;&nbsp;&nbsp;http<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option&nbsp;&nbsp;httplog<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option&nbsp;&nbsp;dontlognull<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log 127.0.0.1 local3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retries 3<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option redispatch<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;maxconn 32000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clitimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srvtimeout&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50000<br/><br/><br/>listen&nbsp;&nbsp;askwan&nbsp;&nbsp;0.0.0.0:80<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;appsession JSESSIONID len 52 timeout 3h<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie SRV insert indirect nocache<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mode http<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats enable<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats hide-version<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats uri /haproxy-stats<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats realm Haproxy&#92; statistics<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats auth askwan:askwan<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stats refresh 3s<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;monitor-uri /haproxy_test<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;balance roundrobin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option httpclose<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option forwardfor<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;option httpchk HEAD /index.html HTTP/1.0<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server server1 192.168.1.101:80 check inter 2000&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server server2 192.168.1.102:80 check inter 2000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server server3 192.168.1.103:80 check inter 2000<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;server server4 192.168.1.104:80 check inter 2000</div></div><br/>slave机器上同样配置如斯<br/><br/>下面是监控页面<br/><br/><a href="http://www.askwan.com/attachment.php?fid=26" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=26" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/><br/><br/>附上haproxy启动脚本：<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">#!/bin/sh<br/>#<br/># chkconfig: - 85 15<br/># description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited &#92;<br/>#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for high availability environments.<br/># processname: haproxy<br/># config: /etc/haproxy/haproxy.cfg<br/># pidfile: /var/run/haproxy.pid<br/><br/># Script Author: Simon Matter <simon.matter@invoca.ch><br/># Version: 2004060600<br/><br/># Source function library.<br/>if [ -f /etc/init.d/functions ]; then<br/>&nbsp;&nbsp;. /etc/init.d/functions<br/>elif [ -f /etc/rc.d/init.d/functions ] ; then<br/>&nbsp;&nbsp;. /etc/rc.d/init.d/functions<br/>else<br/>&nbsp;&nbsp;exit 0<br/>fi<br/><br/># Source networking configuration.<br/>. /etc/sysconfig/network<br/><br/># Check that networking is up.<br/>[ ${NETWORKING} = "no" ] && exit 0<br/><br/># This is our service name<br/>BASENAME=`basename $0`<br/>if [ -L $0 ]; then<br/>&nbsp;&nbsp;BASENAME=`find $0 -name $BASENAME -printf %l`<br/>&nbsp;&nbsp;BASENAME=`basename $BASENAME`<br/>fi<br/><br/>[ -f /etc/$BASENAME/$BASENAME.cfg ] &#124;&#124; exit 1<br/><br/>RETVAL=0<br/><br/>start() {<br/>&nbsp;&nbsp;/usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg<br/>&nbsp;&nbsp;if [ $? -ne 0 ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo "Errors found in configuration file, check it with '$BASENAME check'."<br/>&nbsp;&nbsp;&nbsp;&nbsp;return 1<br/>&nbsp;&nbsp;fi<br/><br/>&nbsp;&nbsp;echo -n "Starting $BASENAME: "<br/>&nbsp;&nbsp;daemon /usr/sbin/$BASENAME -D -f /etc/$BASENAME/$BASENAME.cfg -p /var/run/$BASENAME.pid<br/>&nbsp;&nbsp;RETVAL=$?<br/>&nbsp;&nbsp;echo<br/>&nbsp;&nbsp;[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME<br/>&nbsp;&nbsp;return $RETVAL<br/>}<br/><br/>stop() {<br/>&nbsp;&nbsp;echo -n "Shutting down $BASENAME: "<br/>&nbsp;&nbsp;killproc $BASENAME -USR1<br/>&nbsp;&nbsp;RETVAL=$?<br/>&nbsp;&nbsp;echo<br/>&nbsp;&nbsp;[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$BASENAME<br/>&nbsp;&nbsp;[ $RETVAL -eq 0 ] && rm -f /var/run/$BASENAME.pid<br/>&nbsp;&nbsp;return $RETVAL<br/>}<br/><br/>restart() {<br/>&nbsp;&nbsp;/usr/sbin/$BASENAME -c -q -f /etc/$BASENAME/$BASENAME.cfg<br/>&nbsp;&nbsp;if [ $? -ne 0 ]; then<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo "Errors found in configuration file, check it with '$BASENAME check'."<br/>&nbsp;&nbsp;&nbsp;&nbsp;return 1<br/>&nbsp;&nbsp;fi<br/>&nbsp;&nbsp;stop<br/>&nbsp;&nbsp;start<br/>}<br/><br/>check() {<br/>&nbsp;&nbsp;/usr/sbin/$BASENAME -c -q -V -f /etc/$BASENAME/$BASENAME.cfg<br/>}<br/><br/>rhstatus() {<br/>&nbsp;&nbsp;status $BASENAME<br/>}<br/><br/>condrestart() {<br/>&nbsp;&nbsp;[ -e /var/lock/subsys/$BASENAME ] && restart &#124;&#124; :<br/>}<br/><br/># See how we were called.<br/>case "$1" in<br/>&nbsp;&nbsp;start)<br/>&nbsp;&nbsp;&nbsp;&nbsp;start<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;stop)<br/>&nbsp;&nbsp;&nbsp;&nbsp;stop<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;restart)<br/>&nbsp;&nbsp;&nbsp;&nbsp;restart<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;reload)<br/>&nbsp;&nbsp;&nbsp;&nbsp;restart<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;condrestart)<br/>&nbsp;&nbsp;&nbsp;&nbsp;condrestart<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;status)<br/>&nbsp;&nbsp;&nbsp;&nbsp;rhstatus<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;check)<br/>&nbsp;&nbsp;&nbsp;&nbsp;check<br/>&nbsp;&nbsp;&nbsp;&nbsp;;;<br/>&nbsp;&nbsp;*)<br/>&nbsp;&nbsp;&nbsp;&nbsp;echo $"Usage: $BASENAME {start&#124;stop&#124;restart&#124;reload&#124;condrestart&#124;status&#124;check}"<br/>&nbsp;&nbsp;&nbsp;&nbsp;exit 1<br/>esac<br/> <br/>exit $?</div></div><br/><br/><br/>4.在两台haproxy机器上安装配置好keepalived<br/>Keepalived配置<br/>VIP 192.168.1.150<br/>Realserver&nbsp;&nbsp;192.168.1.10 （MASTER）<br/>RealServer&nbsp;&nbsp;192.168.1.11 （SLAVER）<br/><br/>分别在两台机器上配置keepalived.conf文件<br/><br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">global_defs {<br/>&nbsp;&nbsp; notification_email {<br/>&nbsp;&nbsp;&nbsp;&nbsp; askwan@yahoo.com<br/>&nbsp;&nbsp; }<br/>&nbsp;&nbsp; notification_email_from askwan@askwan.com<br/>&nbsp;&nbsp; smtp_server 192.168.1.3<br/>&nbsp;&nbsp; smtp_connect_timeout 30<br/>&nbsp;&nbsp; router_id LVS_DEVEL<br/>}<br/><br/>vrrp_instance VI_1 {<br/>&nbsp;&nbsp;&nbsp;&nbsp;state MASTER<br/>&nbsp;&nbsp;&nbsp;&nbsp;interface eth0<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_router_id 51<br/>&nbsp;&nbsp;&nbsp;&nbsp;priority 100<br/>&nbsp;&nbsp;&nbsp;&nbsp;advert_int 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;authentication {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_type PASS<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;auth_pass askwan<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;virtual_ipaddress {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;192.168.1.150<br/>&nbsp;&nbsp;&nbsp;&nbsp;}</div></div><br/><br/>5调试<br/><br/>这个是Master机keepalived调试信息：<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content"><br/>Apr 22 08:32:22 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:32:22 db1 Keepalived: daemon is already running<br/>Apr 22 08:32:24 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:32:24 db1 Keepalived: daemon is already running<br/>Apr 22 08:32:46 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:32:46 db1 Keepalived: daemon is already running<br/>Apr 22 08:37:42 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:37:42 db1 Keepalived: daemon is already running<br/>Apr 22 08:39:34 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:39:34 db1 Keepalived: daemon is already running<br/>Apr 22 08:41:20 db1 sshd(pam_unix)[6317]: session opened for user root by root(uid=0)<br/>Apr 22 08:41:32 db1 Keepalived: Terminating on signal<br/>Apr 22 08:41:32 db1 Keepalived_vrrp: Terminating VRRP child process on signal<br/>Apr 22 08:41:32 db1 Keepalived: Stopping Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:42:03 db1 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Using MII-BMSR NIC polling thread...<br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Registering Kernel netlink reflector<br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Registering Kernel netlink command channel<br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Registering gratutious ARP shared channel<br/>Apr 22 08:42:03 db1 Keepalived: Starting VRRP child process, pid=6358<br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Opening file '/usr/local/keepalived/etc/keepalived/keepalived.conf'. <br/>Apr 22 08:42:03 db1 Keepalived_vrrp: Configuration is using : 33290 Bytes<br/>Apr 22 08:42:03 db1 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]<br/>Apr 22 08:42:04 db1 Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE<br/>Apr 22 08:42:05 db1 Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE<br/>Apr 22 08:42:05 db1 Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.<br/>Apr 22 08:42:05 db1 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.150<br/>Apr 22 08:42:10 db1 Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 192.168.1.150</div></div><br/>可以看到此机此时处于MASTER状态<br/><br/>slave机调试信息<br/><div class="quote"><div class="quote-title">Quotation</div><div class="quote-content">Apr 20 08:43:28 db2 Keepalived: Starting Keepalived v1.1.15 (04/22,2008) <br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Using MII-BMSR NIC polling thread...<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Registering Kernel netlink reflector<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Registering Kernel netlink command channel<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Registering gratutious ARP shared channel<br/>Apr 22 08:43:28 db2 Keepalived: Starting VRRP child process, pid=5857<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Opening file '/usr/local/keepalived/etc/keepalived/keepalived.conf'. <br/>Apr 22 08:43:28 db2 Keepalived_vrrp: Configuration is using : 36052 Bytes<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE<br/>Apr 22 08:43:28 db2 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]</div></div><br/>可以看到此机此时处于BACKUP状态<br/><br/>5.测试<br/><br/>地址已经分配完成后，可以开始做测试 测试过程简单 省略了<br/>在HA的测试过程说一下 <br/>192.168.1.10宕机后192.168.1.11接管<br/>192.168.1.10恢复后 192.168.1.11移交服务权限10<br/>本方案经过我多次测试基本达到了架构拓扑图中的需求。这样一个简单高可用集群方案搭建完成。<br/><br/>如果文章中有什么不对，你有更好的建议，请联系我 askwan （at）yahoo.cn<br/><br/>更过信息请参阅：<br/><a href="http://haproxy.1wt.eu/" target="_blank">http://haproxy.1wt.eu/</a><br/><a href="http://www.keepalived.org" target="_blank">http://www.keepalived.org</a> /<br/><br/><br/>Tags - <a href="http://www.askwan.com/tags/haproxy/" rel="tag">haproxy</a> , <a href="http://www.askwan.com/tags/keepalived/" rel="tag">keepalived</a> , <a href="http://www.askwan.com/tags/cluster/" rel="tag">cluster</a> , <a href="http://www.askwan.com/tags/high-availbility/" rel="tag">high-availbility</a>
]]>
</description>
</item><item>
<link>http://www.askwan.com/post/22/</link>
<title><![CDATA[web高可用服务器架构]]></title> 
<author>askwan &lt;askwan@yahoo.cn&gt;</author>
<category><![CDATA[Architecture &amp; HA]]></category>
<pubDate>Sun, 20 Apr 2008 02:03:14 +0000</pubDate> 
<guid>http://www.askwan.com/post/22/</guid> 
<description>
<![CDATA[ 
	最近一个项目需要用到这个东西 关注了一下haproxy <br/>然后用这个做了个架构图，本图只有前端的web ,可以在后面加上数据库这一层,<br/>同样可以用haproxy做到数据库的负载均衡和高可用。<br/><br/>先发个图 有时间把这个架构在linux下的配置文档捣鼓着写出来<br/><br/><br/><a href="http://www.askwan.com/attachment.php?fid=21" target="_blank"><img src="http://www.askwan.com/attachment.php?fid=21" class="insertimage" alt="Open in new window" title="Open in new window" border="0"/></a><br/>Tags - <a href="http://www.askwan.com/tags/web/" rel="tag">web</a> , <a href="http://www.askwan.com/tags/highscalability/" rel="tag">highscalability</a> , <a href="http://www.askwan.com/tags/highavailability/" rel="tag">highavailability</a> , <a href="http://www.askwan.com/tags/cluster/" rel="tag">cluster</a> , <a href="http://www.askwan.com/tags/%25E9%259B%2586%25E7%25BE%25A4/" rel="tag">集群</a>
]]>
</description>
</item>
</channel>
</rss>