saltstack安装etcd

#################################################
###

saltstack安装etcd

#################################################

[[email protected] salt]# mkdir -p /srv/salt/etcd/files/etcd
[[email protected] salt]# cd /srv/salt/etcd/files/etcd
[[email protected]]# tar xf etcd-v3.1.14-linux-arm64.tar.gz
[[email protected]]# mv etcd-v3.1.14-linux-amd64/etcd /srv/salt/etcd/files/etcd
[[email protected]]# mv etcd-v3.1.14-linux-amd64/etcdctl /srv/salt/etcd/files/etcd
[[email protected]]# \rm -rf etcd-v3.1.14-linux-amd64 etcd-v3.1.14-linux-amd64.tar.gz

#查看下etcd目录结构
[[email protected] files]# tree /srv/salt/prod/etcd/
/srv/salt/etcd/
├── etcd-install.sls
└── files
└── etcd
├── etcd
└── etcdctl

#salt etcd主配置文件
[[email protected] etcd]# cat /srv/salt/etcd/etcd-install.sls
etcd-install:
file.recurse:

  • name: /usr/local/etcd
  • source: salt://etcd/files/etcd
    cmd.run:
  • names:
    • chmod +x /usr/local/etcd/etcd
    • chmod +x /usr/local/etcd/etcdctl
    • ln -s /usr/local/etcd/etcd /usr/local/bin/etcd
    • ln -s /usr/local/etcd/etcdctl /usr/local/bin/etcdctl

#客户端启动进程
[[email protected] etcd]# cat /usr/local/etcd/runport.sh
#!/bin/sh
nohup etcd --name atuo_scale --data-dir /data/tecd/ --listen-peer-urls ‘http://192.168.44.7:2380, http://192.168.44.7:7001‘ --listen-client-urls ‘http://192.168.44.7:2379, http://192.168.44.7:4001‘ --advertise-client-urls ‘http://192.168.44.7:2379, http://192.168.44.7:4001‘ &

#查看一下调用的端口
[[email protected] ~]# netstat -luntp|grep etcd
tcp 0 0 192.168.44.7:4001 0.0.0.0: LISTEN 21543/etcd
tcp 0 0 192.168.44.7:2379 0.0.0.0:
LISTEN 21543/etcd
tcp 0 0 192.168.44.7:2380 0.0.0.0: LISTEN 21543/etcd
tcp 0 0 192.168.44.7:7001 0.0.0.0:
LISTEN 21543/etcd

#设置一个message的key
curl -s http://192.168.44.7:2379/v2/keys/message -XPUT -d value="Hello world" |python -m json.tool

#下载message的key
curl -s http://192.168.44.7:2379/v2/keys/message |python -m json.tool

#删除message的key
curl -s http://192.168.44.7:2379/v2/keys/message -XDELETE |python -m json.tool

#设置一个message的key,60秒后自动删除
curl -s http://192.168.44.7:2379/v2/keys/message -XPUT -d value="Hello world" -d ttl=60 |python -m json.tool

[[email protected] etcd]# yum install python-pip -y
[[email protected] etcd]# pip install python-etcd

#添加如下配置文件
[[email protected] ~]# tail -6 /etc/salt/master
etcd_pillar_config:
etcd.host: 192.168.44.7
etcd.prot: 4001

ext_pillar:

  • etcd: etcd_pillar_config root=/salt/haproxy

#重启master
[[email protected] ~]# /etc/init.d/salt-master restart

#创建key web01
[[email protected] etcd]# curl -s http://192.168.44.7:2379/v2/keys/salt/haproxy/backend_www_yehaixiao_com/web01 -XPUT -d value="192.168.44.7:8080" | python -m json.tool

[[email protected] salt]# salt ‘WEB0?‘ pillar.items
WEB02:

backend_www_yehaixiao_com:
    ----------
    web01:
        192.168.44.7:8080

#修改cfg的配置文件
[[email protected] ~]# cat /srv/salt/cluster/files/haproxy-outside.cfg
global
maxconn 100000
chroot /usr/local/haproxy
uid 99
gid 99
daemon
nbproc 1
pidfile /usr/local/haproxy/logs/haproxy.pid
log 127.0.0.1 local3 info

defaults
mode http
option http-keep-alive
maxconn 100000
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

listen status
mode http
bind 0.0.0.0:8888
stats enable
stats uri /haproxy-status
stats auth haproxy:saltstack

frontend frontend_www_yehaixiao_com
bind 192.168.44.91:80
mode http
option httplog
log global
default_backend backend_www_yehaixiao_com

backend backend_www_yehaixiao_com
option forwardfor header X-REAL-IP
option httpchk HEAD / HTTP/1.0
#balance source # 根据请求源IP,建议使用
balance roundrobin # 轮询,软负载均衡基本都具备这种算法
#server WEB01 192.168.44.7:8080 check inter 2000 rise 30 fall 15
#server WEB02 192.168.44.8:8080 check inter 2000 rise 30 fall 15
{% for web,web_ip in pillar.backend_www_yehaixiao_com.iteritems() %}
server {{web}} {{web_ip}} check inter 2000 rise 30 fall 15
{% endfor %}

#修改内容支持jinja模板
[[email protected] ~]# cat /srv/salt/cluster/haproxy-outside.sls
include:

  • haproxy.haproxy-install

haproxy-service:
file.managed:

  • name: /etc/haproxy/haproxy.cfg
  • source: salt://cluster/files/haproxy-outside.cfg
  • user: root
  • group: root
  • mode: 644
  • template: jinja # 加这1行
    service.running:
  • name: haproxy
  • enable: True
  • reload: True

    - require:

    - cmd: haproxy-install

  • watch:
    • file: haproxy-service

#登录后只有web01
http://192.168.44.7:8888/haproxy-status

#创建key web02
[[email protected] etcd]# curl -s http://192.168.44.7:2379/v2/keys/salt/haproxy/backend_www_yehaixiao_com/web02 -XPUT -d value="192.168.44.8:8080" | python -m json.tool

#获取一下WEB02的pillar值
[[email protected] ~]# salt ‘WEB02‘ pillar.items
WEB02:
backend_www_yehaixiao_com:

    web01:
        192.168.44.7:8080
    web02:
        192.168.44.8:8080
zabbix-agent:
    ----------
    Zabbix_Server:
        192.168.44.81

#执行一下或重启一下客户端的haproxy服务
[[email protected] salt]# salt ‘WEB0?‘ state.sls cluster.haproxy-outside

#删除key web02
[[email protected] etcd]# curl -s http://192.168.44.7:2379/v2/keys/salt/haproxy/backend_www_yehaixiao_com/web02 -XDELETE | python -m json.tool

#获取一下WEB02的pillar值
[[email protected] ~]# salt ‘WEB02‘ pillar.items
WEB02:
backend_www_yehaixiao_com:

    web01:
        192.168.44.7:8080

#此时http://192.168.44.7:8888/haproxy-status 的状态没有变

#执行一下或重启一下客户端的haproxy服务
[[email protected] salt]# salt ‘WEB0?‘ state.sls cluster.haproxy-outside

#自动添加虚拟主机的脚本
[[email protected] cluster]# cat /srv/salt/cluster/auto_add_haproxy.sh
#!/bin/bash

MAIN_ADD_HOST=$1
create_host(){
echo ‘create host ok‘
}

deploy_service(){
ADD_HOST_PORT=‘8080‘
}

deploy_code(){
echo ‘deploy code ok‘
}

service_check(){
STATUS=$(curl -s --head http://"$ADD_HOST":"$ADD_HOST_PORT"/ |grep "200 OK")
if [ -n "$STATUS" ];then
echo ‘status check ok‘
else
echo ‘status check not ok‘
exit
fi
}

etcd_key(){
ADD_HOST=$1
curl http://192.168.44.7:2379/v2/keys/salt/haproxy/backend_www_yehaixiao_com/$ADD_HOST -XPUT -d value="192.168.44.7:$ADD_HOST_PORT"
}

sync_state(){
salt ‘WEB0?‘ state.sls cluster.haproxy-outside
}

main(){
create_host;
deploy_service;
deploy_code;
etcd_key $MAIN_ADD_HOST;
sync_state;
}

main $1

#自动添加虚拟主机的方法
[[email protected] cluster]# sh /srv/salt/cluster/auto_add_haproxy.sh web07
create host ok
deploy code ok
{"action":"set","node":{"key":"/salt/haproxy/backend_www_yehaixiao_com/web07","value":"192.168.44.7:8080","modifiedIndex":11,"createdIndex":11}}

#查询下自动添加的结果
[[email protected] salt]# salt ‘WEB0?‘ pillar.items
WEB01:

backend_www_yehaixiao_com:
    ----------
    web01:
        192.168.44.7:8080
    web02:
        192.168.44.8:8080
    web06:
        192.168.44.7:8080
    web07:
        192.168.44.7:8080

#执行一下或重启一下客户端的haproxy服务
[[email protected] salt]# salt ‘WEB0?‘ state.sls cluster.haproxy-outside

原文地址:http://blog.51cto.com/yehaixiao/2125107

时间: 2024-10-10 21:33:32

saltstack安装etcd的相关文章

saltstack安装和简单配置(一)

saltstack 安装和简单配置 在安装前,写了好多废话,都被我删除了,下面就开始搞吧. 环境: master:10.70.36.110 minion:10.70.36.103 一.安装: 现在centos下的yum源内有最新的salt-master源码包,安装的话,直接     yum -y install salt-master   #服务端         yum -y install salt-minion   #客户端 要使用yum安装,必须配置好epel源,可参考:        

Saltstack 安装

Saltstack 安装应用 master 192.168.20.156 minion 192.168.20.168 一.系统准备 [[email protected] ~]# uname -r 2.6.32-504.el6.x86_64 # salt --version salt 2016.3.3 (Boron) 1.设置关闭 selinux [[email protected] ~]# cat /etc/sysconfig/selinux |grep -v ^# SELINUX=disabl

centos系统安装saltstack安装

CentOS 5系统安装saltstack安装 最近公司有一些新需求,需要部署一些saltstack来管理部分服务器.所以最近研究了一下saltstack的安装和部署. 说实话,如果你用的是CentOS 6以上的系统的话那就不用看我这篇文章了,因为6的系统上可以直接使用epel软件源,用yum的方式来安装,只要在服务端装个salt-master,在被管理节点装个salt-minion就OK了,安装简直不能再方便了. 但是,如果要是这么简单就处理了这个问题的话我也就不用写这篇文章了,毕竟理想总是不

saltstack安装

Saltstack安装记录 在网上看人家安装saltstack总是那么简单,寂寞难耐的我也跟着凑了一下热闹,然后就试着安装,结果......不说了,看文档吧,我系统环境是centos6.x/rhel6.x 首先,安装epel源 wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -uvh epel-release-6-8.noarch.rpm Epel源安装上去了,然后直接装下salt

SaltStack安装Nginx

1. 思路整理 五步走: 整个base环境规划 工作当中,我们在使用SaltStack的时候,环境目录的规划尽量做到标准化,自己要严格要求好!这也是作为一个运维工程师的基本技能要求. 安装Nginx(依赖包) 在本文章中,我的Example使用的是源码安装,也是当前主流的安装方式!(这里会用到pkg.installed,cmd.run等多种状态管理模块) 配置管理 在安装好服务之后,我们需要对服务进行基本的配置管理,通过模板文件来进行统一管理!(会用到"file.managed",&q

Saltstack 安装使用

Saltstack是一个具备puppet与func功能为一身的集中化,轻量级的自动化运维管理工具,使用python编写,功能非常强大,可以使用EPEL快速安装.相比较puppet,安装和配置更加容易和简单. EPEL Install [[email protected] ~]# rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm ###CentOS 5.x### rpm -Uvh h

saltstack 安装配置详解

SaltStack是一个服务器基础架构集中化管理平台,具备配置管理.远程执行.监控等功能,一般可以理解为简化版的puppet和加强版的func.SaltStack基于Python语言实现,结合轻量级消息队列(ZeroMQ)与python第三方模块(Pyzmq.PyCrypto.Pyjinjia2.python-msgpack和PyYAML等)构建. 通过部署SaltStack环境,我们可以在成千上万台服务器上做到批量执行命令,根据不同业务特性进行配置集中化管理.分发文件.采集服务器数据.操作系统

saltstack安装配置

1. saltstack安装前期准备:准备两台机器,写hostname10.10.13.239  master.river.com   10.10.13.248    client.river.com server上:yum install -y epel-releaseyum install -y salt-master  salt-minion client上:yum install -y epel-releaseyum install -y salt-minion 启动server上:/e

SaltStack安装篇

一.基础介绍1.简介 salt 是一个基础平台管理工具 salt是一个配置管理系统,能够维护预定于状态的远程节点 salt是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据 2.salt的核心功能: 使命令发送到远程系统是并行的而不是串行的 使用安全加密的协议 使用最小最快的网路载荷 提高简单的编程接口 3.salt优点: saltstack是用python编写,相当于设备是轻量级别的 saltstack通讯层采用zeroMQ实现,使得它很快速 saltstack是开源的,通过pyth