免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3245 | 回复: 1
打印 上一主题 下一主题

Sun Cluster [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-27 09:15 |只看该作者 |倒序浏览

一、Sun Cluster 简介

   Sun Cluster 将 Solaris(TM) 操作环境推广到一种群集操作系统。群集是一种松散耦合的计算节点集合,提供网络服务或应用程序(包括数据库、web 服务和文件服务)的单一客户视图。
每个群集节点都是运行其自己的进程的一个独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。
与传统的单一服务器系统相比,群集有几个优点。这些优点包括对高可用性和可伸缩性应用程序的支持、适应模块化增长的容量和与传统硬件容错系统相比的低进入价。
Sun Cluster 的目标是:
减少或消灭由软件或硬件故障引起的系统停机时间
确保数据和应用程序对最终用户的可用性,而不管故障属于什么类型;这些故障通常引起单服务器系统停机。
通过向群集添加节点,使服务随着处理器的添加而伸缩,从而增大应用程序吞吐量
提供增强的系统可用性,使您能够不必关掉整个群集就可执行维护
Sun Cluster 的高可用性
Sun Cluster 是作为一种高可用 (HA) 系统(即提供对数据和应用程序几乎不间断的访问的系统)来设计的。
相比之下,容错硬件系统提供对数据和应用程序的持续访问,但由于使用专用硬件而成本更高。另外,容错系统通常不能解释软件故障。
Sun Cluster 通过硬件与软件的结合取得了高可用性。冗余的群集互连、存储器和公共网络防止了单点故障的发生。群集软件不间断地监视成员节点是否完好并阻止故障节点加入到群集中,从而防止数据破坏。同时,群集监视应用程序和相关的系统资源,并在出故障时进行失败切换或重新启动应用程序。
有关高可用性的问题与解答,请参考 高可用性 FAQ。
Sun Cluster 的失败切换和可伸缩性
Sun Cluster 使您能够或者在失败切换的基础上,或者在可伸缩的基础上执行应用程序。失败切换和可伸缩应用程序也可以同时在同一群集上运行。一般来说,失败切换应用程序提供高可用性(冗余),而可伸缩应用程序除了具有高可用性之外,还具有更高的性能。单一群集既可以支持失败切换应用程序,也可以支持可伸缩应用程序。
失败切换
失败切换就是群集自动将应用程序从一个故障主节点重新定位到指定的辅助节点的进程。有了失败切换功能,Sun Cluster 就具备了高可用性。
当失败切换发生时,客户可能会看到一个短暂的服务中断,并可能需要在失败切换结束后重新连接。然而,客户并不知道哪一个物理服务器向他们提供应用程序和数据。
可伸缩性
当失败切换忙于冗余时,可伸缩性提供持续的响应时间或吞吐量,而不用去关心负荷。可伸缩应用程序利用群集中的多个节点来同时运行一个应用程序,从而增强了性能。在可伸缩配置中,群集中的每一个节点都可以提供数据和处理客户请求。
二、sun cluster 培训笔记

    Sun Cluster 3.0 的规划、安装、配置及管理
一、 Sun Cluster的基本概念:
1. Sun Cluster3.0支持的两种服务模式:
Failover(失败切换):当故障发生时,系统自动将应用程序等资源(APP、IP、DATA)一个故障主节点上重新定位到指定的辅助节点,客户可能会看到一个短暂的服务中断(一般为10s),并可能需要在失败切换结束后重新连接,但客户并不知道哪一个物理服务器向他们提供应用程序和数据。做到了应用程序的冗余。
Scalable(可伸缩):利用集群中的多个节点来同时运行一个应用程序,每个节点都可以提供数据和处理客户请求,这样既提供了高可用性,还提供了更高的性能。
Sun Cluster3.0单一集群既可以支持失败切换应用程序,也可以支持可伸缩应用程序,而2.2只支持失败切换应用程序。
2.双节点群集配置样例:
群集节点:是同时运行Solaris 操作系统和Sun Cluster 软件的机器,它要么是群集的当
前成员(cluster member),要么是潜在成员。Sun Cluster3.0 软件使您可在一个群集中部署两到八个节点,而2.2只支持到4个节点。
群集名:群集中的所有节点都会归组到一个集群名称下—用于访问和管理群集。如scmail
公共网络适配器(nafo):客户机通过公共网络接口与群集相连。每个网络适配器卡可连接一个或多个公共网络,这取决于卡上是否具有多个硬件接口。可以设置节点,使之包含多个公共网络接口卡,将一个卡配置为活动卡,其他卡作为备份卡。称为“公共网络管理”(PNM) 的Sun Cluster 软件的子系统监视着活动卡。如果活动适配器出现故障,则调用NetworkAdapter Failover (NAFO) 软件进行失败切换,将接口切换至一个备份适配器。
私网(private networks):群集成员通过物理上独立的一个或多个网络(private networks)与群集中的其他节点通信,知道另一节点的加入或离开
管理控制台:可以使用专用SPARCstationTM 系统(称为管理控制台)来管理活动群集。通常在管理控制台上安装并运行的管理工具软件有Cluster Control Panel (CCP) 和SunManagement Center 产品的Sun Cluster 模块。它的使用可以使控制台和管理工具归组到同一机器上,实现集中化的群集管理。
控制台访问设备:Sun 只提供一种支持的终端集线器。您可选择使用支持的Sun 终端集线器。终端集线器通过使用TCP/IP 网络实现对每一节点上ttya 的访问。这样就可从网络上的任一远程工作站对每一节点进行控制台级别的访问。
3.设备标识(DID)
Sun Cluster 通过一种叫做设备标识(DID) 伪驱动程序的结构来管理全局设备。此驱动程序可自动给群集中的每个设备分配唯一的标识,包括多主机磁盘、磁带驱动器和CD-ROM。设执行对全局设备的访问时使用的是DID 驱动程序分配的唯一设备标识,而非传统的Solaris 设备ID(如某一磁盘的标识c0t0d0)。这一措施可保证任何使用磁盘设备的应用程序(如卷管理器或使用原始设备的应用程序)都可使用一致的路径访问设备。例如,节点1 可能将一个多主机磁盘看作c1t2d0,而节点2 可能会完全不同, 将同一磁盘看作是c3t2d0。DID 驱动程序则会分配一个全局名称,如d10,供节点使用,这样就为每个节点提供了到多主机磁盘的一致映射。
4. Quorum 设备
Sun Cluster 配置使用quorum 设备维护数据和资源的完整性。如果群集暂时丢失与节点的连接,则quorum 设备阻止在群集节点试图重新连接群集时出现健忘或使人头疼的问题。通过使用scsetup(1M) 实用程序来指定quorum 设备。
规划quorum 设备时请考虑以下几点。
_ 最小值– 两个节点的群集必须至少有一个分配为quorum 设备的共享磁盘。对于其他拓扑,quorum 设备是可选的。
_ 奇数规则– 如果在直接与quorum 设备连接的两个节点的群集或一对节点中配置多个quorum 设备,则配置奇数个quorum 设备,以便这些设备有完全独立的失败通道。
_ 连接– quorum 设备不能与两个以上的节点连接。
二、 准备工作:
1.安装TC(可选)
a. 两台节点机的串口A分别接到TC的2、3号端口,管理机的串口A连接到TC的1号端口
b. 在管理机上修改文件如下:
#vi /etc/remote
hardware: dv=/dev/term/a:br#9600:el=^C^S^Q^U^D:ie=%$:oe=^D
c.执行#tip hardwire,按下TC面板上的test键,直到Power灯闪放开
d.在按一下TC面板上的test键(2s)
e.管理机的屏幕上显示monitor::
用addr修改TC的 IP地址,按“~.退出”,重起TC
f.telnet到 TC,执行
annex: su
passwd:  
annex# admin
g.配置串口模式:
admin: set port=1-8 type dial_in imask_7bits Y
admin: set port=2-8 mode slave ps_history_buffer 32767
admin: quit
annex#boot
2.配置管理机:(可选)
a. 用root用户登陆管理机,修改/etc/hosts,将所有节点机的主机名和对应地址写入
b. 添加cluster console software
#pkgadd –d . SUNWccon
c. 修改/.profile文件
PATH=$PATH:/opt/SUNWcluster/bin
MANPATH=$MANPATH:/opt/SUNWcluster/man
Export PATH MANPATH
d. 使profile生效 # . /.profile
e. 编辑/etc/clusters
cluster-name node1-name node2-name
f. 编辑/etc/serialports
node1-name TC-address 5002(在TC上的端口号)
node2-name TC-address 5003
g. 执行#ccp cluster-name & ,使用clogin或cconsole/ctelnet工具
3.修改SCSI Initiator Id
在独立服务器中,服务器节点通过将此服务器连接到特定SCSI 总线的SCSI 主机适配器线路,来控制SCSI 总线活动。该SCSI 主机适配器线路称作SCSI initiator。它启动此SCSI 总线的全部总线活动。Sun 系统中SCSI 主机适配器的缺省SCSI 地址是7。群集配置共享多个服务器节点间的存储器。当群集存储器由单端或差分SCSI 设备组成时,这样的配置称作多启动器SCSI。正如此术语的字面含义那样,SCSI 总线上存在多个SCSI 启动器。SCSI 规格需要SCSI 总线上的每个设备都具有唯一的SCSI 地址。(主机适配器也是SCSI 总线上的设备。)因为所有SCSI 主机适配器的缺省SCSI 地址均为7,所以多启动器环境中的缺省硬件配置会导致冲突。要解决这一冲突,请在每个SCSI 总线上将一个SCSI 主机适配器的SCSI 地址保留为7,在第二个主机适配器的SCSI 地址改为6。
a. ok show-disks 记下控制器的路径
b. 创建一个nvramrc脚本设置scsi-initiator-id
ok nvedit
0: probe-all install-console banner
1: cd /pci@6,4000/scsi@3
2: 6 scsi-initiator-id integer-property
3: device-end
4: cd /pci@6,4000/scsi@2,1
5: 6 scsi-initiator-id integer-property
6: device-end
7: banner (Control C)
ok nvstore
ok setenv use-nvramrc? True
ok setenv auto-boot? true
ok reset-all
ok boot
4. 在两个节点机上安装操作系统solaris(至少选用最终用户模式安装),打上推荐补丁。
/: 最小100M
swap:最小750M,是内存的2倍
/globaldevices:100M
起码保留一个100M的未用分区供卷管理软件存储卷信息使用。
5. 确认local-mac-address值为false
#eeprom |grep mac
三、 Sun Cluster软件安装:
1.在每个节点机上编辑/.profile文件
PATH=$PATH:/usr/cluster/bin
MANPATH=$MANPATH:/usr/cluster/man:/usr/share/man
Export PATH MANPATH
2.在每个节点机上编辑.rhosts
+
3.在每个节点机上编辑/etc/default/login文件
#CONSOLE=/dev/console
4.在每个节点机上编辑/etc/hosts文件,将对方节点,逻辑主机名的对应ip写入
5.建立一个全新的cluster节点
a. 运行SunCluster_3.0/Tools/scinstall
b. Establish a new cluster
c. 输入集群名字
d. 输入集群中另一台节点的机器名
e. 不使用DES认证
f. 使用默认的集群传输私网地址
g. 接受默认的全局设备文件系统
h. 接受装完后自动重起
6.向集群中添加另一个节点
a. 运行SunCluster_3.0/Tools/scinstall
b. Add this machine as a node in an established cluster
c. 输入主节点的机器名
d. 接受默认的全局设备文件系统
e. 接受装完后自动重起
7. 打上cluster的补丁
8.配置Quorum 设备
a. 运行scdidadm –L选择准备作为Quorum disk的磁盘号,该磁盘必须在两个节点都能访问的共享磁盘
b. 运行scsetup,输入前面选定的DID设备号
c. 在两个节点的集群中不需再添加Quorum 设备
d. 接受安装
9.配置网络时钟同步协议
修改每个节点机的/etc/inet/ntp.conf,将不存在的节点删除,即将以下行删除
peer clusternode3-priv
peer clusternode4-priv
peer clusternode5-priv
peer clusternode6-priv
peer clusternode7-priv
peer clusternode8-priv
此时,运行scstat –q,可以看到一共有3票;运行scdidadm –L,可以看到所有的DID设备;运行scconf –p,可以看到集群状态、节点名、网卡配置、quorum设备状态。运行scshutdown –y –g 15,以后关的机器先启为原则测试cluster时候能正常启动。
可以运行scheck检查cluster安装是否有错
四、 卷管理:
1.使用veritas作为卷管理软件
a.停止veritas volume manager dynamic multipathing功能,防止它和cluster功能冲突
#mkdir /dev/vx
#ln –s /dev/dsk /dev/vx/dmp
#ln –s /dev/rdsk /dev/vx/rdmp
b.安装veritas volume manager 软件,并打上veritas的补丁
pkgadd –d . VRTSvmdev VRTSvmman VRTSvxvm
c.修改两台节点机的vxio号为一致,并不与其他设备冲突。修改时必须把cluster软件停止
#grep vxio /etc/name_to_major
d.封装rootdg
#vxconfigd –m disable
#vxdctl init
#vxdg init rootdg
#vxdctl add disk c0t0d0sX(未用分区) type=simple
#vxdisk –f init c0t0d0sX type=simple
#vxdg adddisk c0t0d0sX
#vxdctl enable
#rm /etc/vx/reconfig.d/state.d/install-db(该文件不删除,系统不会启动vm软件)
你也可以使用/usr/sbin/vxinstall对整个系统盘进行封装,形成rootdg,但你必须事先保留两个未用分区,一般为slice 3和slice 4。
e. 重起节点1,看vm是否正常启动
VxVM starting in boot mode…
VxVM general startup…
可以使用vxprint察看已配disk group状况
f.在另一台节点机上安以上步骤安装veritas软件并配置rootdg,重起。
g. 在新建的dg上建立卷
#vxassist –g xxx make volname 200m layout=mirror
e. 注册disk grups
#scconf –a –D type=vxvm ,name=xxxx,nodelist=node1:node2
如果再已注册的dg上添加vol,需运行scsetup同步注册信息。
f. 使用已建vol
#newfs /dev/vx/rdsk/dg-name/volname
#mkdir /global/xxx(两节点同时做)
#vi /etv/vfstab(两节点同时做)
/dev/vx/dsk/dgname/volname /dev/vx/rdsk/dgname/bolname /global/xxx ufs 2 yes global,logging
#mount /global/xxx
五、 资源配置:
1. 配置nafo
#pnmset
输入nafo组号及改组包含的网卡名称
2.配置资源组
1). Sun Cluster3.0支持两种资源类型:
a.数据资源类型(Data service resource):
oracle、iplanet、netscape、apache、dns、nfs
b.预注册资源类型(Preregistered Resource ):
SUNW.HAStorage、SUNW.LogicalHostname(供failover数据资源使用)、
SUNW.SharedAddress(供scalable数据资源使用)
2). 配置failover 数据资源,以Sun Cluster HA for NFS为例:
a. 添加NFS数据资源包(两个节点机),可用pkgadd命令,也可用scinstall交互界面
b. 建立NFS目录
#mkdir –p /global/nfs/admin/SUNW.nfs
#mkdir –p /global/nfs/data
#chmod 777 /global/nfs/data
c. 编辑NFS参数文件
# vi /global/nfs/admin/SUNW.nfs
share –F nfs –o –rw –d”Home Dirs” /global/nfs/data
d. 注册数据资源(资源必须注册后才能使用)
#scrgadm –a –t SUNW.nfs
#scrgadm –a –t SUNW.HAStorage
e. 建立failover资源组
#scrgadm –a –g nfs-rg –h node1,node2 –y Pathprefix=/global/nfs/admin
f. 往资源组中添加资源
#scrgadm –a –L –g nfs-rg –l clustername-nfs (注:clustername-nfs在两台节点机的/etc/hosts中有相应记录)
#scrgadm –a –j has-res –g nfs-rg –t SUNW.Hastorage –x ServicePaths=/global/nfs –x AffinityOn=True (AffinityOn=True: 应用切换,磁盘存贮也跟随切换)
#scrgadm –a –j nfs-res –g nfs-rg –t SUNW.nfs –y Resource_dependencies=has-res
g. 初始化资源组,是之生效
#scswitch –Z –g nfs-rg
h. 检测cluster状态
#scstat –g
#scswitch –z –h dest-node –g nfs-rg
3) 配置scalable数据资源组,以Sun Cluster Scalable Service for Apache为例
a. 添加Apache数据资源包(两个节点机),可用pkgadd命令,也可用scinstall交互界面
b. 关闭apache自动启动和关闭功能
#mv /etc/rc0.d/K16apache /etc/rc0.d/k16apache
#mv /etc/rc1.d/K16apache /etc/rc1.d/k16apache
#mv /etc/rc2.d/ K16apache /etc/rc2.d/k16apache
#mv /etc/rc3.d/S16apache /etc/rc3.d/s16apache
#mv /etc/rcS.d/ K16apache /etc/rcs.d/k16apache
c. 在两个节点机的/etc/hosts种都加入clustername-web的相应内容
clustername-web IP_address
d. 编辑控制文件,建立相应的服务目录
#cp /etc/apache/httpd.conf-example /etc/apache/httpd.conf
#vi /etc/apache/httpd.conf
Server Name clustername-web (去掉原有的注释)
DocumentRoot “/global/web/htdocs”

scriptAlias /cgi-bin/ “/global/web/cgi-bin”

e. 建立html和cgi目录文件
#mkdir /global/web/htdocs
#mkdir /global/web/cgi-bin
#cp –rp /var/apache/htdocs /global/web
#cp –rp /var/apache/cgi-bin /global/web
f. 注册数据资源(资源必须注册后才能使用)
#scrgadm –a –t SUNW.apache
g. 建立资源组
#scrgadm –a –g sa-rg –h node1,node2
h. 往资源组里添加sclable资源
#scrgadm –a –S –g sa-rg –l clustername-web
#scrgadm –a –g web-rg –y Maximum_primaries=2 –y Desired_primaries=2 –y RG_dependencies=sa-rg
#scrgadm –a –j apache-res –g web-rg –t SUNW.apache –x
Confdir_list=/etc/apache –x Bin_dir=/usr/apache/bin
–y Scalable=TRUE –y Network_resources_used=clustername-web
i. 初始化资源组,是之生效
#scswitch –Z –g sa-rg
#scswitch –Z –g web-rg
j. 检测cluster状态
#scstat –g
k. 调整节点负载,默认为1:1
#scrgadm –c –j web-res –y Load_balance_weights=5@node1,2@node2
六、 Sun Cluster的日常维护和管理:
1. 显示sun cluster 发行版本
#scinstall –pv
2. 显示已配置的资源类型、资源组和资源
#scrgadm –p
3. 检查集群组件状态及配置
#scstat –p
#scconf –p
#scrgadm –pv(v)
4. 关闭集群
#scshutdown –g 0 –y
此命令将每个节点都关闭到OK状态,可用boot命令启动,然后用scstat –n状态件则节点状态。
5.关闭单个节点
#scswitch –s –h node2
#shutdown –g 0 –y
6.将某一节点置为维护状态
#scconf –c –q globaldev=quorumdivice(dx),maintstate
7. 手工修改节点quoroum的投票数
a. ok> boot –x
b. #cd /etc/cluster/ccr
c. #vi infrastructure
cluster.nodes.1.name torrey
cluster.nodes.1.properties.quorum_vote 3
d. #cd /etc/cluster/ccr
e. #/usr/cluster/lib/sc/ccradm –I /etc/cluster/ccr/infrastructure –o
f. #reboot
8. 删资源组和disk group
a. 停资源:scswitch –n –j resourcename
b. 删资源:scrgadm –r –j resourcename
c. 删资源组:scrgadm –r –g resourcegroup
d. 删dg:vxdg destroy dgname
9. 删除 cluster软件
g. ok>boot –x
h. #pkgrm clusterpkgname
i. rm –r /var/cluster /usr/cluster /etc/cluster
j. vi /etc/vfstab,将原来所有的dis参数恢复,重建/global/devices
k. rm /etc/ntp.conf
l. vi /etc/nsswitch.conf,除去cluster选项
m. rm –r /dev/did
n. rm –f /devices/pseudo/did*
o. rm /etc/path_to_inst
p. reboot -- -ra
七、 Sun cluster 3.0与2.2的比较
Sun cluster 3.0
支持8个节点
支持ufs,hsfs,为实现scalable出现了global概念
cluster networking share address
支持scalable,failover模式
于系统核心绑定很紧,只有network和resource group由相关demond启动管理
使用boot –x可以只起系统,不起cluster
支持solaris 8
支持千兆网卡,不支持sci card
以资源组为切换单位,资源类型有app,ip,data
sun cluster2.2
支持4个节点
支持ufs,没有global
logical host address
只支持failover模式
于系统核心绑定不紧,可以先起系统再手工起cluster
支持sci card(100M byte/s)
以逻辑机为切换单位
三、sun cluster 3 的点滴--备忘

   1. PATH 变量包括Sun Cluster 工具目录: /opt/SUNWcluster/bin 和/usr/cluster/bin。可以通过设置$CLUSTER_HOME环境变量为工具目录另指定一个位置。
 如果使用终端集中器,请配置clusters 文件、serialports 文件和nsswitch.conf 文件。这些文件既可以是/etc 文件,也可以是NIS/NIS+ 数据库。有关详细信息,请参阅clusters(4) 和serialports(4)。
2.ccp clustername 启动gui控制台
3.click cconsole. crlogin. ctelnet 启动管理界面
4.scsetup cli的管理界面
5.showrev -p |grep 110648-05
6.scinstall -pv ####显示Sun Cluster 发行版本号以及所有Sun Cluster 软件包的版本信息
7.scrgadm -p #####显示为群集schost 配置的资源类型(RT Name)、资源组(RG Name) 和资源(RS Name)
8.scstat -p ####群集组件状态信息
9.scconf -p ####群集配置,
10.sccheck ####检查配置
11.scshutdown -g0 -y ###关闭整个cluster 到ok 态
12.boot 单系统启动,接着将分配配额
13.scstat -n
###验证引导节点时未发生错误,而且节点现在处于联机状态。scstat(1M) 命令报告节点状态。
-D 列出磁盘设备组的配置
14.scswitch -S -h nodelist ###
-S 从指定的节点中清空所有的设备服务和资源组。
-h nodelist 指定从中切换资源组和设备组的节点。
15.# scswitch -F -D disk-device-group
-F 使磁盘设备组脱机。
-D disk-device-group 指定要脱机的设备组。
16.pnmstat -l 检验该NAFO 组的状态
17.pnmstat -p 查看NAFO情况。
以下为更改 NAFO的网口的步骤:
原来的nafo口为qfe3,更改为ge1,ge0为数据应用口。
cd /etc
mv hostname.qfe3 hostname.ge0 两台都做
scshutdown -y -g0 只做一台,到ok态
boot -x ## cluster 不起 两台都做
pnmset -c nafo0 -o delete 两台都做,删除原来的配置
pnmset -c nafo0 -o create ge0 ge1 两台都做,创建新的配置
pnmset -p 两台都做 察看nafo情况
cd /etc/cluster
vi pnmconfig 将原来的nafo0 qfe3换成nafo0 ge0 ge1
reboot
更换结束。。
#scstat –g 资源组oracle及其所有资源状态
#scstat –D 磁盘资源ipasdg状态
volume状态 #vxdg list
#vxprint –ht –g ipasdg;
#scswitch –Z –g oracle 启动资源组oracle
系统启动后资源组状态仍然为Offline状态,检查/var/adm/messages文件,检查console输出信息。提示在资源组启动过程中backup文件系统需要检查,估计是在mount文件系统backup时发现文件需要做fsck检查处理,在进行处理过程时超时,导致资源组online失败。
手工fsck文件系统backup对应的逻辑卷
移所有资源到节点fs_db2:
#scswitch –S –h fs_db1
手工启动资源组:
#scswitch –Z –g oracle
资源组启动成功,数据库OK。
Usage:
scswitch -z -g resource_grp[,...] -h node[,...] ### -z(set primaries)
scswitch -z -D device_group_name[,...] -h node
scswitch -S -h from_node ### -S(evacuate or switch all)
scswitch -R -h node[,...] -g resource_grp[,...] -R(restart)
scswitch -m -D device_service_name[,...]
scswitch -e | -n [-M] -j resource[,...]
scswitch -u | -o -g resource_grp[,...]
scswitch -c -h node[,...] -j resource[,...] -f flag_name
scswitch -Z [-g resource_grp[,...]]
scswitch -F -g resource_grp[,...] | -D device_group_name[,...]

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/65250/showart_1945904.html

论坛徽章:
0
2 [报告]
发表于 2009-06-04 15:39 |只看该作者
先收了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP