应用程序高可用性

高可用性  时间:2021-03-26  阅读:()
版权所有IBM公司2009商标实现复合应用程序的高可用性第1页,共14实现复合应用程序的高可用性向复合应用程序交付满足不同需求的高可用性的原型MaheshViswanathan资深技术人员IBMSurajSubramanian资深集成架构师IBM2009年2月23日本文描述使用Linux-HA为复合应用程序实现高可用性.
向复合应用程序交付高可用性具有很大的挑战性.
由于复合应用程序由一些不同类型的应用程序组成,每个应用程序都具有不同的可用性需求,所以配置相当复杂.
在本文中,作者描述如何为复合应用程序TivoliMaximo设计和实现一种高可用性原型.
其中的配置脚本展示了如何使用系统化和优先化的故障转移计划,向由相关应用程序组成的异构集群提供高可用性.
在2008年,我们为一家大型在线企业开发了针对我们的CMDB实现(配置管理数据库)TivoliMaximoandTivoliApplicationDependencyDiscoveryManager的高可用性解决方案.
这家企业现在采用了Maximo的一种成熟的CCMDB实现(现在称为TivoliServiceRequestManagerandTivoliAssetManagerforIT),其中包含一个单一的企业级Maximo(CCMDB版本).
我们的目标在于使用多个域CMDB应用程序从不同的企业站点收集信息,并将这些信息聚合到一个企业CMDB实例中.
对这些企业CMDB数据进行过滤并累积到CCMDB实例Maximo中.
Maximo既存储预设策略所描述的企业WISB的理想CMDB状态("应该处于的状态"),还存储CI信息所表示的WIRI的实际状态(实际处于的状态),CI信息收集自企业中部署的成千上万个服务器和应用程序.
一般而言,HA层次结构中的不同功能节点要求不同的HA设计.
例如,网关服务器、普通Windows计算机要求MSCS.
域CMDB应用程序要求HA,但是使用冷备份就足够了.
而Maximo需要24/7可用性,并且Maximo和企业CMDB连接到自己的专用数据库—这些数据库通常是集群的一部分.
但是在本文的原型中,我们主要讨论应用程序的HA可用性,因此我们仅针对应用程序可用性进行设计.
图1给出了我们的设计.
developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第2页,共14图1.
针对MaximoandEnterpriseTivoliApplicationDependencyDiscoveryManager的HA灾难恢复(DR):两个4节点HA集群在本文中,我们描述一种管理高可用性、异构、包含多个应用程序的节点集群的方法.
在高可用性集群中,每个应用程序都具有不同的可用性配置文件,这使我们的解决方案实际上比面向单一应用程序(比如数据库)的简单高可用性解决方案更加复杂.
我们的解决方案将采用一种算法(协议)来适应高可用性集群中应用程序(或节点)的第一次和第二次故障.
这个协议为集群中的每个应用程序节点提供了精确的故障转移顺序.
它考虑了这样的情形:性能不能降低,而且由于运行时冲突,不能在同一计算机上运行多个应用程序.
设计和实现特性包括:1.
尽管集群中包含3个应用程序(EnterpriseCMDB、ITIC和Maximo),但Maximo拥有最高的优先级.
因此,无论哪个应用程序节点失败,Maximo都一定能被客户机使用(客户机将调用MaximoAPI).
2.
我们使用不均衡的节点权重来部署自动恢复功能,这样当一个宕机的服务器恢复之后,应用程序将恢复到该服务器中.
3.
我们的设计规范要求管理集群中的两次故障,但是,即使是在出现了3次故障之后,我们仍将能够设计和实现完整的CCMDB可用性(Maximo).
4.
我们在最初的设计中未考虑quorum服务器,但是我们不得不使用它.
5.
将Linux-HA配置为按照这种针对1、2、3次故障的严格故障转移规则集操作具有一定的挑战性.
6.
我们在灾难恢复(DR)站点(图1中的远程镜像站点)重复这种设计.
所有站点中的故障转移分为自动和手动两种:自动HA、手动DR.
7.
为了优化机器的使用并维护HA,我们在每个站点设计了一个4节点集群:一个节点对应一个应用程序,剩下的一个节点充当故障转移节点.
ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第3页,共14HA架构通常用于单一软件类型,比如数据库或Web服务器.
在我们的示例中,我们将展示如何实现CCMDB等应用程序的高可用性,该实现包含3个独立的软件组件:TivoliApplicationDependencyDiscoveryManager(TADDM):通过发现应用程序依赖关系和配置,为IT服务管理提供可见性.
IBMTivoliIntegrationComposer(ITIC):支持TivoliAssetManagementforIT与资产目录和系统管理工具的快速集成.
Maximo:在一个统一平台上提供对所有资产类型的全面的资产生命周期和维护管理.
安装HALinux-HA安装是一个简单、直观的过程(参见参考资料,获取软件).
确保系统拥有正确的补丁级别,以满足心跳(heartbeat)软件的前提条件.
我们用于演示的Linux-HA的版本为2.
1.
4.
当安装完成时,重启计算机.
必须执行这一步.
为组成集群的所有4台计算机执行清单1中的步骤.
清单1.
安装HA[root@hacluster2tmp]#rpm-ivhperl-TimeDate-1.
16-3_2.
0.
el5.
noarch.
rpmwarning:perl-TimeDate-1.
16-3_2.
0.
el5.
noarch.
rpm:HeaderV3DSAsignature:NOKEY,keyID66534c2bPreparing100%]1:perl-TimeDate100%][root@hacluster2tmp]#rpm-ivhheartbeat-pils-2.
1.
4-2.
1.
i386.
rpmwarning:heartbeat-pils-2.
1.
4-2.
1.
i386.
rpm:HeaderV3DSAsignature:NOKEY,keyID1d326aebPreparing100%]1:heartbeat-pils100%][root@hacluster2tmp]#rpm-ivhheartbeat-stonith-2.
1.
4-2.
1.
i386.
rpmwarning:heartbeat-stonith-2.
1.
4-2.
1.
i386.
rpm:HeaderV3DSAsignature:NOKEY,keyID1d326aebPreparing100%]1:heartbeat-stonith100%][root@hacluster2tmp]#rpm-ivhheartbeat-2.
1.
4-2.
1.
i386.
rpmwarning:heartbeat-2.
1.
4-2.
1.
i386.
rpm:HeaderV3DSAsignature:NOKEY,keyID1d326aebPreparing100%]1:heartbeat100%][root@hacluster2tmp]#配置HA下一步是创建ha.
cf文件.
创建以下文件:/etc/ha.
d/ha.
cf.
ha.
cf文件存储关于此设置涉及到哪些节点的信息.
在分配为DC(designatedcoordinator)的机器上创建ha.
cf.
创建此文件和authkeys文件之后,使用FTP或简单SCP将它们复制到其他机器.
因为4个节点(3个应用程序和一个备用节点)都位于此集群中,我们的ha.
cf文件类似于清单2:清单2.
HA配置文件ha.
cfnodehacluster1.
svl.
ibm.
comhacluster2.
svl.
ibm.
comhacluster3.
svl.
ibm.
comhacluster4.
svl.
ibm.
combcasteth0crmon在清单2中:developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第4页,共14node是一个指令,用于列出此集群中包含的节点.
bcast指令表示节点将通过此接口彼此通信并执行ping操作.
crm指令指定heartbeat是否应该运行一个支持两个或更多节点的集群管理器.
在清单2中,我们键入属于此集群的机器的主机名.
接下来,我们需要向/etc/ha.
d/authkeys添加一个验证密钥.
清单3给出了我们使用的示例:清单3.
示例验证文件authkeys##Authenticationfile.
Mustbemode600###Musthaveexactlyoneauthdirectiveatthefront.
#authsneauthenticationusingthismethod-id##Then,listthemethodandkeythatgowiththatmethod-id##Availablemethods:crcsha1,md5.
Crcdoesn'tneed/wantakey.
##Younormallyonlyhaveoneauthenticationmethod-idlistedinthisfile##Putmorethanonetomakeasmoothtransitionwhenchangingwuth#methodsand/orkeys.
###sha1isbelievedtobethe"best",md5nextbest.
##crcaddsnosecurity,exceptfrompacketcorruption.
#Useonlyonphysicallysecurenetworks.
#auth11sha1haclusteringisfun注意:这个文件的权限必须为0600.
当这些文件创建之后,通过发出命令/etc/init.
d/heartbeatstart启动heartbeat.
在集群中的所有机器上运行清单4中所示的命令:清单4.
启动高可用性服务[root@hacluster1heartbeat]#/etc/init.
d/heartbeatstartStartingHigh-Availabilityservices:[OK][root@hacluster1heartbeat]#如果看到这条消息,则意味着您的Linux-HA安装成功完成.
现在,是时候测试复合应用程序的高可用性了.
添加一个quorum服务器在一个2节点集群中,当一个节点发生故障或网络连接中断,每个节点都会充当主要节点并开始与外界交互.
这是一种不利的竞态条件.
我们需要一个外部仲裁程序来要求其中一个节点暂时停止活动.
如果其中一个机器崩溃,仲裁程序将让该机器暂时停止活动.
这个仲裁程序称为quorum服务器,它可以是集群中的每个节点都可以到达的任何机器.
将这个仲裁程序命名为quorum服务器是因为它运行一个quorum监控程序.
修改ha.
cf,将下面这行代码添加到每个ha.
cf文件:ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第5页,共14清单5.
在ha.
cf中标识quorum服务器clusterourcmdbquorum_serverhacluster4.
svl.
ibm.
comquorum服务器机器不一定要运行heartbeat,但是我们建议安装heartbeat,以便能够访问安装heartbeat时创建的所有二进制文件和目录路径(比如/etc/ha.
d).
在quorum服务器机器上,编辑文件/etc/ha.
d/quorumd.
conf并添加以下代码:清单6.
配置quorum服务器clusterourcmdbversion2_1_4interval1000timeout5000takeover3000giveup2000然后,使用quorumd启动quorum监控程序.
确保它在计算机每次重启时都会启动.
要自动启动quoromd,将其添加到inetd中.
Linux-HA使用一个名为cib.
xml的配置文件,在集群中的所有节点上启动heartbeat时会自动创建该文件.
这个cib.
xml文件存储应用程序配置(指定哪个应用程序拥有更高的优先级,包括针对高可用性的规则).
您可以使用GUI工具(/usr/bin/hb_gui)修改cib.
xml,这是推荐方法,也可以手动修改.
Cib.
xml包含以下信息:配置信息:集群节点信息资源信息资源限制状态信息:哪些节点启动/关闭节点属性哪些资源在何处运行因为cib.
xml受到heartbeat进程的控制,所以应避免在集群运行时修改此文件.
注意:cib.
xml上的权限必须为0600,并且必须归haclient:hacluster所有.
Linux-HA附带了一组基于开放集群框架(OpenClusterFramework,OCF)的资源代理,该框架是用于实现高可用性的标准.
在我们的场景中,因为所有应用程序都是定制的,我们必须为复合应用程序中包含的各个软件组件构建OCF资源代理.
配置heartbeat清单7给出了我们使用的heartbeat版本中的资源配置.
配置文件位于/var/lib/heartbeat/crm/cib.
xml.
基本而言,此文件指定集群的资源以及应该在何处执行这些资源.
developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第6页,共14我们为此场景开发了一个cib.
xml文件,参见参考资料获取链接.
我们为其添加了注释,以使该进程更容易执行.
清单7.
heartbeat版本2中的资源配置/*Namesofthenodesinthecluster*//*Maximonode*//*ITICnode*//*eCMDBnode*//*Sparenode*//*Assignbaseparametersforeachapplication-Maximo*//*Priorityaresetasweightingfactors.
Thisdetermineswhichapplicationwillbeplacedonthesparenodeintheeventofasecondfailure.
Here,Maximo>eCMDB>ITIC.
Notethatthefirstfailurepushesthedownedapplicationontothespare.
Asubsequentfailuredetermineswhethertheinitiallydownedapplicationorthenewlydownedapplicationtakesprecedence.
*//*Assignbaseparametersforeachapplication-ITIC*//*Assignbaseparametersforeachapplication-eCMDB*/ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第7页,共14/*MaximoapplicationshouldnotrunonthenodeassignedtoITIC*//*MaximoapplicationshouldnotrunonthenodeassignedeCMDB*//*eCMDBapplicationshouldnotrunonthenodeassignedtoITIC*//*SparenodeforMaximoshouldpreferrednodefail*//*PreferrednodeforMaximotorun*//*Maximocannotco-existwitheCMDBonthisnode*//*Maximocannotco-existwithITIConthisnode*//*SparenodeforITICshouldpreferrednodefail*//*PreferrednodeforITICtorun*//*ITICcannotco-existwithMaximoonthisnode*//*ITICcannotco-existwitheCMDBonthisnode*//*SparenodeforeCMDBshouldpreferrednodefail*//*PreferrednodeforeCMDBtorun*//*eCMDBcannotco-existwithMaximoonthisnode*//*eCMDBcannotco-existwithITIConthisnode*/测试场景我们在此处使用的示例是一个包含3个应用程序、3个节点的系统,其中包含一个空闲节点.
对于上述算法,我们使用包含4台机器的集群,其中包括Maximo、eCMDB(EnterpriseTADDM服务器的简称)、IC(IntegrationComposer的简称)以及一个被动空闲机器,所有机器都具有相同的硬件智能特性.
为远程站点提供类似的4台机器.
被动空闲机器可以运行任何Maximo、eCMDB或IC应用程序.
我们采用的算法遵循以下逻辑路径:1.
出现故障的第一台机器或第一个应用程序在空闲机器上运行.
如果初始节点恢复正常,这台机器或应用程序将自动故障转移到初始节点.
2.
在出现第二次故障时,空闲机器上的应用程序优先级如下:Maximo,然后是eCMDB,最后是IC.
Maximo是最关键的应用程序,因为客户机应用程序希望能够随时调用它.
3.
在两个站点上遵循相同的优先级:本地和远程站点.
我们只需为3个不同的应用程序提供一个空闲节点.
这些应用程序拥有内置的优先级.
尽管所有3个应用程序都期望拥有高可用性,但是该可用性拥有先后次序,并且所有机器和应用程序都必须遵循这个顺序.
如果我们拥有一个必须全天候可用的应用程序,而其他应用程序没有严格的HA需求,那么我们至少需要一个空闲节点.
如果我们拥有两台具有相同的HA配置文件的机器,那么我们需要两个空闲节点,依此类推.
如果空闲节点上不能同时存在多个应用程序,那么所有指定的条件都为真.
也就是说,将3个应用程序安装在同一台(空闲)机器上不会造成冲突.
图1给出了一个包含3个应用程序、4个节点的集群的示例.
右侧图片是左侧图片的镜像,用于灾难恢复.
这个镜像仅在左侧的所有4台机器都宕机之后才使用.
在下表中,Maximo(=A)、eCMDB(=B)和ITIC(=C)在独立的机器上运行.
我们忽略了机器名称,因为它们无关紧要,每台机器代表在其上运行的应用程序.
这些机器不运行其他任何重要的应用程序,但是指定的应用程序除外.
被动空闲机器(=O)安装了Maximo、eCMDB和ITIC,但是仅支持一个应用程序处于执行模式.
ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第9页,共14记住,在我们的HA设计中,应用程序优先级为Maximo>eCMDB>ITIC,O是指定的协调程序(空闲节点).
表1.
第一次故障出现故障的应用程序第一次故障之后的应用程序配置AA=>O;B;CBA;B=>O;CCA;B;C=>OO无策略图2.
第一次故障表2.
第二次故障(A=O表示在第一次故障之后,A已经在O上运行)出现第一次故障的机器第二次故障之前的配置第二次故障第二次故障之后的配置AA=>O;B;CBA=O;Bunavail;C;CA=O;B;CunavailBA;B=>O;CABexits;A=>O;C;BunavailCA;B=O;CunavailCA;B;C=>OACexits;A=>O;B;CunavailBCexits;A;B=>O;Cunavail对于第二次故障,情形1:如果A出现故障,它将被转移到空闲节点上.
如果接下来ITIC或eCMDB出现故障,那么将不会发生任何事件.
Maximo将一直可在空闲节点上使用.
developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第10页,共14图3.
第二次故障,情形1对于第二次故障,情形2:如果eCMDB位于空闲节点上,那么ITIC随后出现故障时将不会更改现状,但是Maximo将从空闲节点上转储eCMDB.
图4.
第二次故障,情形2对于第二次故障,情形3:如果ITIC位于空闲节点上,那么eCMDB在随后出现故障时将从所在位置转储ITIC.
如果接下来Maximo出现故障,那么它将从空闲节点转储eCMDB.
如果集群中只有空闲节点可用,那么Maximo将是惟一运行的应用程序.
ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第11页,共14图5.
第二次故障,情形3实现小结该实现遵循以下规则:1.
4节点集群中有一个被动空闲节点.
2.
在指定节点上运行3个应用程序.
3.
多个应用程序不能同时处于执行模式(它们是相互排斥的).
4.
当应用程序出现故障时,它将重新启动两次,然后将故障转移到空闲节点.
5.
当节点失败时,应用程序将故障转移到空闲节点.
当应用程序预先指定的节点恢复之后,应用程序将故障转移回该节点上.
6.
应用程序故障转移大约需要45秒.
TADDM需要更长时间.
7.
应用程序根据先到先服务的原则放置在空闲节点上.
8.
始终遵循可用性层次结构:Maximo>TADDM>ITIC.
第二个应用程序/节点故障将确保Maximo始终可用.
如果ITIC或TADDM已位于空闲节点上,它将被Maximo转储.
执行完整的循环测试,以确定实现正确无误.
9.
针对上述行为调整手动生成和测试的配置文件.
灾难恢复远程站点上的规则完全相同,但是没有应用程序处于运行状态.
只会从原始位置复制到公共的外部磁盘.
发生站点故障转移之后,执行流程为:1.
停止所有原始机器(包括数据库).
2.
将VIP与原始机器分离开来.
3.
将控制权(手动)转移到远程站点.
4.
指定远程站点中的网络磁盘作为主磁盘.
5.
使用我们的集群控制脚本启动heartbeat,这将以与原始机器相同的顺序和优先级启动应用程序.
developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第12页,共146.
将应用程序与网络磁盘和数据库同步.
7.
将原始机器的VIP分配给远程网络.
8.
响应客户机调用(与以前一样).
结束语本文描述了使用Linux-HA完成的复合应用程序的HA实现,它基于我们在客户需求方面的丰富经验.
我们的HA任务涉及同一集群中具有不同优先顺序的多个应用程序.
也许为每个应用程序添加一个空闲节点会更简单,但是这种解决方案成本较高.
对于大多数真实的HA应用程序,您必须适应实际存在的经济条件和冗余,它们通常是相互排斥的.
致谢AlanRobertson是我们的顾问和推介人员,他在Linux-HA方面为我们提供了许多指导.
在他的鼓励和慷慨帮助下,我们才得以完成本文.
ibm.
com/developerWorks/cn/developerWorks实现复合应用程序的高可用性第13页,共14参考资料学习您可以参阅本文在developerWorks全球网站上的英文原文.
此站点提供了一个简单且通用的资源配置(本文中的cib.
xml示例的基础).
在这些网络广播和文档中了解关于heartbeat的更多信息,其中甚至包括有用的教程.
让专家向您介绍Linux-HAQuorumAPI以及关于此主题的其他更多信息.
OCF标准为您介绍了(本文曾提及的)资源代理或其他OpenClusterFrameworkAPI,包括更多资源服务,以及节点、分组、锁定服务和外部接口.
"使用简单的5个步骤设置Web服务器集群"(developerWorks,2007年8月)向您展示了如何使用LinuxVirtualServer和Linux-HA.
org的Heartbeat建立和运行Web服务器集群.
安装大型Linux集群,第1部分:简介和硬件配置(developerWorks,从2006年12月开始)描述了Linux中的集群计算,该系列中的第一期介绍了HA和heartbeat软件.
了解IBMTivoli软件的最新信息.
在developerWorksLinux专区寻找为Linux开发人员(包括Linux新手入门)准备的更多参考资料,查阅我们最受欢迎的文章和教程.
在developerWorks上查阅所有Linux技巧和Linux教程.
随时关注developerWorks技术活动和网络广播.
获得产品和技术获取您的Linux-HA软件:CRM目前作为一个独立项目Pacemaker进行维护,Heartbeat2.
1.
4是包含CRM的最新版本.
使用可直接从developerWorks下载获得的IBM试用软件在Linux中构建您的下一个开发项目.
讨论通过博客、论坛、podcasts和空间加入developerWorks社区.
developerWorksibm.
com/developerWorks/cn/实现复合应用程序的高可用性第14页,共14作者简介MaheshViswanathanMaheshViswanathan是IBMGglobalTechnologyServices的一位资深技术人员.
他是ExpressRemoteManagedInfrastructureServices的首席架构师,这是一个用于远程交付基础设施服务的托管服务产品.
Mahesh曾经是T.
J.
WatsonResearchCenter的研究人员.
他的兴趣包括远程服务交付、支持服务的信息系统、复合应用程序的高可用性、汽车上的人机接口、语音识别和合成、音频/视频搜索和检索,以及文档图像分析.
他荣获了伦斯勒理工学院电气、计算机和系统工程专业的哲学博士学位,擅长图像分析.
他撰写了超过30部技术出版物并拥有20种国际专利,他是一名IBMMasterInventor,也是IEEE的高级成员.
SurajSubramanianSurajSubramanian是位于加州圣何塞市HIPODSBankingCenterofExcellence的一位资深集成架构师.
他负责快速原型化和概念证明,向银行和其他IBM客户演示与IBM软件产品的集成.
在这之前,Suraj在IBM的GlobalServices工作了5年,是eBay的客户端IT架构师.
他的兴趣包括关注高可用性和性能的企业集成架构.
他荣获了印度孟买大学电子工程专业的学士学位.
版权所有IBM公司2009(www.
ibm.
com/legal/copytrade.
shtml)商标(www.
ibm.
com/developerworks/cn/ibm/trademarks/)

80VPS:香港服务器月付420元;美国CN2 GIA独服月付650元;香港/日本/韩国/美国多IP站群服务器750元/月

80vps怎么样?80vps最近新上了香港服务器、美国cn2服务器,以及香港/日本/韩国/美国多ip站群服务器。80vps之前推荐的都是VPS主机内容,其实80VPS也有独立服务器业务,分布在中国香港、欧美、韩国、日本、美国等地区,可选CN2或直连优化线路。如80VPS香港独立服务器最低月付420元,美国CN2 GIA独服月付650元起,中国香港、日本、韩国、美国洛杉矶多IP站群服务器750元/月...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

10gbiz:香港/洛杉矶CN2直连线路VPS四折优惠,直连香港/香港/洛杉矶CN2四折

10gbiz怎么样?10gbiz在本站也多次分享过,是一家成立于2020的国人主机商家,主要销售VPS和独立服务器,机房目前有中国香港和美国洛杉矶、硅谷等地,线路都非常不错,香港为三网直连,电信走CN2,洛杉矶线路为三网回程CN2 GIA,10gbiz商家七月连续推出各种优惠活动,除了延续之前的VPS产品4折优惠,目前增加了美国硅谷独立服务器首月半价的活动,有需要的朋友可以看看。10gbiz优惠码...

高可用性为你推荐
空间邮箱哪种邮箱的空间最大美国互联网瘫痪网络中断会对美国军力造成什么影响急救知识纳入考试在中国急救员可以纳入医护人员吗?商标注册流程及费用注册商标的程序及费用?原代码什么是原代码杰景新特萨克斯吉普特500是台湾原产的吗www.baitu.com韩国片爱人.欲望的观看地址杨丽晓博客杨丽晓是怎么 出道的lcoc.top服装英语中double topstitches什么意思朴容熙这个人男的女的,哪国人。叫什么。
国内vps qq空间域名 openv vps.net gitcafe 账号泄露 抢票工具 12306抢票助手 英文站群 web服务器的架设 hdd metalink 爱奇艺会员免费试用 吉林铁通 ca187 万网空间管理 中国linux 华为k3 工信部icp备案查询 域名转入 更多