服务优化-ansible

Ansible 配置文件详解

常用参数详解:

[defaults]通用默认配置段;
inventory = /etc/ansible/hosts被控端 IP 或者 DNS 列表;
library = /usr/share/my_modules/Ansible 默认搜寻模块的位置;
remote_tmp = $HOME/.ansible/tmpAnsible 远程执行临时文件;
pattern = *对所有主机通信;
forks = 5并行进程数;
poll_interval = 15回频率或轮训间隔时间;
sudo_user = rootsudo 远程执行用户名;
ask_sudo_pass = True使用 sudo,是否需要输入密码;
ask_pass = True是否需要输入密码;
transport = smart通信机制;
remote_port = 22远程 SSH 端口;
module_lang = C模块和系统之间通信的语言;
gathering = implicit控制默认 facts 收集(远程系统变量);
roles_path= /etc/ansible/roles用于 playbook 搜索 Ansible roles;
host_key_checking = False检查远程主机密钥;
#sudo_exe = sudosudo 远程执行命令;
#sudo_flags = -H传递 sudo 之外的参数;
timeout = 10 SSH超时时间;
remote_user = root远程登陆用户名;
log_path = /var/log/ansible.log日志文件存放路径;
module_name = commandAnsible 命令执行默认的模块;
#executable = /bin/sh执行的 Shell 环境,用户 Shell 模块;
#hash_behaviour = replace特定的优先级覆盖变量;
#jinja2_extensions允许开启 Jinja2 拓展模块;
#private_key_file = /path/to/file私钥文件存储位置;
#display_skipped_hosts = True显示任何跳过任务的状态;
#system_warnings = True禁用系统运行 ansible 潜在问题警告;
#deprecation_warnings = TruePlaybook 输出禁用“不建议使用”警告;
#command_warnings = Falsecommand 模块 Ansible 默认发出警告;
#nocolor = 1输出带上颜色区别,开启/关闭:0/1;
pipelining = False开启 pipe SSH 通道优化;
[accelerate]accelerate 缓存加速。
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
accelerate_daemon_timeout = 30
accelerate_multi_key = yes

Ansible 性能调优      

Ansible 企业实战环境中,如果管理的服务器越来越多,Ansibe 执行效率会变得比较慢,可以通过优化 Ansible 提供工作效率,由于 Ansible 基于 SSH 协议通信,SSH 连接慢会导致整个基于 Ansible 执行变得缓慢,也需要对 Openssh 进行优化,具体优化的方法如下:  

(1) Ansible SSH 关闭秘钥检测

默认以 SSH 登录远程客户端服务器,会检查远程主机的公钥(public key),并将该主机的公钥记录在~/.ssh/known_hosts 文件中。下次访问相同主机时,OpenSSH 会核对公钥,如果公钥不同,OpenSSH 会发出警告,如果公钥相同,则提示输入密码。

SSH对主机的public_key的检查等级是根据StrictHostKeyChecking变量来设定的


StrictHostKeyChecking 检查级别包括:no(不检查)、ask(询问)、yes(每次都检查)、False(关闭检查)。

Ansible 配置文件中加入如下代码,即可关闭 StrictHostKeyChecking 检查:

host_key_checking = False

(2) OpenSSH 连接优化

使用 OpenSSH 服务时,默认服务器端配置文件 UseDNS=YES 状态,该选项会导致服务器根据客户端的 IP 地址进行 DNS PTR 反向解析,得到客户端的主机名,然后根据获取到的主机名进行 DNS 正向 A 记录查询,并验证该 IP 是否与原始 IP 一致。关闭 DNS 解析代码如下:

sed -i '/^GSSAPI/s/yes/no/g; /UseDNS/d; /Protocol/aUseDNS no' /etc/ssh/sshd_config
/etc/init.d/sshd restart

(3) SSH pipelining 加速 Ansible

SSH pipelining 是一个加速 Ansible 执行速度的简单方法,SSH pipelining 默认是关闭的,关闭是为了兼容不同的 sudo 配置,主要是 requiretty 选项。

如果不使用 Sudo 建议开启该选项,打开此选项可以减少 Ansible 执行没有文件传输时,SSH 在被控机器上执行任务的连接数。使用 Sudo 操作的时候, 必须在所有被管理的主机上将配置文件/etc/sudoers 中 requiretty 选项禁用。

sed -i '/^pipelining/s/False/True/g' /etc/ansible/ansible.cfg

(4)Ansible Facts 缓存优化

Ansible-playbook 在执行过程中,默认会执行 Gather facts,如果不需要获取客户端的 fact 数据的话,可以关闭获取 fact 数据功能,关闭之后可以加快 ansible-playbook的执行效率。如需关闭 fact 功能,在 playbook yaml 文件中加入如下代码即可:

gather_facts: nogather_facts: no

Ansible facts 组件主要用于收集客户端设备的基础静态信息,这些信息可以在做配置管理的时候方便引用。Facts 信息直接当做 Ansible Playbook 变量信息进行引用,通过定制 facts 以便收集我们想要的信息,同时可以通过 Facter 和 Ohai 来拓展 facts 信息,也可以将 facts 信息存入 Redis 缓存中,如下为 Facts 使用 Redis 缓存的步骤:

在配置文件/etc/ansible/ansible.cfg 中 defaluts 段中加入代码,如果 redis 密码为 admin,则开启 admin 密码行:

# yum install -y python-pip
# pip install redis==3.0.0
gathering = smart
fact_caching = redis
fact_caching_timeout = 86400
fact_caching_connection = localhost:6379
#fact_caching_connection = localhost:6379:0:admin

也可以使用json来缓存信息:

fact_caching = jsonfile
fact_caching_timeout = 86400
fact_caching_connection = /tmp

要加速kolla-ansible的部署速度,可以考虑以下方法: 1. 使用本地镜像源:可以通过配置kolla-ansible使用本地镜像源来加快下载速度。可以将镜像源配置为本地的镜像服务器或者使用加速器来提供快速访问速度。 2. 使用缓存:在部署之前,可以使用镜像缓存工具来预先下载并缓存所需的镜像。这样可以避免在部署过程中每次都要下载镜像,从而加快部署速度。可以使用工具如Docker的镜像缓存或者第三方工具如Container Registry(容器镜像仓库)来实现。 3. 并行处理:kolla-ansible支持并行处理,在部署过程中可以同时处理多个任务,从而加快部署速度。可以通过配置kolla-ansible的并行度参数来增加并行处理的任务数,以提高效率。 4. 优化网络连接:确保网络连接畅通,避免网络延迟或丢包等问题,以确保在部署过程中能够快速下载所需的文件和镜像。 5. 使用高性能硬件:如果可能的话,使用高性能的硬件设备和网络设备可以提高kolla-ansible的部署速度。例如,使用高速网络设备、SSD硬盘等可以提升性能。 需要注意的是,加速部署速度可能会增加系统资源的使用和网络负载,请根据实际情况选择合适的加速方法,并确保在加速过程中不会影响到系统的稳定性和可靠性。 :https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html :kolla 要实现 openetack 部署总体上分为两步,第一步是制作 docker 镜像,第二步是编排部署。因此,kolla 项目又被分为两个小项目:kolla、kolla-ansible 。 :(1)检查multinode配置是否正确,实现ping通各个主机 ansible -i /etc/kolla/multinode all -m ping
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值