saltstack实现自动化扩容
[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、开启服务:
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 &
[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
[root@node1 ~]# curl -s http://192.168.44.134:2379/v2/keys/key1 -XPUT -d value="Hello world"
2、获取创建的key/value
[root@node1 ~]# curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www1
3、删除创建的key/value
[root@node1 ~]# curl -s http://192.168.44.134:2379/v2/keys/key1 -XDELETE
或者将上面的输出结果以json格式输出:
[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、首先需要安装依赖包:
####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
[root@node1 ~]# /etc/init.d/salt-master restart
结尾一直报错:

查找原因发现salt是python2.7安装的,而etcd是python2.6安装的,所以一直调用出错:

于是使用python2.7安装一遍etcd服务:
1、mv /usr/bin/python /usr/bin/python.bak
2、ln -s /usr/bin/python2.7 /usr/bin/python
3、修改/usr/bin/yum第一行为:#!/usr/bin/python2.6
4、wget https://pypi.python.org/packages/2.7/s/setuptools/setuptools-0.6c11-py2.7.egg --no-check-certificate
5、chmod +x setuptools-0.6c11-py2.7.egg
6、sh setuptools-0.6c11-py2.7.egg
7、wget https://pypi.python.org/packages/source/p/pip/pip-1.3.1.tar.gz --no-check-certificate
8、tar xf pip-1.3.1.tar.gz
9、cd pip-1.3.1
10、python setup.py install
11、/usr/bin/pip-2.7 install python-etcd
试着使用python2.7导入模块etcd,报错如下:

解决办法:
https://pypi.python.org/pypi/backports.ssl_match_hostname
tar xf backports.ssl_match_hostname-3.5.0.1.tar.gz
cd backports.ssl_match_hostname-3.5.0.1
python setup.py build
python setup.py install

然后重启salt-master服务,查看设置的pillar:

[root@node1 ~]# curl -s http://192.168.44.134:2379/v2/keys/salt/haproxy/backend_www/www1 -XDELETE
{"action":"delete","node":{"key":"/salt/haproxy/backend_www/www1","modifiedIndex":12,"createdIndex":11},"prevNode":{"key":"/salt/haproxy/backend_www/www1","value":"192.168.44.134:8080","modifiedIndex":11,"createdIndex":11}}
[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后端的节点服务器:
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
[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
{% 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
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模板,使用变量
测试并验证:
[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:
[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状态配置文件:
saltstack实现自动化扩容的更多相关文章
- saltstack自动化运维系列11基于etcd的saltstack的自动化扩容
saltstack自动化运维系列11基于etcd的saltstack的自动化扩容 自动化运维-基于etcd加saltstack的自动化扩容# tar -xf etcd-v2.2.1-linux-amd ...
- Saltstack自动化扩容
一. etcd服务的安装和使用 1.安装etcd应用: wget https://github.com/coreos/etcd/releases/download/v2.2.5/etcd-v2.2.5 ...
- saltstack之自动化运维
引入 简介 saltstack是由thomas Hatch于2011年创建的一个开源项目,设计初衷是为了实现一个快速的远程执行系统. 早期运维人员会根据自己的生产环境来写特定脚本完成大量重复性工作,这 ...
- 学习saltstack (五)
Saltstack介绍 Salt三种运行方式 1.local本地运行2.Master/Minion3.Salt ssh Salt的三大功能 a.远程执行b.配置管理(状态管理)c.云管理:阿里云,aw ...
- Redis Cluster 自动化安装,扩容和缩容
Redis Cluster 自动化安装,扩容和缩容 之前写过一篇基于python的redis集群自动化安装的实现,基于纯命令的集群实现还是相当繁琐的,因此官方提供了redis-trib.rb这个工具虽 ...
- k8s Pod 扩容和缩容
在生产环境下,在面临服务需要扩容的场景时,可以使用Deployment/RC的Scale机制来实现.Kubernetes支持对Pod的手动扩容和自动扩容. 手动扩容缩容 通过执行扩容命令,对某个dep ...
- 基于Saltstack、Artifactory打造传统模式下持续部署平台
一.持续部署 1. 现状 由于没有建立标准的持续部署流程,导致了版本管理混乱,制品管理混乱,上线持续时间长,上线测试覆盖不全面,业务流量上升后故障较多,排查复杂.运维.测试.开发人员每次版本迭代的时候 ...
- 运维知识体系v0.5
http://www.90qj.com/?post=318http://ixdba.blog.51cto.com/2895551/1751377 运维知识体系v0.5-(运维社区-赵班长出品,欢迎 ...
- Docker系列一之基础快速入门企业实战
1.1什么是LXC LXC为Linux Container的简写.Linux Container容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚 ...
随机推荐
- python中的coding的格式书写形式
# -*- coding:utf-8 -*-可以改写成以下各种形式:1,# -*- coding=utf-8 -*-2,# _*_ coding=utf-8 _*_3,# coding:utf-84 ...
- mysql 修改默认配置 提高性能
解决问题 Lost connection to MySQL server at ‘reading authorization packet’, system error: 0 通过修改 connect ...
- dbForge mysql数据库比对
Comparison选项卡,新建一个表结构比较, (将source库的表结构变化应用到target库) 下面示例中,source用positec_uat, target用positec_pro ...
- oracle导入sql文件
oracle导入sql文件: 1.进入到sql文件目录下,登录需要导入文件的用户 打开cmd,输入以下命令,进入oracle, sqlplus username/password username:需 ...
- Spring数据访问和事务
1.模型 2.解耦 3.实现 3.1 核心接口 3.2 代码分析 3.2.1 事务管理 3.2.2 数据访问 4.使用 4.1 编程模式 4.2 配置模式 4.2.1 声明式配置方式 4.2.2 注解 ...
- vue项目中批量打印二维码
前提:项目中要打印的二维码为后台返回,批量选择后,点击打印,先打开二维码预览界面,再执行打印. 以下代码中 codePicList为选中的二维码数组.重点css:page-break-after:al ...
- 有些有IP的项目,公司不至于测试不行砍项目,但是会砍项目组,把IP收回交给别的团队做(因为一旦一测数据太差,公司(投资人)会判断在二测的时候数据能提升到什么样。说白了就是历史信用问题)
作者:匿名用户链接:https://www.zhihu.com/question/309778033/answer/579761064来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...
- 入木三分学网络第一篇--VRRP协议详解第一篇(转)
因为keepalived使用了VRRP协议,所有有必要熟悉一下. 虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是解决局域网中配置静态网关时,静 ...
- MySQL索引优化案例浅析
MySQL是关系型数据库的一种,查询功能强,数据一致性高,数据安全性高,支持二级索引.但是性能比起非关系型数据库稍弱,特别是百万级以上的数据,很容易出现查询慢的现象.这时候要分析慢的原因,一般情况下是 ...
- linux定时查询mysql数据库并把结果保存到新表 然后备份数据库
脚本文件名:myshell内容如下: #!/bin/bash # mysql用户名 username="root" # mysql密码 password="root&qu ...