集群技术
May
17
今天有机会去了趟中国网通北京西单机房,也终于见识了价值50~100万人民币的“F5 BIG-IP 负载均衡交换机”,以下是我对F5 BIG-IP的一些认识:
1、F5 BIG-IP是一台对流量和内容进行管理分配的设备,它提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
2、F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
3、F5 BIG-IP通过OneConnection连接优化技术,卸载服务器端的处理压力,提升服务器处理性能。
4、F5 BIG-IP通过流量整形和Qos机制区分和保证重要应用的带宽和服务等级。
F5性能不错,但价格也不低,低成本实现网站负载均衡的方法之一是:DNS轮循。相比于F5 BIG-IP负载均衡交换机,DNS轮循的处理性能要低,而且负载并不很均衡。如果有服务器倒掉,DNS不能马上将该服务器从列表中摘除。搜狐目前使用的是DNS轮循技术,“nslookup www.sohu.com”可以发现有以下IP:61.135.179.130, 61.135.179.132, 61.135.179.147, 61.135.179.148, 61.135.179.152, 61.135.179.153, 61.135.179.170, 61.135.179.171, 61.135.179.172, 61.135.179.173, 61.135.179.174, 61.135.179.175, 61.135.179.176, 61.135.150.63, 61.135.150.114。随便访问其中的一个IP地址可知,这些服务器都是squid/2.5.STABLE14软件实现的反向代理服务器。
1、F5 BIG-IP是一台对流量和内容进行管理分配的设备,它提供12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器。
2、F5 BIG-IP可以确认应用程序能否对请求返回对应的数据。假如F5 BIG-IP后面的某一台服务器发生服务停止、死机等故障,F5会检查出来并将该服务器标识为宕机,从而不将用户的访问请求传送到该台发生故障的服务器上。这样,只要其它的服务器正常,用户的访问就不会受到影响。宕机一旦修复,F5 BIG-IP就会自动查证应用已能对客户请求作出正确响应并恢复向该服务器传送。
3、F5 BIG-IP通过OneConnection连接优化技术,卸载服务器端的处理压力,提升服务器处理性能。
4、F5 BIG-IP通过流量整形和Qos机制区分和保证重要应用的带宽和服务等级。
F5性能不错,但价格也不低,低成本实现网站负载均衡的方法之一是:DNS轮循。相比于F5 BIG-IP负载均衡交换机,DNS轮循的处理性能要低,而且负载并不很均衡。如果有服务器倒掉,DNS不能马上将该服务器从列表中摘除。搜狐目前使用的是DNS轮循技术,“nslookup www.sohu.com”可以发现有以下IP:61.135.179.130, 61.135.179.132, 61.135.179.147, 61.135.179.148, 61.135.179.152, 61.135.179.153, 61.135.179.170, 61.135.179.171, 61.135.179.172, 61.135.179.173, 61.135.179.174, 61.135.179.175, 61.135.179.176, 61.135.150.63, 61.135.150.114。随便访问其中的一个IP地址可知,这些服务器都是squid/2.5.STABLE14软件实现的反向代理服务器。
May
16
LVS:略
nginx proxy 配置:
location / {
root /data/www/wwwroot/bbs.linuxtone.com;
proxy_redirect off ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_pass http://bbs.linuxtone.org;
}
源nginx配置:
安装
HttpRealIpModule模块:
http://wiki.nginx.org/NginxChsHttpRealIpModule
--with-http_realip_module
编译方法:
./configure --user=daemon --group=daemon --prefix=/usr/local/nginx/
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib
--with-http_gzip_static_module --with-http_realip_module
虚拟主机增加配置:
set_real_ip_from nginx_proxy_ip/24;
set_real_ip_from nginx_proxy_ip;
real_ip_header X-Real-IP;
EXP:
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.1.6;
real_ip_header X-Real-IP;
查看二台nginx的日志就能取到真实IP了
nginx proxy 配置:
引用
location / {
root /data/www/wwwroot/bbs.linuxtone.com;
proxy_redirect off ;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 50m;
client_body_buffer_size 256k;
proxy_connect_timeout 30;
proxy_send_timeout 30;
proxy_read_timeout 60;
proxy_buffer_size 256k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_max_temp_file_size 128m;
proxy_pass http://bbs.linuxtone.org;
}
源nginx配置:
安装
HttpRealIpModule模块:
http://wiki.nginx.org/NginxChsHttpRealIpModule
--with-http_realip_module
编译方法:
引用
./configure --user=daemon --group=daemon --prefix=/usr/local/nginx/
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-md5=/usr/lib --with-sha1=/usr/lib
--with-http_gzip_static_module --with-http_realip_module
虚拟主机增加配置:
set_real_ip_from nginx_proxy_ip/24;
set_real_ip_from nginx_proxy_ip;
real_ip_header X-Real-IP;
EXP:
set_real_ip_from 192.168.1.0/24;
set_real_ip_from 192.168.1.6;
real_ip_header X-Real-IP;
查看二台nginx的日志就能取到真实IP了
Jan
6
目录
一 应用背景
二 应用环境
三 安装配置
四 FAQ
一 应用背景
随着互联网应用的普及以及人们对互联网的要求也越来越高,在流量增加的同时,要求速度快,在线时间长或出故障的时间短或故障后能及时恢复等等。为了解决这些问题,各种负载均衡及集群技术应运而生
其中,LVS便是一个解决大流量分流很好的解决方案
详细请参考 http://www.linuxvirtualserver.org/zh/lvs1.html
HA(High Availability),则是高可用的意思,也可以说是双机热备双机等的应用。如在一些在线时间有特别的要求或是在故障后要在很短的时间内恢复,就有必要应用到这个ha了
本文的应用,由两台机组成的一个LVS及HA,主要是解决分流及单点故障。
如A,B机,正常情况下,A机为LVS转分机,同时又是提供web的服务机,当A机有问题时,B机接管A机的服务,同时自己也是一个web服务机。由于本文的应用中,机器数量有限,所以,将ha,lvs,realserver都放在一起了。在机器允许的情况下,最好分开,如:
LVS转发为独立一台机,再在这转发机上配置HA避免转发机故障,再用一台机来做转发及HA的备机,当主转发机故障时就可接管服务
二 应用环境
机器两台
系统为CentOS 5.4 x86_64版
heartbeat + ldirectord + lvs
结构如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
三 安装
1 可以用源码安装,也可以用yum安装,用源码安装,定制性强一点,但用yum安装,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的配置文件沿用1.X的风格,2.X以上的功能很强大,也较复杂)
主要的配置文件有以下几个:
Authkeys
ha.cf
ldirectord.cf
haresources
文件内容
# cat authkeys
auth 1
1 crc
# cat ha.cf
#test conf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 8
deadtime 60
warntime 60
initdead 120
udpport 694
ucast eth0 192.168.1.92
auto_failback on
node wd1
node wd2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
# cat ldirectord.cf
#test conf
checktimeout=10
checkinterval=8
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=no
virtual=192.168.1.90:80
real=192.168.1.91:80 gate
real=192.168.1.92:80 gate
fallback=127.0.0.1:80 gate
service=http
request="lt.html"
receive="Test Page"
scheduler=wrr
persistent=30
protocol=tcp
checktype=negotiate
checkport=80
# cat haresources
Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord
wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
/sbin/ipvsadm --set 10 10 10
Wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
# test
VIP=192.168.1.90
/etc/rc.d/init.d/functions
/sbin/ipvsadm --set 10 10 10
case "$1" in
start)
/sbin/ifconfig lo:0 down
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
;;
stop)
/sbin/ifconfig eth0:0 down
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#cat /etc/hosts
192.168.1.91 wd1
192.168.1.92 wd2
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
在iptables 增加一个对方IP的访问,否则在切换时会有问题
一 应用背景
二 应用环境
三 安装配置
四 FAQ
一 应用背景
随着互联网应用的普及以及人们对互联网的要求也越来越高,在流量增加的同时,要求速度快,在线时间长或出故障的时间短或故障后能及时恢复等等。为了解决这些问题,各种负载均衡及集群技术应运而生
其中,LVS便是一个解决大流量分流很好的解决方案
详细请参考 http://www.linuxvirtualserver.org/zh/lvs1.html
HA(High Availability),则是高可用的意思,也可以说是双机热备双机等的应用。如在一些在线时间有特别的要求或是在故障后要在很短的时间内恢复,就有必要应用到这个ha了
本文的应用,由两台机组成的一个LVS及HA,主要是解决分流及单点故障。
如A,B机,正常情况下,A机为LVS转分机,同时又是提供web的服务机,当A机有问题时,B机接管A机的服务,同时自己也是一个web服务机。由于本文的应用中,机器数量有限,所以,将ha,lvs,realserver都放在一起了。在机器允许的情况下,最好分开,如:
LVS转发为独立一台机,再在这转发机上配置HA避免转发机故障,再用一台机来做转发及HA的备机,当主转发机故障时就可接管服务
二 应用环境
机器两台
系统为CentOS 5.4 x86_64版
heartbeat + ldirectord + lvs
结构如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
三 安装
1 可以用源码安装,也可以用yum安装,用源码安装,定制性强一点,但用yum安装,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的配置文件沿用1.X的风格,2.X以上的功能很强大,也较复杂)
主要的配置文件有以下几个:
Authkeys
ha.cf
ldirectord.cf
haresources
文件内容
# cat authkeys
auth 1
1 crc
# cat ha.cf
#test conf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 8
deadtime 60
warntime 60
initdead 120
udpport 694
ucast eth0 192.168.1.92
auto_failback on
node wd1
node wd2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
# cat ldirectord.cf
#test conf
checktimeout=10
checkinterval=8
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=no
virtual=192.168.1.90:80
real=192.168.1.91:80 gate
real=192.168.1.92:80 gate
fallback=127.0.0.1:80 gate
service=http
request="lt.html"
receive="Test Page"
scheduler=wrr
persistent=30
protocol=tcp
checktype=negotiate
checkport=80
# cat haresources
Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord
wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
/sbin/ipvsadm --set 10 10 10
Wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
# test
VIP=192.168.1.90
/etc/rc.d/init.d/functions
/sbin/ipvsadm --set 10 10 10
case "$1" in
start)
/sbin/ifconfig lo:0 down
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
;;
stop)
/sbin/ifconfig eth0:0 down
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#cat /etc/hosts
192.168.1.91 wd1
192.168.1.92 wd2
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
在iptables 增加一个对方IP的访问,否则在切换时会有问题