基于etcd加saltstack的自动化扩容

简介:

[root@linux-node1 ~]# vim /etc/salt/master                 =============>在配置文件最底部加上如下内容

etcd_pillar_config:

  etcd.host: 10.0.0.7

  etcd.port: 4001


ext_pillar:

  - etcd: etcd_pillar_config root=/salt/haproxy/


[root@linux-node1 ~]# /etc/init.d/salt-master restart

Stopping salt-master daemon:                               [确定]

Starting salt-master daemon:                               [确定]



此处设置一个key:

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node1 -XPUT -d value="10.0.0.7:8080" | python -m json.tool                

{

    "action": "set", 

    "node": {

        "createdIndex": 15, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node1", 

        "modifiedIndex": 15, 

        "value": "10.0.0.7:8080"

    }

}


获取key:

[root@linux-node1 ~]# salt '*' pillar.items  

linux-node1.example.com:

    ----------

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

linux-node2.example.com:

    ----------

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

此处没有获取到:

查看日志:

[root@linux-node1 ~]# tailf /var/log/salt/master

CommandExecutionError: (unable to import etcd, module most likely not installed)             不能导入etcd,需要安装一个依赖包


[root@linux-node1 ~]# yum install python-pip -y                                              需要安装python-pip


[root@linux-node1 ~]# pip install python-etcd                                                       安装etcd软件


[root@linux-node1 ~]# salt '*' pillar.items

linux-node1.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

linux-node2.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

此处获取到值了:

backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080


[root@linux-node1 ~]# vim /srv/salt/prod/cluster/files/haproxy-outside.cfg

配置文件最底部添加:

{% for web,web_ip in pillar.backend_www_oldboyedu_com.iteritems() -%}

server ` web ` ` web_ip ` check inter 2000 rise 30 fall 15

{% endfor %}


[root@linux-node1 ~]# vim /srv/salt/prod/cluster/haproxy-outside.sls              ====================>在文件里面指定为jinja模版

    - template: jinja


修改之后执行高级模块:

[root@linux-node1 ~]# salt '*' state.highstate


[root@linux-node1 ~]# salt '*' pillar.items                                

linux-node2.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

linux-node1.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

两个节点都获取到了key value:

backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080


例子:

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node2 -XPUT -d value="10.0.0.7:8080" | python -m json.tool 

{

    "action": "set", 

    "node": {

        "createdIndex": 16, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node2", 

        "modifiedIndex": 16, 

        "value": "10.0.0.7:8080"

    }

}

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node3 -XPUT -d value="10.0.0.7:8080" | python -m json.tool 

{

    "action": "set", 

    "node": {

        "createdIndex": 17, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node3", 

        "modifiedIndex": 17, 

        "value": "10.0.0.7:8080"

    }

}

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node4 -XPUT -d value="10.0.0.7:8080" | python -m json.tool 

{

    "action": "set", 

    "node": {

        "createdIndex": 18, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node4", 

        "modifiedIndex": 18, 

        "value": "10.0.0.7:8080"

    }

}

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node5 -XPUT -d value="10.0.0.7:8080" | python -m json.tool 

{

    "action": "set", 

    "node": {

        "createdIndex": 19, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node5", 

        "modifiedIndex": 19, 

        "value": "10.0.0.7:8080"

    }

}

[root@linux-node1 ~]# curl -s http://10.0.0.7:2379/v2/keys/salt/haproxy/backend_www_oldboyedu_com/web-node55 -XPUT -d value="10.0.0.7:8080" | python -m json.tool

{

    "action": "set", 

    "node": {

        "createdIndex": 34, 

        "key": "/salt/haproxy/backend_www_oldboyedu_com/web-node55", 

        "modifiedIndex": 34, 

        "value": "10.0.0.7:8080"

    }

}


[root@linux-node1 ~]# salt '*' state.highstate                    =================>执行高级状态


再次查看获取的数值:

[root@linux-node1 ~]# salt '*' pillar.items

linux-node1.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

        web-node2:

            10.0.0.7:8080

        web-node3:

            10.0.0.7:8080

        web-node4:

            10.0.0.7:8080

        web-node5:

            10.0.0.7:8080

        web-node55:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7

linux-node2.example.com:

    ----------

    backend_www_oldboyedu_com:

        ----------

        web-node1:

            10.0.0.7:8080

        web-node2:

            10.0.0.7:8080

        web-node3:

            10.0.0.7:8080

        web-node4:

            10.0.0.7:8080

        web-node5:

            10.0.0.7:8080

        web-node55:

            10.0.0.7:8080

    zabbix-agent:

        ----------

        Zabbix_Server:

            10.0.0.7


此时在浏览器中查看已添加了N个节点

老男孩网址:http://www.etiantian.org

qq:406564728

欢迎交流





     本文转自陈继松 51CTO博客,原文链接:http://blog.51cto.com/chenjisong/1714340,如需转载请自行联系原作者



相关文章
|
存储 消息中间件 运维
SaltStack:自动化运维的终极武器,让繁琐工作化为乌有!
【8月更文挑战第9天】SaltStack是一款强大的自动化运维工具,适用于配置管理、远程执行及云服务管理。基于Python开发,利用ZeroMQ实现高效通信。其架构包括Master(管理中心)、Minion(代理端)及Pillar(数据存储)。在Linux平台上安装简便,通过简单的配置即可实现Master与Minion间的通信。SaltStack的核心功能之一是State System,可通过YAML编写的State文件自动化配置管理任务,如软件包安装等。此外,还支持多种执行模块和精细权限控制,有效提升运维效率。
322 5
|
存储 监控 网络安全
saltStack自动化工具
saltStack自动化工具
928 7
|
存储 JSON 应用服务中间件
saltstack学习自动化
saltstack学习自动化
289 0
SaltStack自动化部署Zabbix Agent
Zabbix Agent建议在系统初始化的时候直接使用SaltStack进行自动化部署,以后的管理和变更均使用SaltStack来完成。
358 0
SaltStack自动化部署Zabbix Agent
|
Web App开发 关系型数据库 应用服务中间件
|
运维 Oracle 关系型数据库