天天看點

基于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:

此處沒有擷取到:

檢視日志:

[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

    backend_www_oldboyedu_com:

        web-node1:

            10.0.0.7:8080

此處擷取到值了:

backend_www_oldboyedu_com:

[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                                

兩個節點都擷取到了key value:

例子:

[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 

        "createdIndex": 16, 

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

        "modifiedIndex": 16, 

[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 

        "createdIndex": 17, 

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

        "modifiedIndex": 17, 

[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 

        "createdIndex": 18, 

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

        "modifiedIndex": 18, 

[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 

        "createdIndex": 19, 

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

        "modifiedIndex": 19, 

[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

        "createdIndex": 34, 

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

        "modifiedIndex": 34, 

[root@linux-node1 ~]# salt '*' state.highstate                    =================>執行進階狀态

再次檢視擷取的數值:

        web-node2:

        web-node3:

        web-node4:

        web-node5:

        web-node55:

此時在浏覽器中檢視已添加了N個節點

qq:406564728

歡迎交流

     本文轉自陳繼松 51CTO部落格,原文連結:http://blog.51cto.com/chenjisong/1714340,如需轉載請自行聯系原作者

上一篇: netstat 指令
下一篇: tcpdump 指令

繼續閱讀