千家信息网

使用GlobalSSH加速Ansible外部署效率步骤解说

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,今天小编就为大家带来一篇使用GlobalSSH加速Ansible外部署效率步骤解说的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。什么是AnsibleAnsible是一个简单
千家信息网最后更新 2025年01月24日使用GlobalSSH加速Ansible外部署效率步骤解说

今天小编就为大家带来一篇使用GlobalSSH加速Ansible外部署效率步骤解说的文章。小编觉得挺不错的,为此分享给大家做个参考。一起跟随小编过来看看吧。

什么是Ansible
Ansible是一个简单高效、无Agent架构的自动化编排、部署及配置管理工具,通过SSH协议实现远程节点和管理节点之间的通信。

Ansible的目的是简化大量复杂重复的运维工作, 以精简的技术思路建立公司内统一的自动化文化。无Agent的架构使其比其他工具更显简单,基于SSH可以做到的事Ansible都可以做的更好,超高的易用度使其可以简单集成到现有体系之中,因而被广泛使用。

UCloud Ansible使用场景
UCloud内部也大量使用到了Ansible。比如,机×××品部署系统,通过Ansible实现了部署效率的极大提升,目前已经成为UCloud机房部署的重要工具。又如,现网大规模灰度发布系统,通过集成Ansible的基础API和Callback功能,很好的解决了灰度发布、回滚、控制等难题,该系统已经在线上稳定运行3年以上,完成相关灰度发布任务上万个。

下面将详细介绍Ansible在机×××品部署系统中的使用,相信对有多机房部署需求的读者会有帮助。

海外多机房部署
我们基于Ansible集中式地批量部署和管理服务,集中式管理中心位于北京/上海机房。当海外节点(如拉各斯、胡志明等)需要建设时,通过Ansible来远程部署云产品及内部服务。部分云产品是基于UCloud云主机作为IaaS层搭建的,所以也是通过SSH连到对应的海外云主机进行操作。

这和一般用户的使用场景有很多相似之处,无论其是自建IDC或用了公有云,甚至多云部署来同时管理不同云上的服务器,都有类似批量部署的需要。

海外部署有个额外的痛点,就是部署效率的问题。Ansible使用SSH协议进行通信,SSH通道的创建和通信速度都较慢。当需要通过外网管理,而网络环境较差或带宽不足的情况下,执行时间基本上无法忍耐,体现在用Ansible部署时,经常会出现卡顿、连接失败、传输速度较慢等现象,使用Copy模块传输稍大的代码包/镜像文件时基本上要等到花儿都谢了。

我们的解决方法,是把UCloud的 PaaS产品GlobalSSH,集成进Ansible,用于提高跨国远程管理服务器效率。

GlobalSSH
GlobalSSH为了保障海外数据中心的运维而推出,采用了UCloud众多IaaS产品如ULB4(四层负载均衡)、UDPN(洲际内网互联、0丢包)及高包量云主机,引入智能DNS服务以提供就近接入的能力。网络转发基于成熟稳定的GRE、NAT技术,支持TCP端口(除80、443)四层转发。

Ansible Playbook方式部署
我们将GlobalSSH集成到Ansible,做一个简单的软件包拷贝及安装,步骤如下所示。

1)首先,我们通过UCloud API或控制台在北京二和拉各斯(尼日利亚)各创建一台云主机,带宽为1Mb,其中拉各斯机房会自动开启GlobalSSH功能(所有UCloud海外机房均会自动开启),如下图所示:

2)准备一个简单的Ansible Playbook,分别完成3个步骤:gather facts、copy代码包以及yum安装代码。相关的playbook如下所示:

--- - hosts: all tasks: - name: copy test copy: src=/data/MySQL-devel-5.6.41-1.el6.x86_64.rpm dest=/data/test - name: install mysql-devel yum: name=/data/MySQL-devel-5.6.41-1.el6.x86_64.rpm state=present
3)准备一个hosts文件,用于配置GlobalSSH所生成的域名。Ansible在对GlobalSSH的支持上非常简单,只要在主机变量里面添加 ansible_ssh_host=xxx.xxx.xxx.xxx.ipssh.net即可。我们的机房部署系统会结合Ansible的Dynamic Inventory功能,直接在生成的inventory中将GlobalSSH的加速域名加到ansible_ssh_host变量中了,使用起来也是非常容易的,如下所示。

[root@10-10-83-122 ~]# cat hosts_nrly [all] 152.32.140.39 ansible_ssh_pass=example [root@10-10-83-122 ~]# cat hosts_nrly_1 [all] 152.32.140.39 ansible_ssh_pass=example ansible_ssh_host=152.32.140.39.ipssh.net
4)使用ansible-playbook命令执行该playbook,任务完成。

测试对比
前面提到,GlobalSSH大幅提高了我们海外部署的效率。可以通过另写一个无GlobalSSH加速的Playbook,来测试一下具体的加速效果。

无GlobalSSH的Playbook写起来比较简单,和上文基本类似,区别在第三步的hosts文件里不使用加速域名,而是直接填写原有的外网IP地址。

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

测试命令:

time for i in seq 1 10; do ansible-playbook -i hosts_nrly test_playbook.yml; done time for i in seq 1 10; do ansible-playbook -i hosts_nrly_1 test_playbook.yml; done
最终的结果如下所示,可以看到在简单的Ansible Playbook部署中, 经过GlobalSSH加速后的效果提升了32.23%.

Ansible Ad-hoc方式
GlobalSSH在低速的带宽下可以提升整个网络传输的稳定性和速度,尤其是对RTT (Round-Trip Time)往返延迟的提升,更是有着外网弹性IP所不具备的速度优势。 因此我们认为它对Ansible Ad-hoc方式也有很大帮助。

运维人员经常会用Ad-hoc方式,它类似pssh,却支持Ansible所有的module语法,通常的使用场景是批量执行命令并查看回显结果。为了验证假设,我们对Ad-hoc方式也做了类似测试,发现GlobalSSH后的优化效果更明显,优化速度超过50%,详细结果如下所示。

测试命令:

time for i in seq 1 10; do ansible -i hosts_nrly all -m shell -a "cat /var/log/messages"; done time for i in seq 1 10; do ansible -i hosts_nrly_1 all -m shell -a "cat /var/log/messages"; done

测试结果:

总结
Ansible是被大量使用的DevOps工具,我们在使用中根据需要,将GlobalSSH很容易地集成其中,避免了服务器部署中SSH卡顿造成的不良影响。

看完上诉内容,你们掌握使用GlobalSSH加速Ansible外部署效率的方法了吗?如果想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

测试 机房 管理 效率 服务 主机 方式 系统 结果 速度 产品 命令 工具 步骤 代码 功能 场景 域名 带宽 效果 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中国网络安全事件分析 预防网络安全论文 组织机构权限数据库设计 修改远程服务器密码 网络服务器配置与管理视频课程 重庆市数据库证书 超星一直显示服务器繁忙 软件开发原型模型 读取数据库的方法 apache 服务器安全吗 计算机网络技术与应用学院专业 数据库会自动保存回车吗 台州财务软件开发怎么选 广州韶华网络技术有限公司 如何才能成功登录游戏服务器 医院计算机信息网络安全管理制度 嵌入式软件开发为什么出差 网络安全产品市场推广计划 科技核心数据库在哪里下载 怎样维护数据库的安全性 网络安全与个人价值 室内高尔夫软件开发 车载网络技术 课程标准 高中信息技术建立数据库 光荣使命老是连接服务器超时 计算机网络技术专题作业 教科版网络技术应用教学设计 崩三哪个服务器最好 客户端向服务器发送http请求 怎样维护数据库的安全性
0