本篇文章3035字,读完约8分钟

Ansible是一个简单、高效、无代理的自动调度、部署和配置管理工具,它通过ssh协议实现远程节点和管理节点之间的通信。Ansible也广泛用于ucloud。例如,ansible大大提高了ucloud机房产品部署系统的部署效率,成为ucloud机房部署的重要工具。本文将详细介绍ansible在ucloud机房产品部署系统中的应用,相信对有多机房部署需求的读者有所帮助。

使用UCloud GlobalSSH加速Ansible海外部署效率

什么是可翻译的

Ansible是一个简单、高效、无代理的自动调度、部署和配置管理工具,它通过ssh协议实现远程节点和管理节点之间的通信。

Ansible旨在简化大量复杂且重复的操作和维护工作,并通过简化的技术理念在公司内部建立统一的自动化文化。无代理架构使它比其他工具更简单。ansible可以做任何基于ssh可以做的事情,它的高易用性使得它很容易集成到现有的系统中,所以它被广泛使用。

使用UCloud GlobalSSH加速Ansible海外部署效率


不可解释的使用场景

Ansible也广泛用于ucloud。例如,计算机房产品部署系统通过ansible极大地提高了部署效率,并已成为ucloud计算机房部署的重要工具。在另一个例子中,现有的大规模灰度发布系统通过集成ansible的基本api和回调函数解决了灰度发布、回滚和控制的问题。该系统已经在网上稳定运行了3年多,完成了数万项相关的灰度出版任务。

使用UCloud GlobalSSH加速Ansible海外部署效率

下面将详细介绍ansible在机房产品部署系统中的应用,相信对有多机房部署需求的读者有所帮助。

海外多机房部署

我们基于ansible集中部署和批量管理服务,集中管理中心位于北京/上海的机房。当海外节点(如拉各斯、胡志明等。)需要构建,云产品和内部服务可以通过ansible远程部署。一些云产品是基于ucloud云主机作为iaas层构建的,因此它们也通过ssh连接到相应的海外云主机进行操作。

使用UCloud GlobalSSH加速Ansible海外部署效率


这和一般用户的使用场景有很多相似之处。无论他们是自己构建idc,还是使用公共云,甚至以云的方式部署来同时管理不同云上的服务器,都需要类似的批量部署。

使用UCloud GlobalSSH加速Ansible海外部署效率


海外部署还有一个棘手的问题,那就是部署效率问题。Ansible使用ssh协议进行通信,建立ssh通道和通信的速度较慢。当需要通过外部网络进行管理,但网络环境较差或带宽不足时,执行时间基本无法承受,这体现在部署ansible时,经常会出现卡死、连接失败、传输速度慢等情况。当使用复制模块来传输稍微大一点的代码包/图像文件时,它基本上必须等到花朵死去。

使用UCloud GlobalSSH加速Ansible海外部署效率

我们的解决方案是将ucloud的paas产品globalssh集成到ansible中,以提高跨国远程管理服务器的效率。

globalssh

Globalssh旨在确保海外数据中心的运营和维护。它采用了ucloud的许多iaas产品,如ulb4(四层负载平衡)、udpn(洲际内部网互连、零数据包丢失)和高数据包云主机,并引入了智能dns服务,以提供就近访问的能力。网络转发基于成熟稳定的gre和nat技术,支持tcp端口的四层转发(80和443除外)。

使用UCloud GlobalSSH加速Ansible海外部署效率


Ansibleplaybook模式部署

我们将globalssh集成到ansible中,并进行简单的包复制和安装。步骤如下。

1)首先,我们通过ucloudapi或控制台在北京ii和拉各斯(尼日利亚)创建一个云主机,带宽为1mb,其中拉各斯机房将自动打开globalssh功能(所有ucloud海外机房将自动打开),如下图所示:

使用UCloud GlobalSSH加速Ansible海外部署效率


2)准备一个简单的ansibleplaybook并完成三个步骤:收集事实、复制代码包和yum安装代码。相关行动手册如下:

-hosts:all tasks:-name:copy test copy:src =/data/MySQL-devl-5 . 6 . 41-1 . El 6 . x86 _ 64 . rpm test =/data/test-name:installmysql-devl yum:name =/data/MySQL-devl-5 . 6 . 41-1 . El 6 . x86 _ 64 . rpm state = present

使用UCloud GlobalSSH加速Ansible海外部署效率

3)准备一个主机文件,用于配置全局ssh生成的域名。Ansible对全局ssh的支持非常简单,只需将ansi ble _ ssh _ host = xxx.xxx.xxx.ipssh.net添加到主机变量中。我们的机房部署系统将结合ansible的动态存储功能,在生成的清单中将globalssh的加速域名直接添加到ansible_ssh_host变量中,这也非常易于使用,如下所示。

使用UCloud GlobalSSH加速Ansible海外部署效率

[root @ 10-10-83-122 ~]# catholists _ nrly[all]152 . 32 . 140 . 39 ansi ble _ ssh _ pass =范例[root @ 10-10-83-122 ~]# catholists _ nrly _ 1[all]152 . 32 . 140 . 39 ansi ble _ ssh _ pass =范例ansi ble _ ssh _ host = 152 . 32 . 140 . 39 . ipssh . net

使用UCloud GlobalSSH加速Ansible海外部署效率

使用ansible-playbook命令执行剧本,任务完成。

测试比较

如前所述,globalssh极大地提高了我们海外部署的效率。您可以通过编写另一个没有globalssh加速的剧本来测试特定的加速效果。

不带globalssh的Playbook编写起来相对简单,基本上与上面的类似。不同之处在于,在第三步中,主机文件中不使用加速域名,而是直接填写原始外部ip地址。

使用UCloud GlobalSSH加速Ansible海外部署效率

为了防止单一测试结果的不准确性,对其进行了10次测试,取平均值进行比较。

测试命令:

timeforiin`seq110 `;doan sible-playbook-ihosts _ nrly est _ playbook . yml;donetimeforiin`seq110 `;doan sible-playbook-ihosts _ nrly _ 1 test _ playbook . yml;完成的

最终结果如下所示,可以看出,在简单的ansibleplaybook部署中,通过globalssh加速后,效果提高了32.23%。


ansiblead-ad hoc模式

Globalssh可以在低速带宽下提高整个网络传输的稳定性和速度,特别是rtt(往返时间)往返延迟,具有外部网络灵活的ip所没有的速度优势。因此,我们认为这也是非常有帮助的。

使用UCloud GlobalSSH加速Ansible海外部署效率

操作和维护人员经常使用临时模式,它类似于pssh,但支持ansible的所有模块语法。通常的使用场景是成批执行命令并查看回显结果。为了验证这一假设,我们在ad-hoc模式上进行了类似的测试,发现全局ssh后的优化效果更加明显,优化速度超过50%。具体结果如下。

使用UCloud GlobalSSH加速Ansible海外部署效率

测试命令:

timeforiin`seq110 `;doansible-ihosts _ nrly all-mshell-a & quot。cat/var/log/messages"。;donetimeforiin`seq110 `;doansible-ihosts _ nrly _ 1 all-ms hell-a & quot。cat/var/log/messages"。;完成的

使用UCloud GlobalSSH加速Ansible海外部署效率

测试结果:


摘要

Ansible是一个广泛使用的devops工具,在其中我们可以根据自己的需要轻松地集成全局ssh,从而避免了ssh在服务器部署中造成的不利影响。

标题:使用UCloud GlobalSSH加速Ansible海外部署效率

地址:http://www.hcsbodzyz.com/hcxw/2181.html