架构图

模块化部署

系统模块:系统优化,内核参数,网络参数

功能模块:如:nginx,tomcat,

业务模块:

1.在salt-master端修改配置文件

[root@01 salt]# vim /etc/salt/master

file_roots:
base: #初始环境
- /srv/salt/base
prod: #生产环境
- /srv/salt/prod
test: #测试环境
- /srv/salt/test

  

[root@01 salt]# tree
.
├── base
│   ├── init
│   │   ├── audit.sls
│   │   ├── dns.sls
│   │   ├── env_init.sls
│   │   ├── files
│   │   │   └── resolv.conf
│   │   ├── history.sls
│   │   └── sysctl.sls
│   └── top.sls
├── base.tar.gz
├── prod
│   ├── cluster
│   │   ├── files
│   │   │   └── haproxy-outside.cfg
│   │   └── haproxy-outside.sls
│   ├── haproxy
│   │   ├── files
│   │   │   ├── haproxy-1.6.9.tar.gz
│   │   │   └── haproxy.init
│   │   └── install.sls
│   └── pkg
│   └── pkg-init.sls
└── test 10 directories, 14 files

  

2.创建目录

mkdir /srv/salt/prod/pkg    ##生产上一些包放在这
mkdir /srv/salt/prod/haproxy
mkdir /srv/salt/prod/haproxy/files #haproxy 包文件
mkdir /srv/salt/prod/cluster #安装前端后端
mkdir /srv/salt/prod/cluster/files #haproxy配置文件 3.配置salt系统环境
[root@01 base]# pwd
/srv/salt/base
[root@01 base]# cat top.sls
base:
'*':
- init.env_init #初始环境
prod: #生产环境
'wawa01': #主机名称
- cluster.haproxy-outside
'www.wawa8888.com':
- cluster.haproxy-outside

 

haproxy依赖的包,这里单独写在一个sls,有条理点

[root@01 ~]# cd /srv/salt/prod/pkg/
[root@01 pkg]# ls
pkg-init.sls
[root@01 pkg]# cat pkg-init.sls
pkg-init:
pkg.installed:
- names:
- gcc
- gcc-c++
- glibc
- make
- autoconf
- openssl
- openssl-devel

  

4.写haproxy状态文件

[root@01 haproxy]# cd /srv/salt/prod/haproxy
[root@01 haproxy]# ls
files install.sls
[root@01 haproxy]# cat install.sls
include:
- pkg.pkg-init haproxy-install:
file.managed: #两个空格
- name: /usr/local/src/haproxy-1.6.9.tar.gz #四个空格右边一个空格
- source: salt://haproxy/files/haproxy-1.6.9.tar.gz
- user: root
- group: root
- mode: 755
cmd.run:
- name: cd /usr/local/src && tar zxf haproxy-1.6.9.tar.gz && cd haproxy-1.6.9 && make TARGET=linux26 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy
- unless: test -d /usr/local/haproxy
- require:
- pkg: pkg-init
- file: haproxy-install
/etc/init.d/haproxy:
file.managed:
- source: salt://haproxy/files/haproxy.init
- user: root
- group: root
- mode: 755
- require:
- cmd: haproxy-install
cmd.run:
- name: chkconfig --add haproxy
- unless: chkconfig --list | grep haproxy
- require:
- file: /etc/init.d/haproxy net.ipv4.ip_nonlocal_bind:
sysctl.present:
- value: 1 haproxy-config-dir:
file.directory:
- name: /etc/haproxy
- user: root
- group: root
- mode: 755

  

5.初始文件修改,

haproxy-1.6.9.tar.gz  #提前放好包
[root@01 files]# ls
haproxy-1.6.9.tar.gz haproxy.init
[root@01 files]#
[root@01 files]#
[root@01 files]# grep "BIN=" haproxy.init
BIN=/usr/local/haproxy/sbin/$BASENAME

  

[root@01 cluster]# cd /srv/salt/prod/cluster
[root@01 cluster]# ls
files haproxy-outside.sls
[root@01 cluster]# cat haproxy-outside.sls
include:
- haproxy.install haproxy-service:
file.managed:
- name: /etc/haproxy/haproxy.cfg
- source: salt://cluster/files/haproxy-outside.cfg
- user: root
- group: root
- mode: 644
service.running:
- name: haproxy
- enable: True
- reload: True
- require:
- cmd: /etc/init.d/haproxy
- watch:
- file: haproxy-service

  

 

cd /srv/salt/prod/cluster/files

[root@01 files]# ls
haproxy-outside.cfg

[root@01 files]# cat 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
option http-keep-alive
maxconn 100000
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

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

frontend frontend_www_example_com
bind 192.168.1.66:80
mode http
option httplog
log global
default_backend backend_www_example_com

backend backend_www_example_com
option forwardfor header X-REAL-IP
option httpchk HEAD / HTTP/1.0
balance source
server web-node1 192.168.1.100:2222 check inter 2000 rise 30 fall 15
server web-node2 192.168.1.111:3333 check inter 2000 rise 30 fall 15

  

 重启 systemctl restart salt-master

测试 salt '*' state.highstate test=True
   高级模式执行 salt '*' state.highstate

 

SaltStack 架构自动部署 03的更多相关文章

  1. 使用gitlab+jenkins+saltstack+rsync自动部署Web应用

    转载:http://www.ithao123.cn/content-8128849.html

  2. 5分钟快速掌握Jenkins,项目一键自动部署

    5分钟快速掌握Jenkins,项目一键自动部署 目录 前言 Jenkins是什么? Jenkins环境安装搭建 Jenkins基本使用介绍 Jenkins快速构建项目,项目自动化部署 学习总结 前言 ...

  3. spring boot 自动部署方案

    现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方案就是比较传统的自动部署方案. 1.为什么需要自动部署 基于微服务的架构,自动部署显得非常重要.因为每 ...

  4. Windows 2003】利用域&&组策略自动部署软件

    Windows 2003]利用域&&组策略自动部署软件 转自 http://hi.baidu.com/qu6zhi/item/4c0fa100dc768613cc34ead0 ==== ...

  5. Python Fabric远程自动部署简介

    Fabric是一个Python(2.5-2.7)库,用于简化使用SSH的应用程序部署或系统管理任务. 它提供的操作包括:执行本地或远程shell命令,上传/下载文件,以及其他辅助功能,如提示用户输入. ...

  6. Java代码自动部署

    注:本文来源于<it小熊> [ ①Java代码自动部署-总结简介] 代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节.对于Java开发者来说,Java ...

  7. .NET Core 微服务架构-Docker部署

    本文主要介绍通过Docker来部署通过.NET Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(ASP.NET C ...

  8. Jenkins spring boot 自动部署方案

    原文地址:http://www.cnblogs.com/skyblog/p/5632869.html 现在主流的自动部署方案大都是基于Docker的了,但传统的自动部署方案比较适合中小型公司,下面的方 ...

  9. Ambari?自动部署Hadoop集群

    自动部署?Ambari Ambari 跟 Hadoop 等开源软件一样,也是 Apache Software Foundation 中的一个项目,并且是顶级项目.就 Ambari 的作用来说,就是创建 ...

随机推荐

  1. (转)Java中使用正则表达式的一个简单例子及常用正则分享

    转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...

  2. 树莓派.安装系统+Node.js+MongoDB系列环境

    1.先去树莓派官网下载最新的ROM https://www.raspberrypi.org/downloads/raspbian/ 这里选的是: RASPBIAN JESSIE WITH DESKTO ...

  3. web项目生成war包的问题

    今天面试一家公司,问我生成war包的命令是什么? 当时没明白,就说自己用的eclipse直接右键 export --->war 完了重启tomcat(第一种) 好久没用maven了.回来一查才明 ...

  4. MySQL索引(2)

    一.索引基础 1. B-Tree索引 <1> 所有的值都是按顺序存储的,并且每一个叶子页到根的距离相同. <2> 顺序组织存储,很适合查找范围数据,效率会非常高. <3& ...

  5. unity客户端基本框架(转载)

    框架概述: 基础系统的框架搭建,其中包括: UI框架(NGUI + MVC) 消息管理(Advanced CSharp Messenger) 网络层框架(Socket + Protobuf ) 表格数 ...

  6. C++获取本机IP等信息

    运行环境:VS2008,win7,代码来源于MSDN,相关函数可以查看MSDN中的函数定义.. 代码如下: #include <winsock2.h> #include <ws2tc ...

  7. 网络拓展知识 ACL NAT IPv6

    第1章 ACL 访问控制列表 访问控制表(”位代表精确匹配,而“1“位代表不许匹配. 例如路由器EIGRP的配置中: RouterA(config)#router eigrp 100 RouterA( ...

  8. linux中的权限

    第1章 显示或设置网络相关信息 1.1 ip address 与ifconfig 类似 [root@znix ~]# ip address 1: lo: <LOOPBACK,UP,LOWER_U ...

  9. JS外链

    <script type=”text/javascript” src=”example.js”></script>   外链的javascript都有一个.js的后缀,但是这并 ...

  10. WPF TextBox按字节长度限制输入

    前两天做一个项目的时候,由于页面没有限制TextBox的输入长度,所以,后台直接报错了,超出数据库最大的长度. 数据库的长度是按照字节来计算的,而且不同的编码格式,汉字占用的字节长度又不相同,比如,我 ...