多台服务器变成一台储存服务器内存多大

10年岁月蹉跎过,如今再回首,无所得
多台腾讯云应用服务器挂载共享文件存储服务器
公司使用了腾讯云服务器部署应用,两台应用服务器挂载了同一个文件服务器CFS,挂载完成后,两台应用出现只有一台可访问,另一台提示无访问权限的问题。尝试着修改了挂载目录的权限,出现设置的这台机器解决,另外一台机器不可用的情况,查看目录权限时服务器1显示文件夹属于boltapp,服务器2显示文件夹属于gw。服务器1图: 服务器2图: 搞了半天是由于两天服务器上创建的用户相同的用户名,UID不同,CFS存储权限信息时是用的UID而不是用户名,所以一台服务器正常,另外一台服务器读取时无权限。查询用户ID的方法:第一种:cat /etc/passwd查看所有用户的信息,查看UID和GID
第2种:登录所需用户,直接输入id命令
解决方案:将两台服务器boltapp用户的UID修改为相同的ID.root用户执行:usermod -u 1005 boltappgroupmod -g 1005 boltappchown -R boltapp.boltapp/home/boltapp执行时要确保用户没有登录,且该用户没有启动任何服务。否则会提示当前用户被进程XX使用。使用ps-ef|grep 进程号
可以查看进程具体情况
没有更多推荐了,多个服务器总结:
将session保存到专门的一个服务器上,所有服务器都去请求数据共享Session
时间: 23:00:20
&&&& 阅读:1544
&&&& 评论:
&&&& 收藏:0
标签:原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也memcache实现session共享将这些服务器都配置成使用同一组Memcached服务器就可以,
一、提出问题:
为了满足足够大的应用,满足更多的客户,于是我们架设了N台Web服务器(N&=2),在多台Web服务器的情况下,我们会涉及到一个问题:用户登陆一台服务器以后,如果在跨越到另一台服务器的时候能够继续使用客户的Session?
二、解决方案:
1. 写客户端Cookie的方式
& & & &当用户登陆成功以后,把网站域名、用户名、密码、token、 session有效时间全部采用cookie的形式写入到客户端的cookie里面,如果用户从一台Web服务器跨越到另一台服务器的时候,我们的程序主动去检测客户端的cookie信息,进行判断,然后提供对应的服务,当然,如果cookie过期,或者无效,自然就不让用户继续服务了。当然,这种方法的弊端就不言而喻了,比如客户端禁用了cookie或者cookie被黑客窃取了呢?这些都可以解决,目前淘宝session框架就是基于client cookie做开发,不见得他们就出了很大的问题?也许是最可行的方式,可以配合memcached来实现。
2. 服务器之间Session数据同步的方式
& & & &假设Web服务器A是所有用户登陆的服务器,那么当用户验证登陆一下,session数据就会写到A服务器里,那么就可以自己写脚本或者守护进程来自动把session数据同步到其他Web服务器,那么当用户跳转到其他服务器的时候,那么session数据是一致的,自然就能够直接进行服务无须再次登陆了。缺点是,可能会速度慢,不稳定,如果是单向同步的话,登陆服务器出现问题,那么其他服务器也无法服务,当然也可以考虑双向同步的问题。这个方案都可以解决,目前zookeeper可以实现。
3. 利用NFS共享Session数据的方式
& & & &其实这个方案和下面的Mysql方案类似,只是存储方式不一 样。大致就是有一台公共的NFS服务器(Network File Server)做共享服务器,所有的Web服务器登陆的时候把session数据写到这台服务器上,那么所有的session数据其实都是保存在这台 NFS服务器上的,不论用户访问哪台Web服务器,都要来这台服务器获取session数据,那么就能够实现共享session数据了。缺点是依赖性太强,如果NFS服务器down掉了,那么大家都无法工作了,当然,可以考虑多台NFS服务器同步的形式。这个方案都可以解决,目前zookeeper可以实现,当然memcached也可以实现session共享。
4. 利用Mysql数据库共享Session数据的方式
& & & &这个方式与NFS的方式类似,也是采用一台Mysql服务器做共享服务器,把所有的session的数据保存到Mysql服务器上,所有Web服务器都来这台Mysql服务器来获取Session 数据。缺点也是依赖性太强,Mysql无法工作了影响所有的Web服务器,当然,可以考虑多太Mysql数据库来共享session,使用同步Mysql 数据的方式。这种方式跟方式3类似,同样可以采用memcached来做,nosql也可以实现,这些都不是问题。
5. 使用硬件设备
& & & &这个算是比较成熟的解决方案了,使用类似BIG-IP的负载设备来实现资源共享,那么就能够又稳定又合理的的共享Session了。目前很多门户网站采用这种方式。缺点很明显了,就是要收费了,硬件设备肯定需要购买成本的,不过对于专业或者大型应用来讲,是比较合理并且值得的,这种方式可以放到最后面考虑。
使用Memcached实现Session共享
由于Cookie是保存的用户客户端的,安全性存在问题,为保证用户数据的安全性,我们必须使用Session机制来保存用户登录后的一些信息。&如果我们使用LVS对Apache实现负载均衡,就无法保证用户每次都能被分配到同一台Apache Server上,以取到自己的Session,虽然LVS可以加-p参数来保证客户端每次都被分配到同一台Apache Server上,但这种方式存在一些弊端,比如必须设置一个保持时间,如果时间太长了,LVS就需要缓存大量信息,时间太短了,又不能保证用户每次被分配到同一台Server上,而且这种方式也不易实现Session的冗余备份。&因此,我们需要Session共享,也就是说每台Apache都可以访问到所有的Session,这样用户被分配到哪台Server就不重要了。&Session共享主要有多种实现方式:&? Session复制。Apache可以实现把Session同步到其他Server上去,但这种技术太复杂,而且影响性能,占用内存,所以不推荐使用。&? Session集中存储。存储介质可以是NFS文件系统、数据库、Memcached,从性能上考虑,当然是Memcached最好,推荐使用。1.3 实现&1.3.1 安装Memcached&Memcached是基于libevent实现的,所以要首先确保已经安装libevent。&安装libevent&tar zxvf libevent-1.4.13-stable.tar.gz&cd libevent-1.4.13-stable&./configure --prefix=/usr&make && make install&安装Memcached&tar zxvf memcached-1.4.4.tar.gz&cd memcached-1.4.4&./configure --prefix=/usr/local/memcached --with-libevent=/usr&make && make install&启动Memcached&/usr/local/memcached/bin/memcached -d -m 10 -u root -l 192.168.0.9 -p 11211 -c 256 -P /tmp/memcached.pid&1.3.2 安装PHP扩展pecl::memcache&pecl install memcache&或源码安装&tar zxvf memcache-2.2.5.tgz&cd memcache-2.2.5&phpize&./configure&make && make install&将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 "Registered save handlers" 会有"files user memcache" 这3个可用。&另外,基于libmemached的php扩展在pecl发布了,叫pecl::memcached,性能上可能会更好。&1.3.3 配置Memcached保存Session&修改配置文件,在 php.ini 中全局设置&session.save_handler = memcache&session.save_path = ":11211"&或者某个目录下的 .htaccess :&php_value session.save_handler "memcache"&php_value session.save_path ":11211"&再或者在某个一个应用中:&ini_set("session.save_handler", "memcache");&ini_set("session.save_path", ":11211");&使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:":port1?persistent=1&weight=2,:port2" 。&1.3.4 测试&&?php&session_start();&if (!isset($_SESSION[‘TEST‘])) {&$_SESSION[‘TEST‘] = time();&}&$_SESSION[‘TEST3‘] = time();&print $_SESSION[‘TEST‘];&print "&br&&br&";&print $_SESSION[‘TEST3‘];&print "&br&&br&";&print session_id();&?&&可以直接用sessionid 去 memcached 里查询一下:&telnet 192.168.0.9 11211&get c65cedec65beeb573e077&得到&TEST|i:;TEST3|i:;&这样的结果,说明session 正常工作&用Memcached来存储 session 在读写速度上会比文件快很多,而且在多个服务器需要共用session时会比较方便,将这些服务器都配置成使用同一组Memcached服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题,如果要持久化数据,也可以使用新浪开发的MemcacheDB或日本人开发的Tokyo tyrant+Tokyo Cabinet。&另外,如何解决Memcached的单点故障问题,有以下几个方案:&? 使用上面提到的Memcache::addServer增加多台Memcached,但这样只能达到一台出故障之后,另外一台可以使用,但每台Memcached的数据是独立的,不共享,不复制,出故障的数据丢失了。&? 使用Memcached的一个补丁应用repcached,可以实现multi master replication和asynchronous data repliacation,并且支持原来Memcached的所有命令。不过这个应用只支持Memcached1.2.x版本。&? 使用Tokyo tyrant+Tokyo Cabinet(简称TT+TC)。TT兼容Memcached协议,可以直接替换使用,TT支持replication,可以实现故障转移,TC则为TT提供持久化。&TT+TC是日本最大的社交类网站开发的开源应用,并已成功应用在mixi.jp中,值得研究。
标签:原文地址:http://www.cnblogs.com/xyxxs/p/4542791.html
&&国之画&&&& &&&&chrome插件
版权所有 京ICP备号-2
迷上了代码!现有服务器存储空间快不够用了&购买NAS可以为多台服务器扩展存储空间么?NFS是什么,虚拟机可以用不?
GA-EP43-US3L
Apacer DDRII800 2G*2
迪兰4830雷钻
傲王SQ210W
惠威D1080MKII
需要看NAS是否兼容服务器NFS,network&file&server
太平洋网络论坛群欢迎您:,活动群。小渣渣吐槽请轻喷
本人已不在论坛作日常活动,有需要请通过群或51CTO网络板块联系。
可以的,挂载到各个服务器中,一般linux都是通过nfs挂载的,原公司就是用的nas,netapp的
13:28:08 修改
看你是基于文件还是基于数据块来扩展吧!!一般服务器都是组建SAN,分IP-SAN和FC-SAN(虽然性能好但这个一般不推荐成本太高)!单纯的NAS只是基于文件级别的&
楼上的好性感
系统管理员
该楼层已被屏蔽 |
系统管理员
该楼层已被屏蔽 |
系统管理员
该楼层已被屏蔽 |
系统管理员
该楼层已被屏蔽 |
您需要登录后才可以发帖
其他登录方式:两台服务器的内存内存能合并成一个吗_百度知道
两台服务器的内存内存能合并成一个吗
我有更好的答案
可以的,做成虚拟化,然后再虚拟成多台服务器,可以根据自己的需求进行分配资源,你参考正睿这个虚拟化方案(只用服务器,不用存储)名称:服务器虚拟化解决方案地址:
采纳率:91%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。腾讯十多个人管理一万多台NoSQL存储服务器的秘密
周小军, 腾讯高级运维工程师,目前在腾讯社交网络事业部负责社交业务海量NoSQL集群运维和团队管理。曾在天涯社区任运维副总监,负责天涯整体运维。对互联网网站架构、数据中心、云计算及自动化运维等领域有深入研究和理解,积累了十多年的IT运维管理经验。希望穷尽一生来深入钻研运维领域。
腾讯目前有三大NoSQL分布式存储系统,分别是:
◆Grocery,主要支撑QQ业务,包括关系链、群、圈子、消息等
◆CKV,主要支撑QQ空间、腾讯云、相册、音乐和广点通等
◆Quorum_KV,主要支撑微信业务,包括消息、朋友圈等产品
我们是SNG(腾讯社交网络事业部)社交网络运营部平台技术运营中心下的数据运维团队。团队主要负责CKV和Grocery二大NoSQL分布式存储集群的运营。目前团队有十几名工程师,负责一万几千台存储服务器。主要部署在深圳、天津、上海和广州等大区域。
存储服务器划分为几十个SET(仓库)集群,共有几百TB的内存和SSD存储容量,服务于QQ、朋友网、QQ空间、相册、广点通、微云、音乐等各类互联网核心业务。
NoSQL集群按SET的方式部署,SET也称之为&仓库&。一个SET是一个物理单元。仓库内至少拥有四种服务器角色:
◆接入机(代理服务器)
◆存储机(主机+备机)
◆仓库管理机
◆搬迁机器
每个SET可部署为跨机架、跨IDC、跨城容灾。一个SET就是一个永不停服、永不丢数据的独立的,标准化的服务单元,类似于标准化集装箱。我们最大的SET机器部署数量不会超过上千台,超大的SET会加大管理成本。
在腾讯的海量服务运营模型中,SET是一个非常重要的概念。接入层、逻辑层和数据层均按SET单元化来部署。一个业务譬如QQ音乐可能接入层和逻辑层各有十几个SET,数据层有几个SET。SET分别部署到不同的区域。每个SET都能容纳一定数量的在线用户(譬如500万在线用户)。
天津大爆炸2亿用户跨省大调度
8月12日发生在天津的特大爆炸事故中,腾讯天津数据中心距爆炸现场才1-2公里。当时天津数据中心高危,现场数名工程师受伤,市电随时可能中断,柴电只能支持不到一天。8月13日我们启动了大调度,把天津所容纳的二亿多华北活跃用户全部调度回深圳和上海。调度过程QQ用户无感知(从那几天IT业界的新闻来看,外界对这一大事件毫无知晓)。
这应该是中国互联网史上最大规模的一次调度。调度的成功受益于SET化的管理,受益于数据SET的三地同步。
同步是怎么做的呢?
业务数据按仓库为单元,在全国各地IDC部署几个异地仓库,通过数据流水来实现各异地仓库间数据同步和一致性保证。当某一城市的IDC灾难性故障时,业务能迅速切到其他城市IDC恢复数据的读写,实现业务柔性可用,保证业务服务的持续性。数据的同步由同步中心负责,业务写入同步中心,由各地的仓库同步服务,从同步中心中读取数据,并写入本地仓库。
1.低成本:利用数据冷热自动分离技术,将热数据存储在内存,冷数据存储在SSD中,从而大幅度降低成本,且保证20%以内的数据保存在内存中。
2.可扩展性强:表存储空间可以在线自动无损伸缩,业务基本无感知,适合各种规模的业务,和业务的各个生命周期。
3.高性能:单表最大支持千万次/秒的访问。通过网络访问的延时1ms左右。单台存储服务器千兆网络环境支持50万/秒的访问,万兆网络环境支持超过100万/秒的访问。
4.可用性超过99.95%:软硬件全冗余设计,双机热备,主备切换对业务透明,跨机架跨交换机部署。
5.数据持久性超过8个9:数据落磁盘存储,多内存和磁盘副本,具有灾难时回档能力。
高可用架构
经过几年的不断打磨及优化,我们NoSQL分布式集群的架构已经非常的成熟,主要有以下几个特点:
1.高可靠:主备冗余,故障自动切换机制来解决单点问题,当主机故障时自动切换到备机。同时后台调度系统启动搬迁服务,把单点的备机数据搬迁到仓库里空闲的资源池。
2.异地容灾:多地部署,单IDC、甚至单个城市灾难时,服务持续可用。
3.强一致性:主提供读写,备容灾,保证数据强一致性;主故障时自动只读,用户切到备机后恢复读写,确保在单机故障时数据零丢失。
4.仓库集群机制:标准化部署,容量伸缩自动化,数据服务能力自动适配业务增长或衰退,保持对外服务的持续可用。
数据即服务的运营理念
数据中心由计算、存储、传输三大要素构成,IaaS服务提出了把传统数据中心的CPU,内存,网络和存储等转变为资源的目标,为业务提供计算资源的池化及智能调度管理。对于数据层我们的目标则是DaaS,把数据做为服务提供给用户。
构建可伸缩的分布式数据库
我们的分布式数据库把存储资源池化,把内存存储块及磁盘存储块做为资源,放在一个存储大池子里按照较固定的存储单元进行管理,并在其之上部署存储智能调度系统。
因此,我们的上万台存储服务器已经是真正意义上,具备动态伸缩能力的分布式数据库:
◆业务使用数据容量最小为1GB,最大为10TB。
◆内存存储从1GB扩容到多机的100GB在分钟级在线完成,扩容过程业务无感知无损。
◆业务保持可用率4个9,延迟2ms。
◆扩容过程不需要工程师跟踪。
我们的数据管理集中化,在数据复杂度以及数据量不断增长的情况下,数据运维能够支撑多变的业务需求。
运维即服务,数据即服务
在DaaS中,我们已经落地实施了以下几点:
1.业务自助接入服务:业务申请、创建业务ID、自动创建表空间、自动下线,贯穿整个业务的生命周期。
2.机器部署:采用基础运维平台,包括包安装,一键上架等自动化部署。支持跨机架部署。
3.弹性伸缩:一是存储代理的弹性;二是存储分配空间的弹性,根据业务存储使用率自动扩缩容。
4.水位调度:业务流量在接入集群间自动流动,存储块在存储集群间自动流动。
5.用户报表:全方位的访问趋势、存储趋势、数据冷热分布、接入机分布、存储机分布、主机当前负载等业务存储数据。
6.多协议支持:支持私有协议、Redis协议和Memcache协议。
7.成本分摊:按请求量和存储量进行月度财务核算,便于对用户成本透明。
成本优化策略
上万台存储集群的成本优化是运营中比较核心的目标之一,我们在成本上的措施主要为:
1.用访问密度做为可度量的成本指标,按每单位GB的访问量来衡量业务接入的合理性。
2.数据密度,由于数据块是由固定长度的Block组成的。用户记录的不定长会造成存储块碎片严重。所以我们通过定期的碎片整理来实现存储块的高效使用,碎片少,提升有效存储空间。
3.分层存储,热KEY保存在内存,冷KEY下沉到SSD硬盘。按通常的八二冷热数据比例,我们可以节省大量的内存服务器。
4.备机复用,为保证数据的强一致性,我们的存储主机提供读写服务,备机只提供数据流水落地,不提供服务。因此我们在备机上部署容器,满足公司离线计算或长尾业务对计算资源的需求。
运营团队的工作本质
研发和DBA的关系就如同一辆车,我们造好一辆车,写好说明手册,而DBA则负责调教和维护这辆车,让它能发挥最高的性能,坐得最舒服。
&MySQL研发团队成员赖铮
的确,我们运营团队也是类似,与研发团队一起把原始的数据库引擎打磨得更易于运维、性能更高及对业务更多的特性支持,发挥工匠精神,不断在成本、安全、质量和效率上追求极致。
除了研发团队,运维团队本身也是开发&运维相结合的团队,团队内有开发和运维二种角色:
◆开发工程师:负责持续集成环境、流程引擎、接口、代码审核等工作。
◆运维工程师:负责上到产品经理,下到任务粒度级的开发等职责。
运维强大的工具平台具备了功能丰富的API接口,譬如身份验证、流程引擎、CMDB接口、监控接口、日志上报、包安装接口等功能,极大地提高了运维工程师工具开发效率。
如何一起愉快地发展
&高效运维&公众号(如下二维码)值得您的关注,作为高效运维系列微信群(国内领先的运维垂直社区)的唯一官方公众号,每周发表多篇干货满满的原创好文:来自于系列群的讨论精华、运维讲坛精彩分享及群友原创等。&高效运维&也是互联网专栏《高效运维最佳实践》及运维2.0官方公众号。
重要提示:除非事先获得授权,请在本公众号发布2天后,才能转载本文。尊重知识,请必须全文转载,并包括本行及如下二维码。
官方微博/微信
每日头条、业界资讯、热点资讯、八卦爆料,全天跟踪微博播报。各种爆料、内幕、花边、资讯一网打尽。百万互联网粉丝互动参与,TechWeb官方微博期待您的关注。
↑扫描二维码
想在手机上看科技资讯和科技八卦吗?想第一时间看独家爆料和深度报道吗?请关注TechWeb官方微信公众帐号:1.用手机扫左侧二维码;2.在添加朋友里,搜索关注TechWeb。
Copyright (C)
All rights reserved. 京ICP证060517号/京ICP备号 京公网安备76号
TechWeb公众号
机情秀公众号

我要回帖

更多关于 海康储存服务器 的文章

 

随机推荐