在AWS服务器配置Docker遇到的各种问题

在AWS服务器配置Docker遇到的各种问题,第1张

AWS上提供多种实例的选择,一开始没有多想直接选择了Amazon Linux 2 AMI,直接导致后面配Docker和Nvidia-docker时遇到了各种各样的问题。首先,Amazon Linux使用的是Redhat版本(Amazon Linux, like CentOS, is based on RHEL -- it is fundamentally a minimal/basic install of Red Hat Enterprise Linux (hence optimised for the purpose))

一开始并不了解linux系统的分类,默认Ubuntu==linux,结果闹出了大错误。下文详述。

首先,参考的配置教程是网络上的这个教程:  使用nvidia-docker2 - Gemfield的文章 - 知乎 

第一步的配置Nvidia GPU驱动就出现了问题。首先,由于使用的是Amazon Linux,在线安装Nvida GPU的第一步就由于无法找到apt命令而失效。没办法只能转到下一步:手动安装驱动。由此我又花了大力气去google如何在Redhat版本的linux上安装apt-get命令、如何运行deb包、如何安装dpkg命令等等等等到最后追本溯源才发现了自己思维上的误区。

上面行不通之后又换了一个教程,在此, 强烈推荐使用PPA方法配置Nvidia 驱动

参考的是这个教程: [Ubuntu 1804]PPA方式安装Nvidia驱动

安装的是third-party free recommended版本的驱动。需要注意,安装之后一定得reboot,不然无法生效。

极牛技术实践分享系列活动是极牛联合顶级VC、技术专家,为企业、技术人提供的一种系统的线上技术分享活动。
每期不同的技术主题,和行业专家深度探讨,专注解决技术实践难点,推动技术创新,每两周的周三20点正式开课。欢迎各个机构、企业、行业专家、技术人报名参加。
本期大纲
随着从0到千万用户的业务增长,通过aws的不同服务轻松地实现高性能和高可用的基础架构
嘉宾介绍
方坤,AWS解决方案架构师,9年服务器开发和云计算领域解决方案经验。曾任Intel亚太研发公司软件开发工程师和UCloud云计算高级解决方案架构师,熟悉互联网领域多种应用场景,有丰富的初创企业IT解决方案项目设计经验。
方坤老师本次的主题比较偏向AWS实践的基础部分,假设了一个web应用从小型到中型和大型的时候,可能需要用到的AWS服务,以及相关介绍和实践建议。
可能有的小伙伴没太了解,所以几个重要的基础概念先说明下:
首先是区域(Region),它是一个物理的概念,数据中心的集合,可以覆盖一个地区或国家。
比如说北京区,就是覆盖中国地区,然后区域下面有可用区的概念,一个区域包括多个可用区。而可用区是若干物理数据中心(由高速光纤连接)逻辑上组成的,北京区有两个可用区,通俗来说可以理解为同城的多数据中心。
可用edge location,边缘节点可以理解为CDN分发节点,今天主要涉及到的服务会是计算、存储、网络三个部分。

使用方式。
1、AWS专用主机是AmazonWebServices(AWS)提供的云服务,可以按需购买,可以按小时计费,可以按需扩展,而裸金属机是传统的物理服务器,需要购买,安装,维护,支持有限,扩展性较差。
2、AWS专用主机可以提供更高的安全性,可以提供多种安全服务,如安全组,虚拟私有网络,数据加密等,而裸金属机的安全性受到物理环境的限制,会受到外部攻击。

当前,支持数据存储、人工智能和多元化内容的工作负载正以前所未有的速度迁移到云,数据中心服务器市场高速增长。不过,目前大多数云基础设施仍在使用30年前的x86架构处理器技术,而对高性能、高能效和更低的总拥有成本的需要,加快了非x86架构处理器的发展,Arm处理器正在成为这一进程的主力,一些相关公司正在引人注目。

创立于2018年的Ampere Computing是其中颇具代表性的一家服务器芯片公司,该公司目前主推产品是号称全球首款云原生处理器的Ampere Altra,该处理器内核基于64位Arm处理器,专为云定制,Ampere Computing强调其具备可预测性、可扩展性和高性能。

据Ampere Computing首席产品官Jeff Wittich介绍,作为云原生通用处理器,Ampere Altra可在云环境下运行所有应用。从Web服务器到数据库到缓存解决方案,再到视频编码,甚至AI推理,Ampere Altra在性能上超越传统x86处理器3倍之多,在性能功耗比上领先近4倍。

Ampere Altra针对云工作负载特性而进行了一些设计,例如该处理器每个内核仅运行一个单线程,并保持一致的高频率,因此避免了因服务器上多个用户而导致的性能不佳的问题。

在利用率方面,Ampere Altra可以将内核数扩展至128核,并为每个核提供大容量低延迟的专用缓存。借助智能高带宽mesh互联结构,所有高性能核都连接在一起,打破了传统的CPU在需求增加时会产生递减回报的使用瓶颈。Ampere Altra采用先进的DDR和PCIe技术设计,可实现最大容量,扩展内存和IO的带宽。此外,所有必要的服务器级RAS、可管理性和平台安全功能均可实现横向扩展部署,并为客户提供“开箱即用”的体验。

Ampere Altra系列有两个产品,其中Ampere Altra内置80个Armv82核,频率为33 GHz;Ampere Altra Max则内置128个Armv82核,频率为30 GHz,两款产品都支持128通道高速PCIe Gen4和8 72 ECC保护的DDR4 3200内存。

在AI推理上,Ampere Computing也正在推进部署。基于Ampere Altra的AI方案支持TensorFlow、PyTorch和ONNX框架。其硬件支持原生FP16数据格式,与FP32相比,速度提高了近2倍,且大多数AI模型几乎没有精度损失。该公司提供了一个易于使用的Docker容器,其中包括计算机视觉和自然语言处理模型示例和基准,以使开发人员能够快速入门。

一项MLPerf的测试显示,Ampere AI优化框架+Ampere Altra Max的组合,使用FP16时,吞吐量比AWS Graviton高出5倍,比x86竞争产品高出2倍以上。

在另一项面积功耗比的测试中,Ampere Altra的单核功耗比传统CPU低67%以上,其32核处理器的功耗比同等的x86 CPU低 46倍,性能高出2倍。得益于此,Ampere Computing开辟了其他竞争对手无法涉足的新领地—— 汽车 自动驾驶,他们正在和通用 汽车 旗下自动驾驶子公司Cruise进行相关合作。

Ampere Altra得到了市场积极的反馈:虚拟主机平台Plesk通过甲骨文云搭载Ampere Altra,仅第一个月就推出了1000多个实例,实现了有史以来最快的产品推广速度。

微软最新的Azure虚拟机也采用了Ampere Altra,该虚拟机系列包括通用Dpsv5和内存优化的Epsv5虚拟机,微软声称这些虚拟机的性价比比基于IBM x86的虚拟机高出50%。

其他终端用户,如红牛车队、GenyMobile、墨尔本大学、布里斯托尔大学和耶拿大学,也都在相关云环境应用中采用了Ampere Computing的处理器。

目前,包括微软、甲骨文、腾讯、阿里、Equinix Metals、CloudFlare、京东、优刻得、Hetzner等众多公司在他们的服务器中使用Ampere Computing的方案和产品,全球已有40多个服务器平台支持Ampere Altra,7家全球最大的超大规模数据中心正在部署该公司产品。

其中,腾讯云推出了基于Ampere Altra处理器SR1的实例。阿里云不仅推出了基于Ampere Altra处理器的c6r和g6r实例,还推出了基于Ampere Computing处理器的手机云 游戏 服务。京东也推出了两款基于Ampere Altra处理器的实例,一款用于计算、一款用于存储。

除了云服务提供商,Ampere Computing同ODM和OEM服务器业务的合作也在不断扩大,包括富士康、技嘉、浪潮、超微和纬颖等。最新的消息是,Ampere Computing已经开始为特定客户的服务器提供下一代处理器Ampere One的样品。新CPU采用公司自研核(也是以ARM ISA为基础,并且能够与Altra和Altra Max兼容),5nm工艺,支持DDR5和PCIe 50接口。至此,Ampere Computing拥有并行的两大产品家族——基于Arm的Ampere Altra系列和基于自研核的Ampere One。它们分别适用于不同工作负载、细分市场和应用程序。例如为边缘场景设计的32核40W产品,以及为超大规模数据中心负载设计的128核125W产品。

不久前,来自路透社的消息称,Ampere Computing在4月份已秘密申请在美国IPO。

在网站安全狗IP黑白名单
内将本机IP设置为黑名单
,通过测试发现在本地访问网站就提示错误信息
IP白名单设置可以通过设置一些值得信赖IP地址
为白名单地址,从而使它们能够顺利的访问网站,用户可以点击“启用”选项开启白名单功能,不要忘了设置好后需要保存
规则列表,可以新增、修改、删除禁止访问IP段及对应的网站规则
具体设置和设置后
可以点击“修改”和“删除”对规则进行修改
将一些常见的网络爬虫
设置成白名单,这样就不会再拦截爬虫了
在默认设置中已经有添加了一些爬虫白名单,用户同时可以在“新增”和“删除”选项中添加一些自己需要的爬虫和删除一些没用的爬虫。
IP黑名单是相对白名单进行设置的,目的是为了通过设置一些不良IP地址为黑名单地址,从而限制它们访问网站。需要先开启防护功能列表中的监控设置才能正常启动,同时点击“启用”后要记得保存修改
同样IP黑名单也是采用由指定IP和子网掩码
来划分IP地址,设置方法和IP白名单的设置是一样的,用户可以通过“新增” ,“修改” ,“删除”修改规则列表
当被禁止IP访问用户的网站时,服务器就会返回信息,这个信息可以根据自己的情况进行设置

基础架构
AWS分布在全球12个区域里
每个区域对应着一个地理位置,里面含有多个Availability
Zones(可用区)。这些区域设置在北美,南美,欧洲,中东,非洲,亚太区。
每个AZ实质上是单个数据中心,尽管它们可由多个数据中心构建。
每个AZ有着独立的供电系统和互联网连接。
不同AZ之间以低延迟网络进行连接,这种快速网络可消除物理位置带来的速度影响。
每个区域含有至少两个AZ,共计32个AZs。
借助AZ可创建高可用性的程序架构。
AWS在全球还分布有53个偏远区域(Edge locations)
偏远区域的使用对象是CloudFront,这是Amazon的内容分发网络(CDN)和DNS服务器。
偏远区域的存在使得全球用户都可以享用低延迟网络而不论他们身在何处。建立区块服务(Block Services)
Amazon透过AWS创建了大量高可用和高容错的服务,具体的服务清单可点击这里查看。
缴纳一定的费用,你就可以在个人的应用中使用这些服务而不必为高可用性而忧心。
部分服务位于一个AZ中:CloudFront, Route 53, S3, DynamoDB, Elastic Load
Balancing, EFS, Lambda, SQS, SNS, SES, SWF。
即使是使用单个AZ的服务,其高可用架构也是足够强大的。
1个用户
在这个时候,开发者=用户。你的架构看起来是这样的:
运行单个实例,如t2micro。你可以为你的服务器选择不同的CPU,内存,存储设备和网络环境。
该服务器承载了全部web任务,如:web应用,数据库,管理器等。
使用AmazonRoute 53进行DNS管理。
为该实例附加一个Elastic IP地址。
那么随着用户数的增加,我们需要如何进行升级改造,直至能为千万用户提供优质的服务呢?强调文字
优化策略
采用多主机模式
尝试使用Amazon数据库服务,如Amazon RDS(关系数据库),Amazon DynamoDB(NoSQL数据库),Amazon Redshift。
逐步从SQL数据库转为NoSQL数据库,特别是数据量超过5TB,你的应用对低延迟敏感的时候。
使用Elastic Load Balancer(d性负载均衡器),它可以对主机进行健康检测以确保网络的通畅,同时可以帮助实现网络的扩展。
垂直升级
需要更强的实例类型,例如c48xlarge或者m32xlarge。
停止使用当前的服务器,换用功能更强大的机器,如:244GB RAM,40核CPU。
某些Amazon服务提供了Provisined IOPS选项以便用户自行配置变更,这样一来用户可以使用类似DynamoDB的扩展服务。
类似上面的做法就叫做垂直升级。但其有个缺点,就是一旦机器出错,你的网站也会停止运作了。所以要尽量避免单个实例的做法。
自动扩展
如果你一直在为峰值负载而努力,如黑色星期五,那么其实是在浪费金钱。更好的解决方案
列表内容
是按需分配,这就是Auto Scaling(自动扩展),在计算机群组中实现自动化的大小变更。
你可以为你的容量池定义最大值和最小值。
CloudWatch是一个管理服务,已内置到所有的Amazon应用中。
CloudWatch事件会触发扩展。
触发事件可以是CPU占用率,时间延迟,网速等等。
你也可以向CloudWatch导入自定义基线,按照你的意愿来触发扩展。
架构分解
使用SOA/微服务,使你的服务层组件化。
这样做的好处是单独的服务可以独立地进行扩展,从而大大增加了灵活性和可用性。
SOA是Amazon提供的重要架构组件。
避免重复劳动
把精力投入到能使你的业务与众不同的事情上。
Amazon提供了很多高容错的服务。例如,排队(SQS服务),邮件,转码,搜索,数据库,监控等等。所以类似的服务都不必再次编写了。
用户数>千万+
当用户达到千万级别的时候,你考虑的策略应该是这样的:
多AZs模式
在不同层之间执行ELB(d性负载平衡)。除了web层,在应用层,数据层等层里也需要进行ELB。
能够自动扩展
使用面向服务的架构
缓存架构内和外的数据
使用Amazon S3和CloudFront。S3用于存储静态数据,如js,CSS,图像等,具有足够的扩展性。CloudFront可对数据进行缓存。
使用Amazon SES来进行邮件发送。
使用CloudWatch进行监控。
对数据写入执行如下的策略:
联结 – 根据功能划分不同的数据库。
分表 – 把一个数据集分解到多个主机上。
把部分功能放到其他类型的数据库上(NoSQL,graph等)。
不断优化你的应用和整个架构堆栈,针对瓶颈进行分析并找出解决方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13464236.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-12
下一篇 2023-08-12

发表评论

登录后才能评论

评论列表(0条)

保存