在吗?为什么我的qq会怎么把手机号变成qq号这样?其他qq一切正常 内存还有一个多g 所有q

页面已拦截
无锡网警提示您:
该网站已被大量用户举报为虚假的刷Q币/刷Q钻网站,可能通过要求购买充值卡的方式来骗取您的财产,或通过诱导运行软件的方式导致您的电脑中病毒。解除限制一般很多时候我们的qq号被盗都是在网吧,进了黑网吧很可能会导致你的qq密码遭到泄漏,你后面在上你的qq有可能会因为发布了非法信息被举报之后被暂时的限制登录,我们可以点击查看原因来按照提示一步步的来完成解除限制。清理病毒如果你是在家里面被盗的话就需要给自己的电脑清理病毒。因为你如果不清楚病毒去修改密码,又很有肯能导致你的密码再次的泄漏。找回密码然后我们可以根据自己的盗号情况来相对应的解决啦。如果你的密码被更改了,肯定密保也同时会被改掉。这个时候我们只能通过找回密码了。我们打开qq登录窗口,在输入密码窗口右边有一个找回密码。点击进入。输入验证码然后我们在输入你要的qq号,在输入验证码。验证密保这里我们会需要验证你的密保,点击验证密保修改qq密码,如果不记得密保可以点击下面的帐号申诉。安装手机令牌进入密保验证页面,这里的密保不记得的话还可以试试安装手机令牌,这个只要你的qq绑定你的手机号的,可以直接发短信了就安装到你的手机。可以一键修改qq密码。这里就不多演示啦!申诉qq如果什么都不记得了,只能通过申诉qq了。申诉之前要跟好友说好辅助你申诉。进入安全中心修改qq密码如果你的qq只是密码遭到泄漏,我们杀完毒之后进入安全中心修改qq密码即可。具体的都是和上面差不多,如果不记得密保就需要申诉。密码修改成功密码修改成功或者是找回之后我们需要进入自己的qq空间,看看说说、分享、日志、相册。然后在看看群空间、微博等能发信息的地方,有没有自己的qq号发布过非法消息。我们需要把这些删除,因为如果这些信息在,如果被举报了,你的qq又会被限制登录的。微信公众号搜索“图老师”或者“tulaoshi_com”加关注,每天最新的美食、健康、育儿、美妆、美容、手工DIY等教程让你一手全掌握。推荐关注!【微信扫描下图可直接关注】
与qq被盗号了怎么办相关的文章
在线密码破解  大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。  在线密码破解和本地密码破解采用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地盗取QQ密码!  怎么盗号 盗qq密码软件 怎么盗qq号 怎么盗取别人的qq密码 怎么盗QQ聊天记录  在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然采用穷举法技术,所以在枚举密钥位 数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。  目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。它的破解操作分四步:第一步,在QQ起始号码和结束号码中填上想要盗取的 QQ号码(此号码必须在线);第二步,在“添加或删除HTTP代理服务器”中输入代理服务器的IP地址和端口号码(如果你嫌自己寻找QQ代理服务器麻烦, 可以使用一些现代的QQ代理公布软件);第三步,点击“添加&测试”按钮,软件先自动检测此服务器是否正常,确定后将它加入代理服务器列表(此软 件可填入多个代理服务器的地址,并且能够自动筛选不可用或者速度慢的服务器);第四步,点击“开始”按钮,开始在线密码破解。登录窗口破解  伪造QQ登录窗口的盗号方法非常简单,这是一种比较另类的木马破解方法(后面对木马破解有专门讲述)。先用盗号软件生成一个伪装的QQ主程序, 它运行后会出现跟腾讯QQ一模一样的登录窗口,只要用户在这个伪登录窗口中登录,输入的QQ号及密码就会被记录下来,并通过电子邮件发送到盗号者指定的油 箱中,在此以一款叫“狐Q”的软件为例,首次运行它时,它会把自身复制到QQ目录中,并把原来的QQ.exe文件改名为QQ.com(这样的更改不会影响 QQ的正常运行)。设置完毕
本地盗号   也就是本地盗号.也就是把一个最简单下载到你周围的网吧(但是网吧不能有还原卡)只要填写好几个简单的表格就成功了.这样的软件很多很多.不过很久就不用这样的软件了,也不知道现在什么样的最好用。不仅可以盗取QQ密码还有各种网络游戏的密码,,大家也是知道的网络很大很大,如果只把活动的范围局限于你的周围,当然不会有什么更好的效果。远程盗号   这也是大家都知道的远程盗号的方法,这种方法不受任何限制,你可以在网上任意发挥你的才能.在这里我给大家两种不同风格的这是一个我把配置的方法告诉大家,首先打开后填写上你的,邮箱不能是随意的,具我了解只有的邮箱才能收到信。没有以上邮的朋友可以立即去申请。申请完之后填写上你的邮箱。:这个我不给大家详细的介绍了。如果你是,你就填写的邮箱你就填写,你找到浏览的按钮,找到你要盗取的目标,找到后点击添加.全部添加完成之后.点击生成生成的就是这个软的服务端了。生成后的服务端怎么用啊?靠!这是谁问的我现在想杀了他。这还要问。害的我还要打字。你首先在你的QQ上查找好你要下手的对象(但是我没叫你们偷他的号,我只是交你技术,知道别人的密码就好.不要盗啊),你可以先和他聊天,等到时机成熟后你可以把你的发到他的邮箱里面给对方看。为了成功的机会大一些我在这里在吃点亏在教你们一些,一般有一些网络知识的人都能识别。不过在这里怎么才能让你成功的机会大一些呢。我们可以把伪装,伪装的方法很多。捆绑是最常见的,把你配置好了的和任意一张照片捆绑到一起,就可以了。不过这种方法还是有漏洞,因为照片的形式还是exe.形式的那怎么办,你可以把捆绑完的照片放到里面,我想这样的伪装可以更完美一些。会制作网页的朋友可以把捆绑到网页上,对方一进你的主页不用点击任何东西就可以种了你的这种方法是最狠毒的。
一、不要轻信别人  不要轻易将你的QQ密码告诉别人,现在,用网页做木马的也不少,不要到一些不太好的站点浏览网页或者下载程序。二、不要轻易打开来历不明的文件  不要打开一些来历不明的文件,就算是好朋友私聊单发,不要轻易点开,可能是木马病毒,又或者是泄露个人信息的病毒之类。三、在网吧要清理个人记录  在网吧等公共场所,上完QQ记得清理你的QQ目录,就在QQ安装目录里,有个文件夹名字是你的号码,把它彻底删除!!!(SHIFT+DELETE键)。如果你的网吧里安装着还原精灵,直接重新启动机子就可以。四、设置复杂的密码  把你的密码设置得复杂些,可别是你的生日啊,或者是什么1234567之类的,那可就是菜鸟啦!一般来说,字母+特殊符号+数字 的一个7位密码,这样的密码很难破解!还有记得可别把QQ和收QQ密码保护的信箱都用一个密码,否则,QQ一失守,这个信箱也就不保了!五、申请QQ密码保护  快去申请QQ密码保护吧! 这是最好的措施! 不要轻易公布接收密码保护的信箱地址,小心被破。如果你有申请密码保护的话那就用密码保护找回来,如果没有申请密码保护的话那就上腾讯网填写申请表,填写QQ号、密码邮箱等等如果答案正确的话一般5分钟内就可以把QQ号找回来了。更多QQ被盗信息:qq被盗号了怎么办
在线密码破解
大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。
在线密码破解和本地密码破解采用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地盗取QQ密码!
在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然采用穷举法技术,所以在枚举密钥位 数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。
目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。它的破解操作分四步:第一步,在QQ起始号码和结束号码中填上想要盗取的 QQ号码(此号码必须在线);第二步,在“添加或删除HTTP代理服务器”中输入代理服务器的IP地址和端口号码(如果你嫌自己寻找QQ代理服务器麻烦, 可以使用一些现代的QQ代理公布软件);第三步,点击“添加&测试”按钮,软件先自动检测此服务器是否正常,确定后将它加入代理服务器列表(此软 件可填入多个代理服务器的地址,并且能够自动筛选不可用或者速度慢的服务器);第四步,点击“开始”按钮,开始在线密码破解……登录窗口破解
伪造QQ登录窗口的盗号方法非常简单,这是一种比较另类的木马破解方法(后面对木马破解有专门讲述)。先用盗号软件生成一个伪装的QQ主程序, 它运行后会出现跟腾讯QQ一模一样的登录窗口,只要用户在这个伪登录窗口中登录,输入的QQ号及密码就会被记录下来,并通过电子邮件发送到盗号者指定的油 箱中,在此以一款叫“狐Q”的软件为例,首次运行它时,它会把自身复制到QQ目录中,并把原来的QQ.exe文件改名为QQ.com(这样的更改不会影响 QQ的正常运行)。设置完毕后,“狐Q”的原程序就会消失,伪装成QQ等待“猎物”上钩……在其软件设置中
一、修改QQ密码  如果你开启了QQ密码保护,就可以通过它快速进入QQ密码找回程序,腾讯会为你的QQ号重设一个随机密码,然后将它发到你在填写资料时预设的安全邮箱中。二、通过QQ密码保护找回  QQ密码保护是一套保障QQ密码安全的机制。通过给你的QQ号填写对应的相关资料,如证件号、安全提示问题、安全邮箱等,给你的QQ号穿一件防弹衣。一旦出现问题,就可以通过QQ密码保护找回QQ密码。三、用手机找回QQ密码  这是找回QQ密码的最新途径。开通QQ会员并将手机号与QQ绑定后,可以通过手机发送相关指令到固定号码,强制性取回你的QQ密码。四、QQ号码申诉  QQ号码申诉是最后一条路,通过所有其它途径无法找回密码时,可以用它。QQ号码申诉就像一场你与盗QQ者的官司,腾讯是审判长。你可以提供所有能证明你是QQ号真正主人的证据,如以前加过哪些好友、最后是在哪里使用的等等。证据真实有效的话,腾讯就会把QQ号从盗号者手中取回来还给你。五、常见的几种状况  状况一:我还记得当时填的密码保护问题和安全邮箱地址。  解决方法:直接去重设密码。简单得很,分分钟搞定。  状况二:我还记得我的密码保护资料,不过我不记得我的安全邮箱了;我的安全邮箱里收不到密码重设邮件  解决方法:1、新设一个安全邮箱,填写当初的证件号码和新旧安全邮箱即可。2、修改全部密码保护资料,把所有资料重设一遍后再重找一次。  状况三:我不记得密码保护问题了  解决方法:不能直接找回QQ密码了,点这里去申诉。是QQ会员的话,就用手机找回。  状况四:我是QQ会员,我没有申请过QQ密码保护  解决方法:用手机找回QQ密码。  状况五:我不是QQ会员,我没有申请过QQ密码保护  解决方法:申诉。去向腾讯列举资料证明你是QQ的真正主人。资料很复杂,尽量填写吧。点这里教你填。另外,填出能说服腾讯的材料有一些技巧,点这里可以看看。申诉完成,不管成功不成功,腾讯都会在客户端和新的安全邮箱里通知你处理结果。  状况六:我是QQ会员  开通了QQ加油站,就可以发指令到一个指定的号码,用手机重设QQ密码。可以进行密码锁定,在解锁前,别人无法修改你的Q
一.有没有密码保护?如果有就直接取回!!二.打腾讯客服电话(估计,一般人不用,免了)三.如果您的密码提示问题等被修改或者您没有申请过密码保护,那么请在服务专区填写申诉表。号码申诉应尽量提供以下资料:1、你使用过的历史密码2、好友qq号码列表(5个)3、最后一次上线时间4、发现密码丢失的时间5、最后一次上线地点6、其他详细证明材料7、留下你的联系方式8、一个安全的qq号(用朋友的就可以)四.如果上述办法还无法取回密码您可以使用以下办法寻求帮助。1)打电话咨询,QQ用户服务热线。2)将详细资料填写好发到QQ用户支持信箱。需要提供要素如下:有效证件复印件,被盗QQ号码,用户真实姓名,身份证号码,历史密码(包括以前所有用过的密码),好友列表(五个好友QQ号码),最后一次上线时间,发现被盗时间,用户的联系电话, 用户的等等相关资料,当然是越详细越好
学生盗卖Q号200万个  据了解,近期陕西西安查破了一起涉嫌盗卖QQ号的网络犯罪案件,而经询问得知该案例主人翁为一大一学生,而这个大一学生盗卖QQ号达200万个,令人吃惊。而随着学生盗卖QQ号达200万个浮出的背后,竟是一条黑色产业链。  在这个个人信息频频被泄露的社会,如今再看到学生盗卖QQ号达200万个这样的事,确实引人担忧。据西安警方表示,某学院的大一学生经常在QQ空间发布钓鱼链接,从而盗取QQ账号,最后进行售卖。从2016年4月到同年12月,短短不到8个月的时间里,该学生盗卖QQ号达200万个。  据该学生透露,一般收购一个QQ号只需一两毛,卖出去的时候也加一两毛。QQ号的价格还是要根据其等级、有没有QQ币、游戏里有没有装备等质量问题而定,整体来看价格介于一毛到三块钱不等。  看到学生盗卖QQ号达200万个,不少人就想起以前总听到有人在买卖QQ号,但QQ号能卖钱吗?其实腾讯QQ官方一直以来都是禁止私下交易QQ号码的,因为有时候大家会把QQ号跟其它软件进行绑定,除了会泄露个人信息外,还可能会被骗取财物,所以大家还是不要想着通过非法途径来生财了。盗qq号:在线密码破解  大家知道QQ可以利用代理服务器登录,这是一种保护措施。它不仅可以隐藏用户的真实IP地址,以避免遭受网络攻击,还可以加快登录速度,保证登录的稳定性。  在线密码破解和本地密码破解采用的技术方法类似,都是穷举法,只不过前者完全脱离了本地用户使用的QQ。它通过对登录代理服务器进行扫描,只要想盗的QQ号码在线,就可利用在线盗号工具实现远程TCP/IP的追捕,从而神不知鬼不觉地盗取QQ密码!  怎么盗号 盗qq密码软件 怎么盗qq号 怎么盗取别人的qq密码 怎么盗QQ聊天记录  在线破解改变了本地破解那种被动的破解方式,只要是在线的QQ号码都可以破解,适用范围较广。但是由于它仍然采用穷举法技术,所以在枚举密钥位 数长度以及类型时,校验时间很长,破解效率不高。同样,这种方法还受到电脑速度、网速等诸多因素的影响,因此比前面的本地破解更麻烦。  目前功能比较强大的一款QQ密码在线破解软件叫QQExplorer。
选择“解除盗号保护”  在盗号保护状态页面,选择“解除盗号保护”获取验证码  输入获取的验证码后,点击“下一步”设置新密码  根据提示设置新的密码,设置后点击“完成”即可温馨提示  1、若陌陌号同时绑定了手机号和邮箱,可选择通过短信验证码、语音验证及邮箱验证的方式解除;  2、若手机无法使用,可直接进入帐号申诉找回操作  3、新密码设置完成后,需要重新登录使用。
  QQ被盗当然郁闷了!QQ里有那么多朋友的联系方式,还有那么多重要的个人和客户资料!所以不要等到QQ号被盗,再去想为什么丢了号码了。 毫不夸张地说,几乎100%的丢号都是用户自己不小心把号码透露给了所谓的“QQ黑客”。为什么这么说呢?事实上,尽管“黑客”们盗窃QQ号的花样每隔一段时间就有翻新,但万变不离其宗,所有的手段综合起来也不过“偷看”、“木马”、“记录键盘”和“欺诈信息”四种而已。只要我们认清这些盗号陷阱,养成良好的上网习惯,就可以从根本上避免QQ号码被盗。 盗号陷阱之一:偷看 这是最原始而又最容易被忽视的密码盗窃方式,多见于网吧等公共场所。QQ用户在输入用户名和密码时,站在旁边的别有用心的人就有可能把你按过的键尽数记录下来。 对付这种盗号的方法很简单,也算是给广大QQ用户提个醒:在公共场合登录QQ时,千万要注意周围有没有人注视自己。另外,给自己设置一个超长的QQ密码也是个防偷窥的办法——像“1212”这种密码很容易被人记住,但如果是一个由字母和数字甚至其他符号组成的15位密码,能过目不忘的人恐怕也不多吧。 盗号陷阱之二:木马 倘若有人通过邮件或QQ发给你诸如“我的照片。exe”这样的文件,那你可千万要小心了,这很可能就是传说中窃取QQ密码的“特洛伊木马”。这种程序在运行后,就会把你的QQ号码和密码自动发送到木马程序指定的邮箱中,不仅如此,你的QQ还会自动将类似的木马程序发送给其他好友,让你的电脑也成为真正的 “害群之马”。 所以,不管是和你多熟的QQ好友,如果对方没有任何交待或者很突然地发了一个文件或提供一个链接,一定要多嘴问几句哦,最好确认是不是你的好友,这样才能放心接收或者点开链接。 要防止这种盗号行为,安装杀毒软件并定期更新病毒库是基础中的基础。此外,坚决不运行来历不明的可执行文件,不打开任何奇怪的页面也是必要的。QQ从 2005 Beta3版本开始,已经增加了“安全中心”功能,会自动过滤任何可疑的文件或页面,不过它并不过滤压缩文件,因此如果有人发送ZIP或RAR等格式的压缩文件给你,并要求你解压缩后运行,你也一定要三思而行。
及时查杀盗号木马保障QQ用户的在线生活安全。木马是一个技术术语, 是指利用计算机程序漏洞侵入的一种恶意病毒程序。“盗号木马”是木马的一种分支类型,专指用于盗窃QQ帐号和盗窃网游帐号等含有虚拟财产服务帐号的木马程序。盗号木马有什么危害?因为国内QQ和大量网络游戏服务的流行,用户帐号和虚拟财产被很多不法分子盯上。不法分子制作大量针对QQ和网络游戏的盗号木马,并形成数量众多的专业盗号团伙从事盗号木马制作、入侵用户计算机、盗取用户帐号和密码以及偷取用户虚拟财产的黑色盗窃产业链, 这对QQ用户和网游用户造成很大的安全威胁。盗号木马有什么形式?盗号木马根据其攻击目的不同,可以分为以下几种形式:1) 窃取用户帐号密码:这种木马通过进程注入、键盘钩子、读取内存等手段窃取用户帐号和密码,进而窃取用户帐号内的虚拟财产;2) 发送垃圾广告:这种木马一旦侵入用户计算机,会自动向所有好友发送垃圾广告消息,引诱好友上当。例如“QQ尾巴”;3) 进行网络诈骗:这种木马通过伪装成QQ系统消息、QQ弹窗或篡改系统Hosts文件中URL指向的方式迷惑用户,使QQ用户误以为中奖或收到礼品落入诈骗分子的圈套;4) 种植其他木马:这种木马通过破坏计算机操作系统,为种植其他盗号木马病毒铺设道路。这些盗号木马都有躲避主流安全软件查杀的能力。会在哪些位置查杀盗号木马?不同盗号木马的潜伏和攻击用户方式不同,QQ主要会在以下几个位置查杀盗号木马:1) 检查内存模块中是否有木马;2) 检查注册表中开机启动项对应的程序有无被木马替换;3) 检查几种常用文件类型的默认打开程序有无被木马替换;4) 检查 IE加载的启动项有无木马(如BHO);5) 检查部分指定Windows的系统文件是否被木马替换;6) 检查“开始”菜单“启动”项里指向的程序文件是否被木马替换或挂接;7) 检查用户桌面上,含有“QQ”或“腾讯”字样的快捷方式指向的文件有无被木马替换;8) 检查磁盘分区根目录的autorun文件有无被木马替换或挂接;9) 检查系统hosts文件中有无腾讯域名被劫持。
图老师百科谁会盗qq号帮我盗一下专题提供谁会盗qq号帮我盗一下等最新信息,希望对您有所帮助,关注图老师微信获取更多谁会盗qq号帮我盗一下信息。谁会盗qq号帮我盗一下百科专题更新时间: 03:55:19运维进行时 - 互联网架构 DevOps 自动化&智能化运维 大数据 云计算 开源技术
本人于2009年12月迁移至独立BLOG。1、欢迎光临运维进行时,希望认识更多志向相同的朋友!2、本站部分资源来源于网络,如有侵权请及时与我联系!3、强烈建议使用Firefox、Opera、Safari及IE7以上的浏览器访问,以获得最佳浏览质量!4、请勿发表与中华人民共和国法律、法规相抵触的言论,谢谢合作!5、本人发布的文章与评论内容仅代表本人观点。
分页: 1/30
[ 显示模式:
, Via 本站原创
引用地址:
注意: 该地址仅在今日23:59:59之前有效
&&&&&&&&日,在深圳圣淘沙酒店,运维帮、云技术、Linux中国三大社区联合主办主办了运维世界大会OpsWorld,演讲内容全程无广告,只谈技术,受到了广大观众的一直好评。本文根据刘天斯老师演讲内容整理而成。&&&&&&&&我分享的主题是“DevOps持续改进之道——布道”。我刚才已经做了简单的介绍,这里再罗嗦一下,我叫刘天斯,现在是在腾讯互动娱乐负责大数据的运营。在互联网行业已经从业了13年,也算是一个老鸟,之前在天涯,工作了6年多。PPT右侧是我的两本著作,第二本是关于Docker的,如果大家关注Docker,可以在网上购买这本书来看看。我个人最近关注的方向有自动化运维、云计算、大数据、Docker&&DevOps等。&&&&&&&&这是我今天分享的大纲,总共分四大块,第一块是跟大家简单介绍一下我的DevOps观,第二点我会介绍我们布道平台在持续集成与交付这块是怎么做的。第三点会介绍布道在线服务运营能力。最后给大家做一个总结。&&&&&&&&可能大部分人都认为DevOps无非是基于文化+技术这两个点在企业里面落地,这是大部分人之前的思维,在2015年底举行的全球DevOps峰会上,Gartner把DevOps做了进一步的划分,在文化和技术后面又细化出了过程和人。DevOps并非目标,但它可帮助您实现目标,企业的目标是更快地交付价值,DevOps是辅助我们完成这样一个目标的手段。&&&&&&&&DevOps产生的价值,我比较认同IBM给出的解释,总共有三点,第一,它认为这个会增强客户的体验。这是比较容易理解的,第二点是提高创新能力,这个不好理解,创新和它有什么关系呢?它的说法是这样的,通过DevOps去实践,通过精益的方法论去减少我们的浪费、返工,将我们现有的价值及精力投入到更有价值的事情,创新是其中的一个非常重要的点。第三个就是更快的实现价值。&&&&&&&&DevOps应该是永无止境的,它是一个持续改进的过程,它没有终点,它的目的是对影响交付质量的对象进行持续的改进,包括我们的技术、流程、团队,甚至企业的文化等。&&&&&&&&那我们怎么去检验我们的软件交付过程是不是高效的?我个人总结了一个“短”五个“快”。短就是我们交付软件的开发周期要短,快就是排错、解决问题、测试、部署、反馈这个闭环一定要快,不知道大家认不认可这样的观点,一会儿我们可以讨论一下。&&&&&&&&Gartner在去年底提出DevOps的模型,它分为四个点,除了文化、技术,它还延伸出了过程和人这两个角色。我们首先从【技术】来看,这里面加亮的部分是重点要关注的,一个是【基础设施即代码】,第二个是【一键安装程序构建,测试、部署】,第三个是【监控一切】,第四个是【连续监控】。在【过程】里面,我认为应该关注的是【持续集成】、【测序】、【交付】这几个方面,另外还要关注到【自动化的构建】,包括【自动化发布】。我觉得【失败总结】这一点是比较重要的,当我们过程失败之后,必须要知道失败在哪里,要进行总结。另外一个是一切都要工具化,一切都要版本化。除了代码以外,我们的脚本或者是配置文件都要通过版本化进行管理。在文化这部分,我认为比较重要的就是协作的文化,还有持续的改进,还有学习的文化,这三个都不难理解,但是我认为,这里面是不是还遗漏了一点?我觉得少了信息的共享、透明,我认为这是非常关键。为什么这个很重要?在我们内部定期都会组织相关的讨论会,去讨论我们项目中碰到的问题以及风险,这些都是需要关注的,另外一点就是IBM提出的一个概念,运维要“左移”,意思是运维要在开发的生命周期阶段提前介入。这样做有什么好处呢?好处是有助于运维的问题提前在开发阶段提前暴露,我认为这是非常关键的一点。&&&&&&&&下面简单介绍一下我们服务的背景,我们为谁服务,服务什么样的平台。大家看一下我们的规模,当前的数据量每天入库7600亿条日志,大概80T,占公司总存储的26%。&&&&&&&&这是我们的服务精细化的场景,这个背景是怎么来的?因为我们已经具备了海量的游戏数据,我们也在思考,怎么通过数据去驱动我们做精细化的运营。这也是我们目前不断在思考的。DataMore是我们思考出来的一个解决方案,它目前包括三个层次,第一个是大数据H5应用,比如说我们经常看到朋友圈大家分享的自己玩游戏的对局信息,这些数据都是由我们这边提供的。第二个是场景化的标签服务,我们会针对不同玩家打标签,打完标签就通过我们的精细化触达平台,针对性的做一些触达和营销活动。第三个是应用产品,比如说我们的游戏助手、官网,甚至是游戏里面的个人中心,大家会看到自己在游戏中的状态、成长轨迹、对战信息等,这些都可以看到,这就是游戏业务典型的一个服务化的场景。&&&&&&&&下面再介绍一下我们的数据服务的架构,这个其实也没有太多的技术含量,基本上都是业界主流的能力,包括最左侧的游戏的数据源,它有两类,一类是游戏内的,一类是游戏外的。平台组件有三大块,一是数据接入,数据接入包括实时传输、离线传输,第二个是数据处理,包括实时计算引擎、离线引擎,第三个是数据储存,包括KV存储、DB存储、位图索引、HDFS等。我们的服务引擎这一块包括数据分析引擎、数据接口中心、运营规则引擎、用户触达中心,业务应用就是报表统计、数据分析、触达运营,总体来讲就是包括这样三块:数据采集、存储计算、应用落地。&&&&&&&&这是我们的DataMore体系的技术架构,整个架构层次也比较简单,最上层是STGW,这是腾讯非常强大的一个负载均衡平台,再下面是二级代理。逻辑层我们现在有GoServer&&PHP Server。实时数据层用的都是业界主流数据库存储技术,比如TRedis、Hbase、Postgresql等。最低层是数据计算层,包括实时计算引擎、离线计算引擎。当前整个服务的PV大概是6.35亿,日发布变更15次,单次发布时间是10秒,也就是一个容器起启的时间。&&&&&&&&下面介绍一下今天的主角“布道”。布道是我们数据服务全流程解决方案,采用了DevOps的思想实现软件的快速迭代、快速试错,最终提升软件交付的质量和达到持续改进的目的。它有几个特点,第一个是基于腾讯蓝鲸PaaS平台快速构建。蓝鲸本身就是一个PaaS平台,我们基于蓝鲸之上构建服务层的SaaS,本身布道就是基于最上层的SaaS服务。第二个是建立在DevOps的思想实践。我们这个实践思路来源于我刚才分享的Gartner发布的DevOps模型。各关键节点间之间的联系都是我们参考的样本。第三是面向运维、开发、测试、项目PM。第四个是具备持续集成、交付、部署等快速迭代的能力。第五是具备服务质量跟踪、用户舆情、持续反馈能力。&&&&&&&&这是布道的能力体系,大家可以看一下,实际上包括两大块,一个是持续集成交付,另外一个是在线运营。其中服务质量和持续改进是贯穿整个服务生命周期。&&&&&&&&这是布道服务层的架构,刚才提到了这一块,第一块持续集成&交付是采用业界主流的架构,且比较通用,我就不详细再讲了。我们的在线运营是基于HECD的架构,实现Docker的发现注册与发现,最上层就是我们的接入层,比较简单高效,因为没有太多其它逻辑关联耦合的节点。这里的TDocker是部门内部基于Docker构建的容器服务解决方案。&&&&&&&&以DevOps形成的运营服务闭环,它的内涵及核心就是实现持续改进。首先通过我们的CICD的快速通道,实现软件平台的快速迭代,在质量管理方面,我们通过监控、安全、故障自愈、BUG修复等方式进行质量管理。在用户反馈方面,我们建立一个通道,会收集并响应用户的反馈,包括来源于客服和对外网舆情的采集,会将这些信息反馈给开发人员,开发人员收到反馈之后,会在功能或者bug这一块做功能修复,最终就会形成一个持续改进的闭环,而且是一个良性的闭环。&&&&&&&&再简单介绍一下我们持续集成&交付的架构,刚才已经有提到,这里就简单说一下里面的几点细节。首先采用Docker架构具有一些优势,它可以保持跨环境一致性,天然易移植性,还有易于版本控制。然后CI&CD在流程方面做到编译并构建版本镜像,推送镜像仓库,触发交付作业并快速实现预览。&&&&&&&&以上介绍的是行业的主流做法,各家的方案都是大同小异的,我们在这个过程中加入了一些独特的东西,一个是代码扫描的工具coverity,它能够发现比较深层次代码逻辑问题,比如内存泄露、溢出、数组越界、未初始化等等,且目前支持的语言也比较多。&&&&&&&&另外一个是通过引入外网的流量,帮助我们实现压测,甚至做到一定BUG定位,它能达到百分之百的仿真的效果,具体的细节大家简单看一下PPT,整个步骤也非常简单,不是很复杂,它的特点是可以达到真实的模拟测试验证,有助于提前发现问题,有效降低发布风险。&&&&&&&&这是一个案例,开发人员提交他的版本,然后进行预发布,在预发布里面有预览校验软件功能,也可引入外部的流量来进行预览,出现BUG会这个过程中被发现。我们在实践过程中碰到几点问题,在这里也跟大家一起分享。第一点是在容器中做源码的编译合不合理,不知道大家是怎么做的,我们给的结论是不合理。每个项目它用的第三方包或者功能组件是不一样的,可能A项目用的是A、B、C组件,B项目用的是1、2、3组件,不同的组件你在编译的时候去部署它的编译环境,这样会使我们的容器越来越臃肿,所以我们把这个环境迁移到另外一种角色(jenkinsslave),让它做源码的编译,编译完了就打包成镜像,保证镜像中没有太多无用的数据文件。第二点是容器性能的监控最优方案。我们使用Docker的时候有没发现一个问题?在容器中无论我们执行free、top、uptime、vmstat等命令,看到的都是主宿机的性能信息,原因是由于Docker的隔离性做得不够彻底导致。我们可以通过LXCFS这个组件帮助我们增强Docker的隔离性,它可以提供一个虚拟的PROC文件系统,另外也提供了容器自身的Cgroup的目录树,跟容器中的PORC目录是一一对应的。如何使用?我们Dockerrun的时候,通过“-v”参数,实现容器proc文件与Lxcfsproc的映射,效果是容器中看到的只是容器本身的内存、CPU等信息。比如说我们看CPU核数,看到的只是分配好的0、1、2、4的核数。第三点是容器在CI阶段的网络选择。这里只是给个建议,我们生产环境Tdocker使用的网络模型SRIOV,是通过硬件虚拟网卡的方式实现,然后Docker再通过IPlink做映射,但是我们在CI阶段,它是一个隔离的开发专区,它跟普通的IDC是不一样的,由于硬性相对比较老久,硬件虚拟化兼容性差,因此我们使用了Docker Macvlan方案,原理是通过创建网卡子接口与容器接口之间做映射,缺点是要求Linux Kernel 3.10.0及Docker>=1.12.0的环境。&&&&&&&&这是我们的线上服务。项目上线的时候,每个PM都有一个习惯,都会最大化去的申请资源,在极端情况下还会远远超过他的预估值,这个时候怎么办?只需要评估扩容的需求量为多少,什么样的机型配置,提交Tdocker在线扩容就可以了,后面的事情就交给布道去处理。&&&&&&&&在告警方面我也分享一些思路,在腾讯已经有一套非常成熟的告警系统,我们在这里只是提供一些跟我们业务逻辑相关的策略,我们的思路首先是统一日志规范,每个人的开发水平和习惯都不一样,我们给他们统一一个规范,这个规范叫Tlog,另外引入基础+特性这两个指标。看到的这个DEMO,它通过XML的模式描述日志的结构。特性是跟业务绑定相关的,我这里有一些服务,这个服务我发了一些金币,发到某个区间可能出现问题了,我们就需要开发人员把这个发放的数值打印出来,我们好做一个曲线的跟踪。采集完之后就会进入一个日志采集环节,这个架构也很简单,就是LVS+Keepalive,采集完之后,这里就分两条线,一个是实时,一个是离线的。我们采用的是蓝鲸的实时数据平台,能够实现特性指标多维度的配置。&&&&&&&&这是蓝鲸的智能监控的界面。它是实时流,内部用的是Storm做实时分析,然后支持定义灵活的配置,有支持SQL的函数,比如支持某个字段的累加、求和,这个频率可以控制为10分钟、15分钟。&&&&&&&&下面是我们安全这一块做的东西,首先是安全防御,在腾讯内部,安全这一块已经做得非常强悍,为什么我还讲安全呢?因为在公司层面做的安全防护更多是通用性或者基础类的防护,WAF更侧重在业务逻辑层,它的架构非常简单,通过布道做一些规则的下发到WAF,例如XSS、CC、UA、URI的规则等等,然后开启日志追踪,通过传输、实时分析防护日志,最终做到防护报告实时展示。&&&&&&&&规则校验步骤与大家简单介绍一下,目前采用Nginx+LUA结合的方式,它的防护流程是在检查端口及域名是否匹配规则,匹配就下发规则,然后检查黑白IP名单,后面再开启CC防护,以及开启userAgent检查,最后是开启URI检查注入、XSS、SSRF等。&&&&&&&&下面是舆情监控这一块,我们在这里特点就是关键词的实时监控、定时报送推送。从下面这个图可以看到,某一款游戏在某此活动期间的口碑展示情况,有多少是正面的,有多少是负面的报告。&&&&&&&&最后做一个总结,在线运营的运营经验,第一个是资源评估,我们要定一个标准,根据实际服务场景来做出评估,而不是拍脑袋做。这个评估有一个公式:设计数量=(PV/86400)×2/单机承载最大QPS/0.8。&&&&&&&&第二个是灰度+热力度对蓝绿发布。蓝绿发布的目的是让我们的用户没有感知,我们做蓝绿发布,操作的步骤很多,一旦人工接触多了,就容易出现误操作。我们采用的是热更新方式,原理是服务A进程收到关闭信号量之后,启动B进程来接收已经创建的连接或新连接,当A进程连接完全释放之后就会自动关闭,整个过程用户无感知。灰度实际就是放量检验这个效果及功能,如中间没有出现问题,只需两步就完成变更。&&&&&&&&第三个是修复了Supervisor一个bug。Supervisor没办法对进程fork子进程进行管理,所以我们修复了这个bug,如大家碰到同样的问题可以私下找我,我会给大家具体的解决方法。&&&&&&&&最后是一个数据流向监控的实现思路。首先简单介绍一下为什么要做这个流向监控。数据的流向监控在业界目前没有较好的方案,当我们的数据链、处理链、服务链拉得很长的时候,如何感知当数据源头有发生变更或异常,影响到我们的最终服务,这是非常难度的,而且它跟我们的业务特点关系非常大。同样我们逆向推导也是成立的,我发现玩家的某个对局数据不对,本来是胜局结果变成了负局,怎么确认数据是从哪个节点负责计算或存储的?这个非常有挑战性,这需要我们的数据服务能力一步一步做叠加,需要不断做扩展与关联,才能够达到某一个层次的服务水平。目前我们做的还没那么完美。首先我们要具备元数据管理,还有元信息的管理,这是非常重要的两层。第二个是要有数据字典管理,我们给数据表名称、字段说明,结构性的定义及标签。第三个就是血缘关系,能够定义到任务之间的关系。第四个是数据服务的注册,这是比较核心的一点,怎么注册,我们怎么知道你用了哪个数据源呢?这很关键,我们内部开发了一个通用组件,比如说你要引用后端的数据层,你必须使用这个组件接入,这样关系才能够建立起来,所以应用配置文件也是单独生成的。而最上游我们会提供一个数据流向查询,我们用了A数据,查下来就知道它在这个过程经过了哪些关键点,有可能是存储、计算、分析、接口等。&&&&&&&&最后快速做一个总结,这是我们的持续服务的体系,在持续运营状态下,我们具备质量监控、舆情监控、容量管理、安全管理、故障治愈、故障修复等能力,同时收集用户服务体验、产品、BUG、新功能、吐槽点,将这些信息反馈给产品人员、开发人员和运维人员。再通过持续集成交付、发布变更管理,做到快速迭代及部署,最后就形成了良性的、持续改进的闭环。 1、【提问】:你刚才提到了资源分配的公式,你们那个公式是怎么总结出来的?那个公式的基础是以什么样的结果作为标准的?【刘天斯】:这个公式也不是我们发明的,也是借鉴了很多前辈思路,我们只是在这个基础上做改进,结合我们自己的业务场景,包括我们服务是什么样的类型,因为服务类型不同,它的要求不一样,配置不一样,它的生命周期也不一样,它能够反映出来的效果和能力、访问量都不一样,比如服务到底是CPU型还是内存或IO型,完全不一样。这就带来一个问题,我们怎么定一个标准?我们目前聚焦在接入这块的逻辑层,供参考的是8核、4G内存,硬盘100到150G的配置。2、【提问】:我是来自创维公司负责运维的。今天讲的是DevOps,DevOps要快速迭代到什么样的程度才行?像您现在做的一个平台一天发布15次,我不知道你在前面需要进行多长时间的准备?比如说线上的实时导流导多长时间是合适的?这个度我们一直拿捏不准,能帮我们解答一下,提点好的建议吗?【刘天斯】:在互联网行业我们大部分都是采用敏捷开发的模式,这样会产生技术的债务,这是必然的。你是传统行业吗?【提问】:我们前身是传统行业,现在我们是互联网电视,相当于做电视上的服务,我们是非常快捷的,每天都发布,每天改bug,不停地迭代,而且需求也特别多,开发也忙不过来,我们运维也感觉到准备不足。【刘天斯】:互联网这种快速发展的模式,势必会带来很多技术的债务,我觉得这是正常的。我们的互联网发展很快,必须要先要有一个雏形产品出来,然后再不断地迭代,这是大部分互联网公司或者是刚刚转型公司采用的模式,这种模式出现的问题我认为是很正常的问题,包括在腾讯也一样有这样的问题,他评估不到我在某个阶段要花多长时间去检验我们是否够快、是否高效。我们在布道这个环节下一步就是预发布,预发布追求的并不是快,而是能不能在临门一脚之前发现一些致命的问题,因此,可以在持续交付阶段追求快,而不应在预发布阶段。
引用地址:
注意: 该地址仅在今日23:59:59之前有效
导言最近比较关注大数据、云计算、Docker、DevOps等几个方向,一会也简单围绕这几点跟大家做个交流。聊运维人生这个主题有点大,^_^就先从个人怎么入运维这行说起吧。人在天涯2003年毕业后的第一份工作是当php、java程序员,人力紧张时还要兼顾美工设计的工作。工作中一次偶然的机会看到导师在黑压压的界面中敲入不同指令,第一感觉非常震撼,很COOL,联想到《黑客帝国》电影中的画面,与之前接触到的Windows系统完全不一样,后来才晓得是Redhat9(红帽9)。此时还是一名普通码农。2005年的10月,进入第二个东家-天涯社区,人生的第一个转折点在此酝酿。由于赶上了公司快速发展的阶段,接触到了很多开源技术,包括LVS、Squid、Haproxy、MongoDB、Mysql、Cfengine等等,也不断应用在生产环境,取得了非常不错的效果,重点业务的高可用持续保持在99.99%。如何高效运营?随之新的问题也陆续出现,包括如何更好整合各类开源组件,发挥其最大效能,另一个是如何高效运营。不可否认,具有开发背景的运维人员有着先天性的优势,可以在不同角色之间进行思考,视野被放大。事实上在天涯6年就做一件事,即主导并实施天涯社区从Windows技术路线往开源架构改造,驱动这个事情有两原因,一个是运营管理成本、另一个是正版化给企业带来的高额成本(视窗+Sqlserver License)。改造最大难点是没有可参考及借签的对象,文档资料不全。完全依靠原有人员的技术储备,不断摸索。经过“试错 -> 失败 -> 回滚 -> 再尝试”的过程,个人能力在此期间也得到了一次升华。对Linux环境下的C++做了深入的研究学习,具备这样的知识对开源软件的架构、分层理解及故障定位有很大的帮助。改造后的天涯新架构在当时比较具有代表性且通用。架构图如下:2010年天涯IT管理架构天涯期间的开源项目取之开源,同样也回馈开源,以下为个人在天涯期间的开源项目,其中开源后的“LVS管理平台”第一时间被国内某证卷公司采用,当时感觉很有成就感。比较有意思的“服务器机柜模拟图平台”项目,不少公司在此基础上陆续出升级版本,平台截图如下:可以通过下面网址,访问在线版本http://blog.liuts.com/idc/后面也将内部的运维管理平台原型做了开源,同时也在《Python自动化运维实践》书籍中做了介绍,下面为OMServer平台截图源码托管在:http://github.com/yorkoliu/pyauto小经验:05年开始写博客,当时目的比较单纯,即当笔记本来用,后来慢慢演变成交流沟通的平台,收到很多同行的评论、邮件,也认识了很多业界大牛,很多好友到现在还保持联系。坚持写博客是一件非常困难的事。但在荣获了2010年度《十大杰出IT博客》的同时,也让我领悟到每写一篇博客其实就是个人对工作、生活的一次总结。不但可以锻炼你的语言组织、逻辑思维、表达等能力,还可以给你增加人气,提升个人影响力 ^_^。腾讯CDN运维之旅2011年加盟腾讯,主要负责了腾讯静态、下载类的CDN运维,截止当前已有400+加速节点(包括静态内容平台、游戏下载平台、UGC加速平台、流媒体平台、动态加速平台等),总带宽突破10Tb,覆盖了腾讯QQ、微信、QQ空间、腾讯视频等业务。流量调度主要通过GSLB来实现,部分业务基于httpDNS来实现。腾讯自建CDN除了强大的资源部署外,软实力方面做得非常不错,比如:协议栈优化TCP传输、DiskTank解决小文件读写瓶颈与碎片、链路实时调整等,其中链路实时调整依赖全网拓扑的实时测速的数据作为依据,调整事件是通过调用公司的GSLB接口进行刷新。调度示意图如下:What happened?运维期间碰到最头疼的问题还是小运营商的域名、内容劫持,表现形式为TTL、目标指向、内容劫持等几个方面。Why?:运营这样做的初衷是什么?减少运营商LDNS设备的性能负载;减少运营商跨网结算成本;嵌入捆绑广告营销策略等。How?:解决的一些思路,发现问题:主动:遍历域名在所有运营商LDNS的解析结果,与公司的威权GSLB记录做比较,存在异常的解析可以立马被定位;被动:产品投拆、网友论坛反馈等渠道。目前还没有彻底解决问题的方案,原因是站在运营商的角度,适当的劫持是合理的,不过可以通过商务去推动解决(局部),关于内容劫持比较好的解决方案就是上HTTPS。腾讯数据运营大舞台2013 年至今负责腾讯游戏大数据运营体系的建设,支撑百余款游戏的数据接入、传输、ETL分析、大数据基础平台运维等工作,确保日7000亿条(50T)日志流水传输,以及日均10万次计算任务调度质量。在IT基础服务方面,利用Docker技术及DevOps理念,对游戏数据应用实施持续交付流程、服务弹性调度的落地,以及开发团队与运维团队融合制度的定制。数据运营简介当前腾讯游戏数据传输、存储规模:游戏大数据服务架构图:其中存储与计算都采用公司级的数据服务平台-TDW(基于Hadoop+Hive构建),传输采用自研的TDBank平台,类似于开源Flume+Kafka的技术方案。数据采集采用自研的Tglog方案,更轻量、传输效率更高,支持UDP及TCP版本,两个特点:耦和度低、标准开放接口、接入成本低;统一化数据运营标准协议XML、数据本地化容灾。Tglog简介:也简单介绍下Tglog日志格式的定义吧,分两部分,一为日志描述,二为实体日志。下图为日志格式描述文件(XML格式):下图为采集原始日志格式(表名|字段值1|字段值2|… …):支撑数据应用-iData(腾讯智能化游戏数据分析平台),提供了游戏生命周期管理,且每个环节都结合了数据挖掘算法,做到精准玩家触达,精细化运营的目的。运维支撑难点:如何保障海量游戏日志的采集、传输质量达到99.999% 的SLA标准?需要从几个维度入手,包括元数据管理、数据地图、数据字典、血缘关系、数据对账、安全审计等。同时要确保与各类数据变更的强联动,感兴趣今后可以展开来讨论哈。二级数据分析集群我们采用Flume+Spark,调度使用Mesos来实现,同时也结合kubernetes来实现长服务组件的调度,有兴趣今后可展开讨论。我的DevOps观Why DevOps?DevOps是开发者和运维之间的高度协同与融合,这个过程贯穿整个软件开发生命周期,从业务规划到创建、交付再到反馈。需要注意一点是,不仅仅包括是开发和运维团队,真正的 DevOps 方法需要业务部门、测试人员、企业高管、合作伙伴和供应商等配合完成。主流观点为什么要DevOps,国内认同度比较高的几个观点,更多可搜索老王分享过的一些文章。改善团队协作;帮助控管风险、成本、减少浪费;提升软件品质;提高软件迭代速度。个人观点个人更趋向于IBM的诠释,即增强客户体验、提高创新能力、更快实现价值。建立一种机制,从所交付软件应用的所有利益相关方快速获取反馈,利益相关方包括客户、业务部门、用户、供应商、合作伙伴等等;目标是减少浪费和返工,并将资源转移给价值更高的活动;将软件快速、高效和可靠地交付于生产的文化、实践和自动化,快速达成目标,实现价值。How?怎么去做DevOps?调整考核和激励机制;绑定开发、测试、运维,共同输出价值;全面自动化,减少人工干预;开展培训和组织开发活动;制定新体系结构标准。持续集成、交付、部署是一个非常好的切入点,DevOps全景图:So What is it?Devops就是:CALMS - Culture(文化)Automation(自动化)Lean (Lean[精益]理论,其思想源于消除浪费)Measurement(量化)包括监控、指标、分析Sharing(分享)补充概念很多人会混淆持续交付(Continuous Delivery)、持续部署(Continuous Deployment)两个概念。简单说明下,持续交付并不是指软件每一个改动都要尽快的部署到产品环境中,它指的是任何的修改都已证明可以在任何时候实施部署,而持续部署是将所有通过了自动化测试的改动都自动的部署到产品环境里。DEVOPS最终目标及原则方向:运维要成为一等公民;让开发人员完成一切;谁构建,谁运行。经验点:前期的沟通铺垫很重要,一定要了解公司内部利益相关方,包括开发负责人、运维主管、项目主管、产品负责人等的诉求及关注点,尽可能共同捆绑目标及输出价值,不同角色区别只在于分工。其次是让大老板了解DevOps的收益,且要得到老板的支持,因为DevOps落地是一项长期工作,不可能在短期内看到收益。量化的指标一定要清晰,且直观易懂,包括业务监控平台、分析报告,同时需要提供至少一种产品或用户反馈的途径,可以是产品官网、在线客服,这对提升平台的品质,直接影响产品口碑。这里直接使用了公司现有的非常完善的基础组件及渠道。持续集成、交付、部署,我们使用了SVN+Jenkins+Docker+应用商店(镜像)。第一期自动化部署我们采用了HECD架构实现,第二期计划是与蓝鲸平台打通,通过APP形式来实现从集成至部署的封环,很大程度提高了软件迭代的速度及频率,对提升软件品质及运维服务水平至关重要。此项工作一定要做好,这也是让相关利益方切身感受变化的关键一环。小知识什么是HECD架构:构建一个高可用及自动发现的Docker基础架构-HECDhttp://blog.liuts.com/post/242/从业经验最后再简单分享个人在运维领域从业的两个小经验:1、一步一个脚印,切忌一步到位。关于运维自动化这件事情,几乎所有的IT企业都在做,看似是一件非常好的事情,忽略了前提条件,往往付出更大的代价及运营成本。之前所提到的前提条件便是运维体系“标准化”、“流程化”、“规范化”的建设,覆盖企业中资源、版本、业务发布、监控、事件管理等环节。有了这些作为基础铺垫,运维自动化的建设才会很顺利实施,达成预期。自动化程度的高低很大程度是随公司所处不同发展阶段,不断去演变而来,不要想着去复制BAT的架构,一步到位是一个很大的误区。2、运筹帷幄,主动耦合。对业务的生命周期进行管理,是运维扮演的角色。一个产品在规划之初运维人员须第一时间介入参与,根据产品特点,提供业务平台前期架构设计、资源评估等数据。当产品进入开发阶段,须与开发人员保持密切沟通与互动,提供业务接入、缓存、存储、监控、安全等方面规范,以便在编码阶段更好磨合与对接,避免上线后反复做不必要的版本迭代,也使得开发出来的产品具备更高的可运维性。待业务上线后,务必定期同步相关运营数据给产品与开发人员侧,为后续优化、改进的工作提供数据支持,这也恰恰能体现运维人员的专业性及团队合作意识。一个感悟运维体系中各个环节的工作犹如散落在地上的珠子,每个珠子分别代表事件、资源、监控、安全、自动化、日常工作等。看似是七零八落的,我们需要利用“流程”这条线将所有的珠子串起来。珠子的前后顺序及间隔由“标准规范”来控制。这样就形成了一条完整的链子,是一个有机的整体,最后会促使运维工作开展得井井有条。这条链子扣在三个点子上,就是“质量”、“效率”、“成本”。如何保持竞争力?很喜欢乔希·维茨金在《学习之道》书中一句名言:追求卓越的关键在于,要坚持充满活力,长期的学习过程,不再满足于原地踏步、平平庸庸。作为一名优秀的运维工程师,应该将学习成果与日常工作相结合,独立及深入思考发现的问题,善于发现不同问题之间的联系,并把它们升华为方法论,最后再做总结与传承。我的感悟:不断学习才是保持竞争力的唯一途径,不断思考和总结会成为你潜意识的行为;我的行动:坚持每天1~2小时的学习时间,从未停止。那么问题来了:如学习的动力不源于兴趣或好奇心怎么办?这里跟大家分享我与团队小伙伴探讨的一个观点:首先应该静下心好好思考,自己5、10年后想过什么样的生活,可以预见的状态是上有老下有小、背着沉重的房贷、车贷。如此时再去与一个毕业生竞争同一工作岗位,必然会丧失了所有的优势与竞争力,被行业所淘汰只是时间问题。因此,想过衣食无忧生活,在职业发展过程中处于不败之地,那么,从现在开始就应该怀着空怀心态,不断打怪升级,使自己变得更加强大。引用萧帮主一分享主题:“危机前的自我拯救”,没有这个勇气或行动是否考虑该转行了?如何挖掘专利?再聊聊运维人员如何写专利,在很多人眼里,写专利是一件非常复杂且很难做到的事情,甚至会认为这是开发人员更擅长的领域。其实写专利并不像大家想象的那么遥远,只要是一个可以实现的方法或思路就能写成专利。比如运维平台当中的一个功能点、一个快速安全扫描的方法、一项容灾传输的技术、自动化测试案例思路、一种有效服务监控的手段等。这些点子都可以写成一个发明专利。当然,创新及新颖性非常重要,可以先对比现有的技术实现,突出该发明的优势及亮点,就可以开始写交底书了。如真的没有一点头绪,大家也可以参考个人写过的一些专利,访问中国专利局网,检索发明人:“刘天斯”http://www.pss-system.gov.cn/sipopublicsearch/search/searchHome-searchIndex.shtml 一则小广告^_^:在个人著作《Python自动化运维:技术与最佳实践》中也分享一些运维自动化的实现方法与实践案例,供大家参考。另一著作《Docker深入详解》预计8月上市,敬请关注!谢谢大家的聆听。Q&AQ1:自行研发tglog对于海量日志传输是否主要走的udp协议?如果是走的udp协议,怎么去解决一些数据包传输中数据乱序以及数据反序列化问题,或者做了哪些协议层面的优化?A: 是的,主要走的是UDP协议。tglog同时也是一套数据日志的规范,约束开发人员打日志的标准。目前未碰到数据乱序以及数据反序列化问题,以前面临一个比较大的问题是丢包情况,尤其在流量高峰期时段更为明显。后面在内核、IO优化得到缓解,但无法规避,所以我们对比较重要的日志采用TCP传输。比如玩家消费流水。Q2:规范化、标准化遇到最大问题是什么?我们遇到就是无法行政干涉开发如何写代码?有什么好的方式去引导规范?尤其是开发有很繁重的开发任务.A: 这已经不是运维层面推动的事情,必须升级到运维及开发的上层领导,开发任务繁重不是理由,上线后出问题一样得不偿失,提前抛出风险,让开发人员认真做好上线前的评估。Q3:Docker化应用,是否面临胖容器还是瘦容器问题,即每个容器单进程还是多进程,你们这块是如何使用的?A: 这块没有统一的标准,看实际业务场景来决定,我们遵循一个原则是:最大化解耦。另外一个需要考虑的点:是否为原子调度单元。
, Via 本站原创
引用地址:
注意: 该地址仅在今日23:59:59之前有效
&&&&&&&&在运营系统中经常用到异步方式来处理我们的任务,比如将业务上线流程串成任务再写入队列,通过后台作业节点去调度执行。比较典型的案例为腾讯的蓝鲸、织云、云智慧等平台。本译文结合Django+Celery+Redis实现一个定期从Flickr 获取图片并展示的简单案例,方便大家理解实现异步对列任务的过程。&&&&&&&&刚接触django的时候,我经历过的最让人沮丧的事情是需要定期运行一段代码。我写了一个需要每天上午12点执行一个动作的不错的函数。很简单是不是?错了。事实证明,这对我来说是一个巨大的困难点,因为,那时我使用Cpane类型的虚拟主机管理系统,它能专门提供一个很友好,很方便的图形用户界面来设置cron作业。&&&&&& 经过反复研究,我发现了一个很好的解决方案 - Celery,一个用于在后台运行任务的强大的异步作业队列。但是,这也导致了其它的问题,因为我无法找到一系列简单的指令将celery集成到Django项目中。&&&&&& 当然,我最终还是设法成功搞定了它 - 这正是本文将介绍的内容:如何将celery集成到一个Django项目,创建周期性任务。&&&&&& 该项目利用Python3.4,Django的1.8.2,celery3.1.18和Redis3.0.2.一、概述&&&&&& 由于大篇幅的文字,为了您的方便,请参阅下表中的每一步的简要信息,并获取相关的代码。步骤&&&&&&概要&&&&&&&&&& Git标签样板&&&&&&样板下载&&&&&&&&&&建立&&&&&&集成Celery和Django&&&&&&Celery任务&&&&添加基本的Celery任务&&&&周期性任务&&&&添加周期性任务&&&&&&&&本地运行&&&&本地运行我们的应用程序&&&&远程运行&&&&远程运行我们的应用程序&&&&二、什么是Celery&&&&&& “Celery是一个异步任务队列/基于分布式消息传递的作业队列。它侧重于实时操作,但对调度的支持也很好。”本文,我们将重点讲解周期性执行任务的调度特点。&&&&&& 为什么这一点有用呢?&&&&&&o回想一下你不得不在将来运行某一特定任务的经历。也许你需要每隔一小时访问一个API。或者,也许你需要在这一天结束时发送一批电子邮件。不论任务大小,Celery都可以使得调度周期性任务变的很容易。&&&&&&o你永远不希望终端用户等待那些不必要的页面加载或动作执行完成。如果你的应用程序工作流的一部分是一个需要很长时间的程序,当资源可用时,你就可以使用Celery在后台执行这段程序,从而使你的应用程序可以继续响应客户端的请求。这样可以使任务在应用程序的环境之外运行。三、构建项目&&&&&& 在深入了解Celery之前,先从Github库中获取开始项目。确保激活一个虚拟的环境,安装必要的软件,并运行迁移。然后启动服务器,通过你的浏览器导航到http://localhost:8000/。你应当能看到‘恭喜你的第一个Django页面’。完成后,关闭服务器。&&&&&& 接下来,我们开始安装celery。
$ pip install celery==3.1.18
$ pip freeze > requirements.txt
&&&&&& 现在,我们通过简单的三步将celery集成到django项目中。步骤一:创建celery.py在“picha“目录下,创建celery.py,代码如下:
from __future__ import absolute_import
from celery import Celery
from django.conf import settings
# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'picha.settings')
app = Celery('picha')
# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
@app.task(bind=True)
def debug_task(self):
&&&&print('Request: {0!r}'.format(self.request))
&&&&&& 请注意代码中的注释。步骤二:引入celery应用为了确保在django启动时加载了celery应用,在settings.py旁边新建__init__.py,并添加以下代码到__init__.py中。
from __future__ import absolute_import
# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app
完成以上步骤后,你的项目目录应该是这样的:
├── manage.py
├── picha
│&& ├── __init__.py
│&& ├── celery.py
│&& ├── settings.py
│&& ├── urls.py
│&& └── wsgi.py
└── requirements.txt
步骤三:安装 Redis作为Celery的“中间件”&&&&Celery使用中间件在django项目与celery监控者之间传递消息。在本教程中,我们使用redis作为消息中间代理。首先,从官方下载页面或通过brew(BREW安装Redis)安装Redis,然后打开你的终端上,在一个新的终端窗口,启动服务器:
$ redis-server
你可以通过在终端中输入如下命令测试Redis是否正常工作。
$ redis-cli ping
&&&&&& Redis应该回复PONG - 试试吧!&&&&&& 一旦Redis正常启动了,把下面的代码添加到你的settings.py文件中:
# CELERY STUFF
BROKER_URL = 'redis://localhost:6379'
CELERY_RESULT_BACKEND = 'redis://localhost:6379'
CELERY_ACCEPT_CONTENT = ['application/json']
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_TIMEZONE = 'Africa/Nairobi'
&&&&&& 你还需要添加Redis的作为Django项目的依赖:
$ pip install redis==2.10.3
$ pip freeze > requirements.txt
&&&&&& 就是这样了!你现在应该能够在Django中使用Celery。有关设置Celery与Django的更多信息,请查看官方Celery文档。在继续下面步骤之前,让我们进行一些完整性检查,以确保一切都是正常的。测试Celery worker已准备好接收任务:
$ celery -A picha worker -l info
[ 14:07:07,398: INFO/MainProcess] Connected to redis://localhost:6379//
[ 14:07:07,410: INFO/MainProcess] mingle: searching for neighbors
[ 14:07:08,419: INFO/MainProcess] mingle: all alone
&&&&&& 使用CTRL-C杀死该段程序。现在,测试Celery任务调度程序是否已经准备好:
$ celery -A picha beat -l info
[ 14:08:23,054: INFO/MainProcess] beat: Starting...
&&&&&& 在上述完成时再次终止该进程。1、Celery任务&&&&&& Celery利用celery调用的常规Python函数作为任务。&&&&&& 例如,让我们把这个基本函数变为celery的任务:
def add(x, y):
&&&&return x + y
&&&&&& 首先,添加一个装饰器。
from celery.decorators import task
@task(name="sum_two_numbers")
def add(x, y):
&&&&return x + y
&&&&&& 然后你可以通过以下方式利用celery异步运行该任务:
add.delay(7, 8)
&&&&&& 很简单,对不对?所以,这对于解决类似你要加载一个网页,而不需要用户等待一些后台程序的完成这些类型的任务来说是非常完美的。&&&&&&让我们来看一个例子...让我们再回到Django项目的版本3,它包括一个接受来自用户的反馈的应用程序,人们形象地称之为反馈:
├── feedback
│&& ├── __init__.py
│&& ├── admin.py
│&& ├── emails.py
│&& ├── forms.py
│&& ├── models.py
│&& ├── tests.py
│&& └── views.py
├── manage.py
├── picha
│&& ├── __init__.py
│&& ├── celery.py
│&& ├── settings.py
│&& ├── urls.py
│&& └── wsgi.py
├── requirements.txt
└── templates
&&&&├── base.html
&&&&└── feedback
&&&&&&&&├── contact.html
&&&&&&&&└── email
&&&&&&&&&&&&├── feedback_email_body.txt
&&&&&&&&&&&&└── feedback_email_subject.txt
&&&&&& 安装新的必要软件,启动应用程序,并导航到http://localhost:8000/feedback/。你应该看到如下结果:让我们连接celery任务。2、添加任务&&&&&& 基本上,用户提交反馈表后,我们希望让他继续以他舒服的方式往下进行,而我们在后台进行处理反馈,发送电子邮件等等。要做到这一点,首先添加一个叫tasks.py的文件到“feedback”目录:
from celery.decorators import task
from celery.utils.log import get_task_logger
from feedback.emails import send_feedback_email
logger = get_task_logger(__name__)
@task(name="send_feedback_email_task")
def send_feedback_email_task(email, message):
&&&&"""sends an email when feedback form is filled successfully"""
&&&&logger.info("Sent feedback email")
&&&&return send_feedback_email(email, message)
&&&&&& 然后按照如下内容更新forms.py:
from django import forms
from feedback.tasks import send_feedback_email_task
class FeedbackForm(forms.Form):
&&&&email = forms.EmailField(label="Email Address")
&&&&message = forms.CharField(
&&&&&&&&label="Message", widget=forms.Textarea(attrs={'rows': 5}))
&&&&honeypot = forms.CharField(widget=forms.HiddenInput(), required=False)
&&&&def send_email(self):
&&&&&&&&# try to trick spammers by checking whether the honeypot field is
&&&&&&&&# not super complicated/effective but it works
&&&&&&&&if self.cleaned_data['honeypot']:
&&&&&&&&&&&&return False
&&&&&&&&send_feedback_email_task.delay(
&&&&&&&&&&&&self.cleaned_data['email'], self.cleaned_data['message'])
&&&&&& 大体上,send_feedback_email_task.delay(email, message)的函数过程,并发送反馈电子邮件等都是在用户继续使用该网站的同时作为后台进程运行。注:在views.py中的success_url被设置为将用户重定向到/ 目录,这个目录还不存在。我们会在下一节设置这个终点启动。3、周期任务&&&&&& 通常情况下,你经常需要安排一个任务在特定的时间运行 - 例如,一个web scraper 可能需要每天都运行。这样的任务,被称为周期性任务,很容易建立利用celery启动。&&&&&& celery使用“celery beat”来安排定期任务。celery beat定期运行任务,然后由celery worker执行任务。例如,下面的任务计划每15分钟运行一次:
from celery.task.schedules import crontab
from celery.decorators import periodic_task
@periodic_task(run_every=(crontab(minute='*/15')), name="some_task", ignore_result=True)
def some_task():
&&&&# do something
&&&&&& 让我们通过往Django项目中添加功能来看一个更强大的例子。回到Django项目版本4,它包括另一个新的应用程序,叫做photos,这个应用程序使用 Flickr API获取新照片用来显示在网站:
├── feedback
│&& ├── __init__.py
│&& ├── admin.py
│&& ├── emails.py
│&& ├── forms.py
│&& ├── models.py
│&& ├── tasks.py
│&& ├── tests.py
│&& └── views.py
├── manage.py
├── photos
│&& ├── __init__.py
│&& ├── admin.py
│&& ├── models.py
│&& ├── settings.py
│&& ├── tests.py
│&& ├── utils.py
│&& └── views.py
├── picha
│&& ├── __init__.py
│&& ├── celery.py
│&& ├── settings.py
│&& ├── urls.py
│&& └── wsgi.py
├── requirements.txt
└── templates
&&&&├── base.html
&&&&├── feedback
&&&&│&& ├── contact.html
&&&&│&& └── email
&&&&│&&&&&& ├── feedback_email_body.txt
&&&&│&&&&&& └── feedback_email_subject.txt
&&&&└── photos
&&&&&&&&└── photo_list.html
&&&&&& 安装新的必要软件,运行迁移,然后启动服务器,以确保一切都是好的。重新测试反馈表。这次,它应该重定向好了。&&&&&& 下一步是什么?&&&&&& 既然我们需要周期性的调用Flickr API,以获取更多的照片添加到我们的网站,我们可以添加一个celery任务。4、添加任务往photos应用中添加一个tasks.py。
from celery.task.schedules import crontab
from celery.decorators import periodic_task
from celery.utils.log import get_task_logger
from photos.utils import save_latest_flickr_image
logger = get_task_logger(__name__)
@periodic_task(
&&&&run_every=(crontab(minute='*/15')),
&&&&name="task_save_latest_flickr_image",
&&&&ignore_result=True
def task_save_latest_flickr_image():
&&&&Saves latest image from Flickr
&&&&save_latest_flickr_image()
&&&&logger.info("Saved image from Flickr")
&&&&&& 在这里,我们通过在一个task中包装这个函数,来实现每15分钟运行一次save_latest_flickr_image()函数。该@periodic_task装饰器抽象出代码来运行celery任务,使得tasks.py干净,易于阅读!5、本地运行&&&&&& 准备开始运行了?&&&&&& 在Django应用程序和Redis运行的前提下,打开两个新的终端窗口/标签。在每一个新的窗口中,导航到你的项目目录,激活你的虚拟环境,然后运行下面的命令(每个窗口一个):
$ celery -A picha worker -l info
$ celery -A picha beat -l info
&&&&&& 当你访问http://127.0.0.1:8000/ 网址的时候,你现在应该能看到一个图片。我们的应用程序每15分钟从Flickr 获取一张图片。通过photos/tasks.py查看代码。点击“Feedback”按钮发送一些反馈意见:&&&&&& 以上是通过celery任务运行的。更多的请查看feedback/tasks.py。&&&&&& 就这样,你成功的启动并运行了 Picha项目!&&&&&& 当你本地开发Django项目时,这是一个很好的测试,但是当你需要部署到生产环境- 就像 DigitalOcean时,就不那么合适了。为此,建议你通过使用Supervisor在后台作为一个守护进程运行celery worker和调度器。6、远程运行&&&&&& 安装很简单。从版本库中获取版本5(如果你还没有的话)。然后,SSH到远程服务器,并运行:
$ sudo apt-get install supervisor
&&&&&& 然后,通过在远程服务器上“/etc/supervisor/conf.d/” 目录下添加配置文件来告知Supervisor celery的workers。在我们的例子中,我们需要两个这样的配置文件 - 一个用于Celery worker,一个是Celery scheduler。在本地,在项目的根目录下创建一个“supervisor”的文件夹,然后添加下面的文件。Celery Worker: picha_celery.conf
; ==================================
;&&celery worker supervisor example
; ==================================
; the name of your supervisord program
[program:pichacelery]
; Set full path to celery program if using virtualenv
command=/home/mosh/.virtualenvs/picha/bin/celery worker -A picha --loglevel=INFO
; The directory to your Django project
directory=/home/mosh/sites/picha
; If supervisord is run as the root user, switch users to this UNIX user account
; before doing any processing.
; Supervisor will start as many instances of this program as named by numprocs
numprocs=1
; Put process stdout output in this file
stdout_logfile=/var/log/celery/picha_worker.log
; Put process stderr output in this file
stderr_logfile=/var/log/celery/picha_worker.log
; If true, this program will start automatically when supervisord is started
autostart=true
; May be one of false, unexpected, or true. If false, the process will never
; be autorestarted. If unexpected, the process will be restart when the program
; exits with an exit code that is not one of the exit codes associated with this
; process’ configuration (see exitcodes). If true, the process will be
; unconditionally restarted when it exits, without regard to its exit code.
autorestart=true
; The total number of seconds which the program needs to stay running after
; a startup to consider the start successful.
startsecs=10
; Need to wait for currently executing tasks to finish at shutdown.
; Increase this if you have very long running tasks.
stopwaitsecs = 600
; When resorting to send SIGKILL to the program to terminate it
; send SIGKILL to its whole process group instead,
; taking care of its children as well.
killasgroup=true
; if your broker is supervised, set its priority higher
; so it starts first
priority=998
Celery Scheduler: picha_celerybeat.conf
; ================================
;&&celery beat supervisor example
; ================================
; the name of your supervisord program
[program:pichacelerybeat]
; Set full path to celery program if using virtualenv
command=/home/mosh/.virtualenvs/picha/bin/celerybeat -A picha --loglevel=INFO
; The directory to your Django project
directory=/home/mosh/sites/picha
; If supervisord is run as the root user, switch users to this UNIX user account
; before doing any processing.
; Supervisor will start as many instances of this program as named by numprocs
numprocs=1
; Put process stdout output in this file
stdout_logfile=/var/log/celery/picha_beat.log
; Put process stderr output in this file
stderr_logfile=/var/log/celery/picha_beat.log
; If true, this program will start automatically when supervisord is started
autostart=true
; May be one of false, unexpected, or true. If false, the process will never
; be autorestarted. If unexpected, the process will be restart when the program
; exits with an exit code that is not one of the exit codes associated with this
; process’ configuration (see exitcodes). If true, the process will be
; unconditionally restarted when it exits, without regard to its exit code.
autorestart=true
; The total number of seconds which the program needs to stay running after
; a startup to consider the start successful.
startsecs=10
; if your broker is supervised, set its priority higher
; so it starts first
priority=999
&&&&&& 注:确保更新这些文件的路径,以匹配你的远程服务器的文件系统。基本上,这些supervisor 配置文件告诉supervisord如何运行并管理我们的'programs'(因为它们是由supervisord调用)。&&&&&& 在上面的例子中,我们已经创建了两个名为“pichacelery”和“pichacelerybeat”的supervisord程序。现在,只需将这些文件拷贝到远程服务器的/etc/supervisor/conf.d/目录下。&&&&&& 我们还需要在远程服务器上创建上面脚本中提到的日志文件:
$ touch /var/log/celery/picha_worker.log
$ touch /var/log/celery/picha_beat.log
&&&&&& 最后,运行以下命令,使 Supervisor 知道它所管理的程序的存在 - 例如,pichacelery和pichacelerybeat:
$ sudo supervisorctl reread
$ sudo supervisorctl update
&&&&&& 运行以下命令停止,启动,和/或检查pichacelery程序的状态:
$ sudo supervisorctl stop pichacelery
$ sudo supervisorctl start pichacelery
$ sudo supervisorctl status pichacelery
&&&&&& 你可以通过阅读官方文档获取Supervisor的更多信息。7、最后提示&&&&&& 1. 千万不要传递Django模型对象到celery任务。为了避免模型对象在传递给celery任务之前已经改变了,传递celery的主键给celery。然后,在运行之前使用主键从数据库中获取对象。&&&&&& 2. 默认celery调度会在本地创建一些文件存储它的调度表。这些文件是“celerybeat-schedule.db”和“celerybeat.pid”。如果你在使用版本控制系统,比如Git(你应该使用!),请忽略这个文件,不要将它们添加到你的代码库中,因为它们是为本地运行的进程服务的。8、下一步&&&&&& 以上就是将celery集成到一个django项目的基本介绍。想要更多?1. 深入研究官方celery用户指南,以了解更多信息。2. 创建一个Fabfile来设置Supervisor和配置文件。确保添加命令到reread和 update Supervisor。3. 从repo中获取这个项目,并打开一个Pull 请求来添加一个新的celery任务。编码快乐!原文:
, Via 本站原创
引用地址:
注意: 该地址仅在今日23:59:59之前有效
一、前言&&&&&&&&Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度、均衡容灾、服务注册、动态扩缩容等功能套件,目前最新版本为0.6.2。本文介绍如何基于Centos7.0构建Kubernetes平台,在正式介绍之前,大家有必要先理解Kubernetes几个核心概念及其承担的功能。以下为Kubernetes的架构设计图:1. Pods&&&&&&&&在Kubernetes系统中,调度的最小颗粒不是单纯的容器,而是抽象成一个Pod,Pod是一个可以被创建、销毁、调度、管理的最小的部署单元。比如一个或一组容器。2. Replication Controllers&&&&&&&&Replication Controller是Kubernetes系统中最有用的功能,实现复制多个Pod副本,往往一个应用需要多个Pod来支撑,并且可以保证其复制的副本数,即使副本所调度分配的主宿机出现异常,通过Replication Controller可以保证在其它主宿机启用同等数量的Pod。Replication Controller可以通过repcon模板来创建多个Pod副本,同样也可以直接复制已存在Pod,需要通过Label selector来关联。3、Services&&&&&&&&Services是Kubernetes最外围的单元,通过虚拟一个访问IP及服务端口,可以访问我们定义好的Pod资源,目前的版本是通过iptables的nat转发来实现,转发的目标端口为Kube_proxy生成的随机端口,目前只提供GOOGLE云上的访问调度,如GCE。如果与我们自建的平台进行整合?请关注下篇《kubernetes与HECD架构的整合》文章。4、Labels&&&&&&&&Labels是用于区分Pod、Service、Replication Controller的key/value键值对,仅使用在Pod、Service、 Replication Controller之间的关系识别,但对这些单元本身进行操作时得使用name标签。5、Proxy&&&&&&&&Proxy不但解决了同一主宿机相同服务端口冲突的问题,还提供了Service转发服务端口对外提供服务的能力,Proxy后端使用了随机、轮循负载均衡算法。&&&&&&&&说说个人一点看法,目前Kubernetes 保持一周一小版本、一个月一大版本的节奏,迭代速度极快,同时也带来了不同版本操作方法的差异,另外官网文档更新速度相对滞后及欠缺,给初学者带来一定挑战。在上游接入层官方侧重点还放在GCE(Google Compute Engine)的对接优化,针对个人私有云还未推出一套可行的接入解决方案。在v0.5版本中才引用service代理转发的机制,且是通过iptables来实现,在高并发下性能令人担忧。但作者依然看好Kubernetes未来的发展,至少目前还未看到另外一个成体系、具备良好生态圈的平台,相信在V1.0时就会具备生产环境的服务支撑能力。一、环境部署1、平台版本说明&&&&1)Centos7.0 OS&&&&2)Kubernetes V0.6.2&&&&3)etcd version 0.4.6&&&&4)Docker version 1.3.22、平台环境说明3、环境安装&&&&1)系统初始化工作(所有主机)&&&&系统安装-选择[最小化安装]&&&&引用&&&&# yum -y install wget ntpdate bind-utils&&&&# wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/epel-release-7-2.noarch.rpm&&&&# yum update&&&&&&&&CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙(熟悉度更高,非必须)。&&&&1.1、关闭firewall:&&&&引用&&&&# systemctl stop firewalld.service #停止firewall&&&&# systemctl disable firewalld.service #禁止firewall开机启动&&&&&&&&1.2、安装iptables防火墙&&&&引用&&&&# yum install iptables-services #安装&&&&# systemctl start iptables.service #最后重启防火墙使配置生效&&&&# systemctl enable iptables.service #设置防火墙开机启动&&&&&&&&2)安装Etcd(192.168.1.10主机)&&&&引用&&&&# mkdir -p /home/install && cd /home/install&&&&&&# wget https://github.com/coreos/etcd/releases/download/v0.4.6/etcd-v0.4.6-linux-amd64.tar.gz&&&&&&# tar -zxvf etcd-v0.4.6-linux-amd64.tar.gz&&&&&&# cd etcd-v0.4.6-linux-amd64&&&&&&# cp etcd* /bin/&&&&&&# /bin/etcd -version&&&&&&etcd version 0.4.6&&&&&&&&&&启动服务etcd服务,如有提供第三方管理需求,另需在启动参数中添加“-cors='*'”参数。&&&&引用&&&&# mkdir /data/etcd&&&&&&# /bin/etcd -name etcdserver -peer-addr 192.168.1.10:7001 -addr 192.168.1.10:4001 -data-dir /data/etcd -peer-bind-addr 0.0.0.0:7001 -bind-addr 0.0.0.0:4001 &&&&&&&&&配置etcd服务防火墙,其中4001为服务端口,7001为集群数据交互端口。&&引用&&&&# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 4001 -j ACCEPT&&&&# iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport 7001 -j ACCEPT&& &&&&3)安装Kubernetes(涉及所有Master、Minion主机)&&&&通过yum源方式安装,默认将安装etcd, docker, and cadvisor相关包。&&&&引用&&&&# curl https://copr.fedoraproject.org/coprs/eparis/kubernetes-epel-7/repo/epel-7/eparis-kubernetes-epel-7-epel-7.repo -o /etc/yum.repos.d/eparis-kubernetes-epel-7-epel-7.repo&&&&#yum -y install kubernetes&&&&&&&&升级至v0.6.2,覆盖bin文件即可,方法如下:&&&&引用&&&&# mkdir -p /home/install && cd /home/install&&&&# wget https://github.com/GoogleCloudPlatform/kubernetes/releases/download/v0.6.2/kubernetes.tar.gz&&&&# tar -zxvf kubernetes.tar.gz&&&&# tar -zxvf kubernetes/server/kubernetes-server-linux-amd64.tar.gz&&&&# cp kubernetes/server/bin/kube* /usr/bin&&&&&&&&校验安装结果,出版以下信息说明安装正常。&&&&引用&&&&[root@SN bin]# /usr/bin/kubectl version&&&&Client Version: version.Info{Major:"0", Minor:"6+", GitVersion:"v0.6.2", GitCommit:"729fde276613eedcd99ecf5b93f095b8deb64eb4", GitTreeState:"clean"}&&&&Server Version: &version.Info{Major:"0", Minor:"6+", GitVersion:"v0.6.2", GitCommit:"729fde276613eedcd99ecf5b93f095b8deb64eb4", GitTreeState:"clean"}&&&&&&&&4)Kubernetes配置(仅Master主机)&&&&master运行三个组件,包括apiserver、scheduler、controller-manager,相关配置项也只涉及这三块。4.1、【/etc/kubernetes/config】
# Comma seperated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.1.10:4001"
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"
# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0"
# Should this cluster be allowed to run privleged docker containers
KUBE_ALLOW_PRIV="--allow_privileged=false"
4.2、【/etc/kubernetes/apiserver】
# The address on the local server to listen to.
KUBE_API_ADDRESS="--address=0.0.0.0"
# The port on the local server to listen on.
KUBE_API_PORT="--port=8080"
# How the replication controller and scheduler find the kube-apiserver
KUBE_MASTER="--master=192.168.1.200:8080"
# Port minions listen on
KUBELET_PORT="--kubelet_port=10250"
# Address range to use for services
KUBE_SERVICE_ADDRESSES="--portal_net=10.254.0.0/16"
# Add you own!
KUBE_API_ARGS=""
4.3、【/etc/kubernetes/controller-manager】
# Comma seperated list of minions
KUBELET_ADDRESSES="--machines= 192.168.1.201,192.168.1.202"
# Add you own!
KUBE_CONTROLLER_MANAGER_ARGS=""
4.4、【/etc/kubernetes/scheduler】
# Add your own!
KUBE_SCHEDULER_ARGS=""
&&&&启动master侧相关服务&&&&引用&&&&# systemctl daemon-reload&&&&# systemctl start kube-apiserver.service kube-controller-manager.service kube-scheduler.service&&&&# systemctl enable kube-apiserver.service kube-controller-manager.service kube-scheduler.service&&&&&&&&5)Kubernetes配置(仅minion主机)&&&&&&&&minion运行两个组件,包括kubelet、proxy,相关配置项也只涉及这两块。&&&&Docker启动脚本更新&&&&# vi /etc/sysconfig/docker&&&&添加:-H tcp://0.0.0.0:2375,最终配置如下,以便以后提供远程API维护。&&&&OPTIONS=--selinux-enabled -H tcp://0.0.0.0:2375 -H fd://&&&&修改minion防火墙配置,通常master找不到minion主机多半是由于端口没有连通。&&&&iptables -I INPUT -s 192.168.1.200 -p tcp --dport 10250 -j ACCEPT&&&&修改kubernetes minion端配置,以192.168.1.201主机为例,其它minion主机同理。5.1、【/etc/kubernetes/config】
# Comma seperated list of nodes in the etcd cluster
KUBE_ETCD_SERVERS="--etcd_servers=http://192.168.1.10:4001"
# logging to stderr means we get it in the systemd journal
KUBE_LOGTOSTDERR="--logtostderr=true"
# journal message level, 0 is debug
KUBE_LOG_LEVEL="--v=0"
# Should this cluster be allowed to run privleged docker containers
KUBE_ALLOW_PRIV="--allow_privileged=false"
5.2、【/etc/kubernetes/kubelet】
# kubernetes kubelet (minion) config
# The address for the info server to serve on (set to 0.0.0.0 or "" for all interfaces)
KUBELET_ADDRESS="--address=0.0.0.0"
# The port for the info server to serve on
KUBELET_PORT="--port=10250"
# You may leave this blank to use the actual hostname
KUBELET_HOSTNAME="--hostname_override=192.168.1.201"
# Add your own!
KUBELET_ARGS=""
5.3、【/etc/kubernetes/proxy】
KUBE_PROXY_ARGS=""
启动kubernetes服务&&&&引用# systemctl daemon-reload# systemctl enable docker.service kubelet.service kube-proxy.service# systemctl start docker.service kubelet.service kube-proxy.service&&&&3、校验安装(在master主机操作,或可访问master主机8080端口的client api主机)&&1) kubernetes常用命令&&&&引用# kubectl get minions&&&&#查查看minion主机# kube

我要回帖

更多关于 怎么把手机号变成qq号 的文章

 

随机推荐