文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SQUID + CACTI + FreePBX + VirtualIP

SQUID + CACTI + FreePBX + VirtualIP

时间:2006-11-21  来源:agg230

H回国避寒了 现在剩我一个人盯着 真有点吃不消
今天遇到的是VPN和FreePBX的问题 先做个记录 慢慢把过程笔记下来.
关于squid cache_peer的问题 转载几篇文章
http://moniker.co.za/i/program/linuxaid/00152.asp?t=printable&topic=11745
我们通过squid.conf配置文件中的cache_peer选项来配置代理服务器阵
列,通过其他的选项来控制选择代理伙伴的方法。Cache_peer的使用格式如下:
cache_peer  hostname type http_port icp_port
共有5个选项可以配置:
1. hostname:指被请求的同级子代理服务器或父代理服务器。可以用主机名或ip地址表示;
2. type:指明hostname的类型,是同级子代理服务器还是父代理服务器,也即parent(父) 还是 sibling(子);
3. http_port:hostname的监听端口;
4. icp_port:hostname上的ICP监听端口,对于不支持ICP协议的可指定7;
5. options:可以包含一个或多个关键字。
Options可能的关键字有:
1. proxy-only:指明从peer得到的数据在本地不进行缓存,缺省地,squid是要缓存这部分数据的;
2. weight=n:用于你有多个peer的情况,这时如果多于一个以上的peer拥有你请求的数据时,squid通过计算每个peer的ICP响应时间来 决定其weight的值,然后squid向其中拥有最大weight的peer发出ICP请求。也即weight值越大,其优先级越高。当然你也可以手工 指定其weight值;
3. no-query:不向该peer发送ICP请求。如果该peer不可用时,可以使用该选项;
4. Default:有点象路由表中的缺省路由,该peer将被用作最后的尝试手段。当你只有一个父代理服务器并且其不支持ICP协议时,可以使用default和 
   no-query选项让所有请求都发送到该父代理服务器;
5.login=user:password:当你的父代理服务器要求用户认证时可以使用该选项来进行认证。
三、Peer的选择
   我们可以使用特定的规则来选择不同的父代理服务器,从而达到均衡代理服务器负载的目的,常用的选择规则有:
1. 通过目的域进行选择:
比如,对于所有对教科网(域名以.edu.cn结尾)的请求,我们使用名为
cernet.proxy.com的父代理服务器,而对于其他的请求我们使用other.proxy.com的代理服务器,这时我们可以使用cache_peer_domain选项进行指定:
   cache_peer_domain  cernet.proxy.com   .edu.cn
   cache_peer_domain  other.proxy.com    !.edu.cn
2. 通过访问控制列表进行选择:
比如,对于来自192.168.1.0的请求我们使用local.proxy.com父代理服务
器,而对于其他请求由本地子代理服务器直接进行处理,这时我们可以使用cache_peer_access选项来实现:
   acl LocalNet src 192.168.1.0/2525250
   acl all src 0.0.0.0/0.0.0.0
   cache_peer local.proxy.com parent 3128 3130
   cache_peer_access local.proxy.com allow LocalNet
   cache_peer_access local.proxy.com deny all
3. 通过URL进行选择:
比如,对于某些特定URL的请求,我们使用local.proxy.com父代理服务器,
而对于其他URL的请求,我们使用other.proxy.com父代理服务器,这时我们可以通过以下的选项来实现。假设这些特定的URL已在/etc/squid/url-list文件中做了定义。
   acl url url_regex "/etc/squid/url-list"
   acl all src 0.0.0.0/0.0.0.0
   cache_peer local.proxy.com parent 3128 3130
   cache_peer other.proxy.com parent 3128 3130
   cache_peer_access local.proxy.com allow url
   cache_peer_access other.proxy.com allow !url
   除了以上的几种过滤方法外,还有其他的peer选择方法,具体可以参考squid.conf中的相关说明。
4. 配置实例
 假设ISP为你提供了代理服务器(proxy.domain.com),假设该代理服务器的监听端口为8080,再假设该代理服务器不支持ICP协议。 你通过ISP提供的帐号访问该代理服务器。现在由于你的公司的扩大,你不得不使用私有ip(假设为192.168.1.0)来配置客户端。为了使使用私有 ip的客户机也可以上网,你决定使用squid代理服务器。你和ISP之间是通过DDN专线进行互联。则squid.conf中的相关配置如下所示:
acl  local  src  192.168.1.0/2525250
acl  all src 0.0.0.0/0.0.0.0
http_access allow local
http_access deny all
cache_peer  proxy.domain.com parent 8080 7 [default] [no-query]
关于Linux的Virtual IP
(正好也在看这部分内容,索性不写了 把作者的内容全拷过来了 呵呵)
http://zh.linuxvirtualserver.org/node/62
系统:Centos4.2
软件:heartbeat heartbeat-ldirectord heartbeat-pils heartbeat-stonith ipvsadm arptables_jf

机器:3台,IP分布:
A(主调度器):192.168.3.2
B(辅调度器):192.168.3.3
VIP(虚拟IP):192.168.3.5
C(真实服务器):192.168.3.4
D(测试机器):192.168.3.6

注意以下是:LVS/DR模式

一、在C(真实服务器)上安装配置
1、安装:
因为是真实服务器,所以安装很简单,只要安装arptables_jf即可:
yum -y install arptables_jf

2、配置:
其实只要执行下面的lvs文件即可:
/etc/ha.d/resource.d/lvs stop

二、调度器上的配置
1、安装:
yum -y install heartbeat-ldirectord heartbeat-pils heartbeat-stonith heartbeat ipvsadm arptables_jf
2、配置
(1)authkeys(注意这个文件需要600的权限,否则heartbeat启动不了)
cat authkeys
auth 2
2 sha1 bixuan

(2)ha.cf
cat ha.cf
#debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
bcast eth0 eth1 # Linux
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node ld1
node ld2
ping 192.168.3.1
respawn hacluster /usr/lib/heartbeat/ipfail

apiauth ipfail gid=haclient uid=hacluster

(3)haresources
cat haresources
ld1 \
IPaddr2::192.168.3.5/24/eth0/192.168.3.255 \
ldirectord::ldirectord.cf \
LVSSyncDaemonSwap::master \
lvs

(4)ldirectord.cf
cat ldirectord.cf
checktimeout=10
checkinterval=2
autoreload=no
logfile="/var/log/ld.log"
quiescent=yes

virtual=192.168.3.5:80
#fallback=127.0.0.1:80
real=192.168.3.2:80 gate 6
real=192.168.3.3:80 gate 6
real=192.168.3.4:80 gate 6
service=http
request="test.html"
receive="test.html"
scheduler=wlc
persistent=30
protocol=tcp
checktype=negotiate

(5)lvs
这个文件在ha.d/resource.d/
cat ha.d/resource.d/lvs
#!/bin/sh
# chkconfig: 2345 90 10
# description: Preparing for Load Balancer and Real Server switching

VIP=192.168.3.5 # 虚拟IP
LOCAL_IP=192.168.3.2 # 调度器的IP
BROADCAST=192.168.3.125 # 虚拟IP的broadcast

echo "1" > /proc/sys/net/ipv4/ip_forward

. /etc/rc.d/init.d/functions

case "$1" in
start)
echo "Preparing for Load Balancer"
ifconfig lo:0 down
/sbin/arptables -F
;;
stop)
echo "Preparing for Real Server"
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $BROADCAST up
/sbin/arptables -F
/sbin/arptables -A IN -j DROP -d ${VIP}
/sbin/arptables -A OUT -j mangle -o eth0 -s ${VIP} --mangle-ip-s ${LOCAL_IP}
;;
*)
echo "Usage: lvs {start|stop}"
exit 1
esac

这里如果采用tunl模式,请把:lo:0改成tunl0,还有把BROADCAST的值改成VIP的值。

(5)/etc/hosts

在主和辅的调度器里都加上:
192.168.3.2 ld1
192.168.3.2 ld2

然后我在master和backup上运行ip addr sh都有下面的内容:
master:
eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:04:23:c1:7e:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.2/24 brd 192.168.3.255 scope global eth0
inet 192.168.3.5/24 brd 192.168.3.255 scope global eth0

backup:
eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:04:23:c1:7e:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.3/24 brd 192.168.3.255 scope global eth0
inet 192.168.3.5/24 brd 192.168.3.255 scope global eth0

请问这个同时都存在192.168.3.5这个VIP,是如何引起的呢?是不是我的配置有问题?但是现在不影响使用,我担心会引起后患,麻烦章老师了,谢谢!

‹ 请教章博士关于lvs/dr+qmail的配置问题 使用什么调度算法实现对web session的支持 ›
» 798 次阅读

又一问题

由 bixuan 在 周一, 2006-03-20 15:19 提交

我在调度器上执行:ipvsadm -Lnc|grep NONE|wc -l
82115

请问章老师,这么多的NONE连接,是不是已经抛弃还是未分配的?

» 回复
由 wensong 在 周一, 2006-03-20 19:43 提交

NONE状态的连接就是记录持续性连接的模版。若有持久性连接的模版存在,来自同一IP的连接会根据这个模版调度到模版中指定的服务器。

» 回复
由 wensong 在 周二, 2006-03-14 21:06 提交

我 好久没有玩heartbeat了。我想"inet 192.168.3.5/24 brd 192.168.3.255 scope global eth0"是heartbeat程序加进来的,不知道为什么当状态为backup时,它没有把这个192.168.3.5/24删除掉?好在运行"lvs stop"时,会加入arptables过滤规则,所以在backup上的192.168.3.5/24不会影响了主调度器。

» 回复

还有2个问题

由 bixuan 在 周四, 2006-03-16 00:15 提交

1.为什么我的realserver的weight=0以后,还会分配连接呢?我的persistent=30
我是过了30秒后,再测试还是有分配连接,为什么呢?
而且我也执行了:echo 1 > /proc/sys/net/ipv4/vs/expire_nodest_conn

2.如果来计算一台2G内存,XEON2.8的调度器可以支持多少并发呢?如果要控制HASH表的话,该如何来控制呢?

麻烦章老师帮忙,THX

» 回复
由 wensong 在 周四, 2006-03-16 23:29 提交

关于第一点,按道理新的连接不应该被调度到weight=0的服务器上。在新的连接发出前,可以通过"ipvsadm -Lcn"来查查state为NONE的持久性模板,确保它们已经被超时淘汰掉了。

关于第二点,调度器一般不需要太快的CPU,有512M可用内存可支持到近4百万连接调度。Hash表的大小在编译时可以设置。

» 回复

stop)

由 bixuan 在 周三, 2006-03-15 23:01 提交

stop)
echo "Preparing for Real Server"
/sbin/ip addr del ${VIP}/24 dev eth0

加了黑体这句就OK了,呵呵,我想会不会是heartbeat的bug:)

谢谢章老师的回复!



排行榜 更多 +
少女爱换装

少女爱换装

休闲益智 下载
百变英雄射击

百变英雄射击

飞行射击 下载
魔灵契约

魔灵契约

休闲益智 下载