云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

免备案CDN_阿里云的OSS_新注册优惠

小七 141 0

服务器厂家_关于_常用数据库有哪些

在这里,我们选择使用docker和saltstack构建和部署振幅。Docker允许我们最小化部署服务所需的配置和定制。Saltstack是一个功能强大的系统和配置管理工具,它速度快,可扩展性强,可用于解决任何基础设施自动化或编排问题。我们是怎么选择docker和saltstack的?我相信你可以想象很多初创公司开始在一台手动配置的机器上部署和构建软件,方法是克隆git repo并执行必要的操作。当然,这个过程的规模并不大。首先我们转向多克。考虑到使用docker容器为我们的服务实现的构建的速度和可重复性,这对我们来说是一个无需考虑的问题。一旦我们知道我们要用docker来构建,我们就开始寻找系统和配置管理工具,让我们的生活更轻松。首先,使用名为Ansible的工具推出了一些服务部署。Ansible非常适合快速起步,但没过多久,我们就注意到,随着规模的扩大,事情变得越来越慢,更复杂的逻辑很难维持。我们花了一些时间来考虑我们的选择。Chef是一个很好的候选人,企业信息化应用系统,特别是由于它的广泛采用、强大的测试能力、简单和深度的使用,但最终我们选择了Saltstack。为什么?首先,我们主要是一家java和python商店,因此能够为系统和配置管理编写python对团队来说是一个巨大的好处。安全是我们的另一个担忧。Saltstack允许我们为所有的主人和仆从提供pub/priv密钥,以保证它们的真实性,并在不牺牲性能或可伸缩性的情况下为主/仆从通信提供一个安全通道。索尔斯塔克对多克的承诺是非常有希望的。在我们开始使用salt时,企业内部软件,他们使用的是docker io模块,在社区反馈意识到有很多改进可用,值得构建一个全新的模块来解决这些问题。Saltstack有一个很好的社区。我能够在社区中随时提供和接受帮助。Bug报告、特性请求和pull请求的响应速度非常快,通常在24小时内响应,尽管不可否认的是,一些更大的Bug需要更多的时间来解决。盐场工人开始使用docker和saltstack非常简单。我们假设设置盐主和仆从已经完成。此信息是为与docker io模块一起使用而编写的,docker io模块仍然是salt的默认docker模块,关于云服务器,但已被弃用,取而代之的是较新的docker ng模块。编写代码示例是为了使用saltstack可用的python呈现器。使用saltstack设置docker依赖项。您需要安装python pip、docker py、lxc docker,并确保docker服务在要部署docker容器的节点上运行。拉你的第一个集装箱nginx.sls公司#!是的def run():配置={}配置['nginx_pulled']={'码头工人拉': [{'name':'nginx'},#docker存储库{'tag':"最新"},好评返现模板,{'force':True},#强制拉图像{"需要":[{'pip':'docker py'}要求docker py由pip安装]},{'order':200}#可选的盐操作的严格排序]}返回配置安装容器nginx.sls公司配置['ournginx_container']={'docker.已安装': [{'name':"ournginx"},{'image':"nginx:最新"},{'mem_limit':无},#解决方法https://github.com/saltstack/salt/issues/25492{"需要":[{'docker':'nginx_pulld'},淘客单,#require image被拉]},{"顺序":210}]}运行容器nginx.sls公司配置['ournginx_running']={'运行docker’: [{'name':"ournginx"},{'image':"nginx:最新"},{"需要":[{'docker':'ournginx_container'},]},{"顺序":211}]}需要注意的一点是,上述安装和运行状态应具有相同的选项(如适用)。如果设置了任何环境变量或卷,请确保为这两个变量或卷进行配置docker.已安装以及docker.运行.现在,它可以处理拉取和部署容器所需的最低要求。但是如果我们为nginx发布一个新的"最新"容器,会发生什么呢?好吧,它将拉取最新的容器,但正在运行和安装的容器将不会更新。我们来解决这个问题。nginx.sls公司配置['ournginx_existed']={'命令运行': [{'name':'/usr/bin/docker stop-t 10 ournginx&&&/usr/bin/docker rm-f ournginx'},{'除非':'/usr/local/bin/docker\u compare\u运行ournginxnginx:最新‘},{'require':[{'file':'docker_compare_running'}]},{'order':201}]}docker\u比较运行#!/垃圾桶/垃圾桶#如果容器未运行、参数不足或#下载的容器和运行的容器没有区别。#如果运行容器不同,返回1。如果[$#-lt 2];则echo"请提供图像进行搜索"#返回0,这样salt就不会认为图像不同了退出0金融机构#如果容器未运行,则返回0如果[$(/usr/bin/docker ps--filter name=$1-q | wc-l)-eq 0];则退出0金融机构#如果容器不匹配,返回>0。/usr/bin/docker inspect——格式"{.Image}}"$1\|grep$(/usr/bin/docker inspect--format"{.Id}}"$2)很好,现在当我们发布nginx容器的新版本时,我们将停止并删除旧容器,从而允许重新启动更新后的容器。到目前为止,所有这些都很好,但是如果您要将其设置为从私有docker注册表或repo进行部署,则需要一种身份验证方法。docker模块支持docker v1注册表api。实现从私有存储库或注册中心拉取所需的全部操作是配置docker registries支柱数据,这只是存储库到用户名、电子邮件和密码的映射,并具有访问权限。我们的默认支柱数据:初始化.sls#!是的def run():底柱={}基本支柱['docker-registries']={'https://index.docker.io/v1/': {'电子邮件':'devops@amplitude.com网站','密码':"docker注册表密码",'用户名':'帐户名称'}}返回基座逯柱这就是用saltstack完成docker容器的基本设置、部署和升级所需的全部工作。我们选择用python编写salt状态,因为它允许我们有一些更复杂的状态,同时与yaml状态文件相比仍然保持尽可能多的可读性。我们的大多数docker部署都源于这些基本步骤。根据你的具体需要,还有很大的改进空间。以下几点可以帮助或改进:使用支柱值显式地为部署的一个或多个容器设置门。将新容器与旧容器一起部署,以实现无缝部署。容器回滚。升级至dockerng一个自定义状态或模块,用于减少部署带有saltstack的docker容器所需的样板文件。根据主机规格缩放容器的数量或大小评论凯文·奥德尔曼:你停止nginx容器然后启动一个新容器的方法会导致停机吗?Jay Bendon:是的,如果你只运行NGINX的一个实例,或者没有基于健康检查的负载平衡,并且你一次重新加载所有的容器,那么最终用户可能会遇到不可用的情况。NGINX会处理关闭信号,这会导致它在终止进程之前完成正在处理的请求,而不接受任何新的连接,我们的负载平衡器检测到NGINX实例正在停止旋转,并在容器重新加载期间将其从池中移除,并且我们从不在同时,这样最终用户就不会检测到转换。您确实需要确保关闭超时足够长,以便请求完成处理,否则它们可能会在运行中终止。