Saltstack自动化扩容

案例:当nginx的并发达到3000,并持续了一段时间时,通过自动化创建一台虚拟机,部署应用最后添加到集群提供服务:
  zabbix监控(nginx并发量)-------》action-------》创建了一台主机/docker容器-------》部署服务--------》部署应用代码-------》测试状态--------》加入到集群---------》加入监控----------》通知
简单实现上面中的某些步骤:为集群添加一个后端节点以提供服务
为了实现上面功能,这里采用salstack+etcd
安装etcd:
?
1
2
3
[root@node1 src] # tar xf etcd-v3.2.9-linux-amd64.tar.gz
cd etcd-v3.2.9-linux-amd64
cp etcd etcdctl /usr/local/bin/

 然后开启etcd集群:

  1、首先创建数据目录:mkdir /data/etcd -p

  2、开启服务:

?
1
nohup etcd --name auto_scale --data- dir /data/etcd/ --listen-peer-urls http: //192 .168.44.134:2380,http: //192 .168.44.134:7001 --listen-client-urls http: //192 .168.44.134:2379,http: //192 .168.44.134:4001 --advertise-client-urls http: //192 .168.44.134:2379,http: //192 .168.44.134:4001 &

 

?
1
2
3
4
5
[root@node1 ~] # netstat -tunlp|grep etcd
tcp        0      0 192.168.44.134:2379         0.0.0.0:*                   LISTEN      52094 /etcd         
tcp        0      0 192.168.44.134:2380         0.0.0.0:*                   LISTEN      52094 /etcd         
tcp        0      0 192.168.44.134:7001         0.0.0.0:*                   LISTEN      52094 /etcd         
tcp        0      0 192.168.44.134:4001         0.0.0.0:*                   LISTEN      52094 /etcd

 1、创建一个key/value

?
1
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/key1 -XPUT -d value="Hello world"

 2、获取创建的key/value

?
1
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www1

 3、删除创建的key/value

?
1
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/key1 -XDELETE

 或者将上面的输出结果以json格式输出:

?
1
2
3
4
5
6
7
8
9
10
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www1|python -m json.tool
{
     "action" : "get" ,
     "node" : {
         "createdIndex" : 9,
         "key" : "/salt/haproxy/backend_www/www1" ,
         "modifiedIndex" : 9,
         "value" : "192.168.44.134:8080"
     }
}

 将etcd配置在saltstack中,结合使用:

1、首先需要安装依赖包:

  yum install python-pip
  pip install python-etcd
2、将etcd配置在salt中:在master配置文件中设置
?
1
2
3
4
5
6
7
####config etcd
my_etcd_config:
   etcd.host: 192.168.44.134
   etcd.port: 4001
 
ext_pillar:
   - etcd: my_etcd_config root= /salt/haproxy

 3、重启master

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

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
[root@node1 ~] # salt '*' pillar.items
node2:
     ----------
     backend_www:
         ----------
     zabbix-agent:
         ----------
         Zabbix_Server:
             192.168.44.134
     zabbix-agent-host:
         ----------
         zabbix_host:
             node2

 现在通过添加etcd的key来增加haproxy后端的节点服务器:

1、设置etcd的key
?
1
curl -s http: //192 .168.44.134:2379 /v2/keys/salt/haproxy/backend_www/www1 -XPUT -d value= "192.168.44.134:8081" |python -m json.tool

 2、查看pillar

?
1
2
3
4
5
6
7
[root@node1 ~] # salt '*' pillar.items
node1:
     ----------
     backend_www:
         ----------
         www1:
             192.168.44.134:8081

 3、修改haproxy配置文件:vim /srv/salt/prod/cluster/files/haproxy-outside.cfg

?
1
2
3
{% for www,www_ip in pillar.backend_www.iteritems() %}
server {{ www }} {{ www_ip }} check inter 1000
{% endfor %}

 4、修改haproxy状态配置文件:vim /srv/salt/prod/cluster/haproxy-outside.sls

?
1
2
3
4
5
6
7
8
haproxy-service:
   file .managed:
     - name: /etc/haproxy/haproxy .cfg
     - source : salt: //cluster/files/haproxy-outside .cfg
     - user: root
     - group: root
     - mode: 644
     - template: jinja         新增一行,使用jinja模板,使用变量

 测试并验证:

由于etcd仅仅只是设置了一个key:
www1:192.168.44.134:8081
所以后端只有一个节点:
现在为haproxy后端新增节点www2和www3:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www2 -XPUT -d value="192.168.44.134:8080"|python -m json.tool
{
     "action" : "set" ,
     "node" : {
         "createdIndex" : 14,
         "key" : "/salt/haproxy/backend_www/www2" ,
         "modifiedIndex" : 14,
         "value" : "192.168.44.134:8080"
     }
}
[root@node1 ~] # curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www3 -XPUT -d value="192.168.44.135:8080"|python -m json.tool 
{
     "action" : "set" ,
     "node" : {
         "createdIndex" : 15,
         "key" : "/salt/haproxy/backend_www/www3" ,
         "modifiedIndex" : 15,
         "value" : "192.168.44.135:8080"
     }
}

 查看设置的pillar:

?
1
2
3
4
5
6
7
8
9
10
11
[root@node1 ~] # salt '*' pillar.items
node2:
     ----------
     backend_www:
         ----------
         www1:
             192.168.44.134:8081
         www2:
             192.168.44.134:8080
         www3:
             192.168.44.135:8080

 执行salt状态配置文件:

添加完成后,默认不会进行增加,需要执行状态配置文件(随着配置文件修改会reload服务)
salt '*' state.highstate
然后进行查看节点状态以及个数:
 
###################################################################################################

转载于:https://www.cnblogs.com/wuhg/p/10444749.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值