实战:ansible自动化部署nginx+keepalived+mysql负载均衡集群

一、目的

使用ansible自动化部署nginx+keepalived+mysql负载均衡集群。

二、拓扑规划

ansibletest1.png

三、详细步骤

  • 1、环境的搭建

        (1)安装ansible,同时配置私钥免密码进行通信

        (2)查看已经成功生成了一对密钥

        (3)在生成完密钥对之后将公钥上传给服务器对应用户的家目录

·

        (4)编辑ansible的hosts文件,定义后所有的主机

·

        OK,环境已经搭配好,所有主机同步下时间:

  • 2、下面来进行ansible的roles和playbook的定义:
    在/etc/ansible/roles目录下创建相关的角色目录:

说明:
files/:存储由copy或script等模块调用的文件;
tasks/:此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由main.yml进行“包含”调用;
vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
templates/:存储由template模块调用的模板文本;
meta/:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要由main.yml进行“包含”调用;
default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

下面就是添加playbook了,首先设置web:

  • 3、设置web的playbook

    (1)Tasks:任务

        (2)添加触发器:handlers

        (3)添加需要的file:

        (4)添加主剧本:

    

        检查语法没有问题:

  • 4、下面来部署前端的nginx调度起和keepalived配置:

    (1)添加task任务:

        (2)添加handlers:

        (3)在hosts列表中复制变量:

        (4)提供files文件:nginx的安装程序

        (5)在template中使用了变量:
nginx配置:

keepalived配置:

        (6)添加主剧本:

        (7)语法检测没有问题

  • 5、设置mysql:
    (1)设置mysql的task:

        (2)设置files文件

        (3)添加主剧本:

        (4)语法检查没有问题:

        mysql的ansible配置已经完成

  • 6、至此,web、nginx+keepalived、mysql的配置都已经完成,下面来依次执行剧本
    (1)来看下整个目录的结构:

        (2)执行web的playbook:

        (3)执行mysql的playbook:

        (4)执行nginx的playbook:

        

        执行完成后,下面就是验证效果的时候:

ansibletest.png

        

        激动的时刻,成功了!

中间本人遇到的问题:在每个task中的name任务中不能有过多的任务,必须要分为多个步骤进行,如此例中的copy nginx然后再yum nginx,不能写在同一个name中,否则会报错!此外,copy的模块拷贝目录时注意最后的“/” 问题。

        OK,更多文章请关注我的博客

原创文章,作者:麦德良,如若转载,请注明出处:http://www.178linux.com/57379

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1823388528@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班