10 masterless、高可用、salt执行模块开发、sydic架构
1、salt无master
官方文档: http://docs.saltstack.cn/topics/tutorials/quickstart.html
1、使用场景
1.在项目中使用salt,写一个state,salt自动帮你配置ok
2.没有master情况,使用salt,比如mac笔记本
3.本地运行state,一台服务器怎样用salt
场景: 2w台门店的电脑,网络不稳定
用master minion,一天只能连接几十台
解决:salt-call,连接一次,下发所有的计划任务,自己去跑
2、node3安装配置
node3安装salt-minion
https://www.cnblogs.com/venicid/p/11258428.html#_label1
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/repo/epel-7.repo
[root@localhost yum.repos.d]# yum clean expire-cache
[root@localhost yum.repos.d]# yum install salt-minion -y
配置salt无master模式






3、本地执行
停止minion

本地执行
# 查看帮助
[root@localhost yum.repos.d]# salt-call -he
[root@localhost yum.repos.d]# salt-call --local cmd.run w

4、执行状态

# 创建salt目录
[root@localhost yum.repos.d]# cd
[root@localhost ~]# mkdir /srv/salt
[root@localhost ~]# cd /srv/salt # 创建状态
[root@localhost salt]# vim demo.sls # 创建top
[root@localhost salt]# vim top.sls

# 执行state
[root@localhost salt]# salt-call --local state.sls demo
# top执行
[root@localhost salt]# salt-call --local state.highstate


2、slat-master高可用
官方文档 http://docs.saltstack.cn/topics/tutorials/multimaster.html
1、什么是高可用
master是单点的,万一1个挂了,启动备份的

其他配置
告诉minion是多个master的

超时时间

2、node3装master
node1为master
[root@localhost ~]# yum install salt-master -y
node2为minion
[root@linux-node2 ~]# vim /etc/salt/minion

3、数据怎么同步
数据同步要自己来做???
配置文件同步
[root@linux-node1 ~]# scp -P 22 /etc/salt/master 192.168.194.128:/etc/salt
Warning: Permanently added '192.168.194.128' (ECDSA) to the list of known hosts.
root@192.168.194.128's password:
master 100% 29KB 15.9MB/s 00:00
[root@linux-node1 ~]#
master-key同步

minion-key同步

file roots,piliar roots 同步

简便方法。搞个fs,去mount
mount,老师也是
key比较重要,官方不建议
3、salt执行模块开发
1、service模块
[root@linux-node1 ~]# ls /usr/lib/python2.7/site-packages/salt/modules/

service模块


2、cmd.retcode
[root@linux-node1 /srv/salt/base/_modules]# salt \* cmd.retcode 'touch /opt/testtesttest'
[root@linux-node1 /srv/salt/base/_modules]# salt \* cmd.retcode 'iotop -b -n 30'

3、自定义模块
路径,_modules,不能修改
[root@linux-node1 ~]# cd /srv/salt/base/
[root@linux-node1 /srv/salt/base]# mkdir _modules
[root@linux-node1 /srv/salt/base]# ll
total 8
drwxr-xr-x. 3 root root 4096 Aug 8 03:06 init
drwxr-xr-x 2 root root 6 Nov 4 22:34 _modules
-rw-r--r-- 1 root root 404 Nov 4 05:36 top.sls
drwxr-xr-x. 3 root root 37 Jul 30 09:25 web
[root@linux-node1 /srv/salt/base]# cd _modules/
创建模块
[root@linux-node1 /srv/salt/base/_modules]# vim my_disk.py
[root@linux-node1 /srv/salt/base/_modules]# cat my_disk.py
def list():
cmd = 'df -h'
ret = __salt__['cmd.run'](cmd)
return ret
同步到所有minion


master执行
[root@linux-node1 /srv/salt/base/_modules]# salt \* my_disk.list

4、syndic架构
管理上万个minion
一个master管理的minion是有限的
官网 https://docs.saltstack.com/en/latest/topics/topology/syndic.html
参考blog:https://www.cnblogs.com/kaishirenshi/p/9420790.html
http://www.ttlsa.com/saltstack/saltstack-syndic-example/
1、安装
多层syndic

node3 装master
[root@localhost ~]# yum install salt-master -y
node1 装 sydic
[root@linux-node1 ~]# yum install salt-syndic -y
2、配置
node1陈浩南配置 MasterOfMaster:node3 蒋先生
master和syndic在同一个机器,同一个配置文件
[root@linux-node1 ~]# vim /etc/salt/master

node3 蒋先生,order_master
[root@localhost ~]# vim /etc/salt/master

3、启动
node1 陈浩南

node3蒋先生

node3执行 salt-key
蒋先生node3接受陈浩南node1

这是,陈浩南node1管理下的2个minion小弟
master:注意,返回的结果是所有minion端的结果,而不是syndic端本身的结果。


syndic其实是特殊的minion
4、优化
涉及到文件的同步,不涉及到key
有点:可以创建多层级的
缺点,涉及到数据同步
master不知道自己有多少个sydic (代码设计模式中,不知道)
不是特别的完美
其他公司:
1. 用消息队列,代替syndic,agent和master中间加个消息队列。像OpenStack
2. 调优,网络稳定时候可以用
3. 做多个集群,分而治之
10 masterless、高可用、salt执行模块开发、sydic架构的更多相关文章
- 1 salt执行模块开发
saltstack自带的模块已经很多了,但是有些时候我们需要自己开发出自己的模块来满足自己的需求,那就要自己开发了,下面请看例子 创建_modules目录在file_roots下面 我们需要在file ...
- 用Kolla在阿里云部署10节点高可用OpenStack
为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...
- springcloud 入门 10 (eureka高可用)
eureka高可用: 说白了,就是加一个实例作为原实例的备份,然后一起对外提供服务.这样可以保证在一台机器宕机的时候,整个系统不会死掉.保证其继续对外服务. eureka的集群化: 服务注册中心Eur ...
- Mysql 高可用(MHA)-读写分离(Atlas)-分布式架构(Mycat)
Mysql 高可用(MHA)-读写分离(Atlas) 1. 搭建主从复制(一主两从) 1.1 准备环境 1 主库:10.0.0.51/db01 2 从库:10.0.0.52/db02,10.0.0.5 ...
- 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战
java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战 视频课程包含: ...
- Nginx模块开发与架构解析(nginx安装、配置说明)
第一章 研究nginx前的准备工作 Linux操作系统需要2.6及其以上的内核(支持epoll) 使用nginx的必备软件 Linux内核参数优化方案 安装nginx 控制nginx 第二章 ngin ...
- 《深入理解Nginx:模块开发与架构解析》(一)
第1章 研究 Nginx 前的准备工作 1.1 Nginx 是什么 Web 服务器的基本功能:基于 REST 架构风格,以统一资源描述符(URI)或者统一资源定位符(URL),作为沟通依据,通过 HT ...
- 《深入理解Nginx:模块开发与架构解析》读书笔记
1.nginx的特点:快.扩展性强.可靠性强.内存低消耗.支持高并发.热部署.开源免费 2.nginx由master进程来管理多个(CPU数)worker进程 3.配置按功能分,有4类: 1)用于调试 ...
- 快速搭建高可用 LNMP Web应用基础架构
云服务器费用:查看费用 产品详情 产品介绍 本镜像是根据Azure Resource Manager模板创建的,基于资源组下的高可用web系统,主要包括前端web负载均 ...
随机推荐
- error: audit:backlog limit exceeded
报错场景:telnet.ping.ftp都通的情况下,无法ssh服务器 原因:audit缓冲区设置过小,服务器默认缓冲区大小为320kb 解决办法:可通过auditctl -b 8192设定缓冲区大小 ...
- 2019年08月21日 服务部署笔记 请求打不到域名后某个pod上
背景: 一个小项目http+https的小项目, 需要配置域名, 因http 和 https服务共存, 所以决定域名后面挂两个不同的LVS, 80端口一个, 443端口一个. 服务框架: nginx服 ...
- Python解Leetcode: 539. Minimum Time Difference
题目描述:给定一个由时间字符组成的列表,找出任意两个时间之间最小的差值. 思路: 把给定的链表排序,并且在排序的同时把60进制的时间转化成十进制整数: 遍历排序的数组,求出两个相邻值之间的差值: 求出 ...
- 剑指offer23:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。输出Yes OR No。
1 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 2 思路和方法 二叉搜索树:二叉查找树(Bin ...
- 搭建 python 3.5+pycharm 2017.1.3+django 1.12.0 首次 将sqlite3 迁移到mysql
- bzoj 2734 集合悬殊 (状压dp)
大意: 给定$n$, 求集合{1,2,...n}的子集数, 满足若$x$在子集内, 则$2x,3x$不在子集内. 记$f(x)$为$x$除去所有因子2,3后的数, 那么对于所有$f$值相同的数可以划分 ...
- SpringBoot的数据访问
一.JDBC方式 引入starter. <dependency> <groupId>org.springframework.boot</groupId> <a ...
- @media screen媒体查询实现页面自适应布局
@media screen and (min-width:1200px){ //大于等于1200px才会进入 } @media screen and (max-width:375px) { //小 ...
- 4.性能下降原因和常见的Join查询
性能下降 SQL慢,执行时间长,等待时间长 1.查询语句写的烂 2.索引失效 单值索引失效 和 复合索引失效 3.关联查询太多join(设计缺陷或不得已的需求) 4.服务器调优及各个参数设置(缓冲.线 ...
- 【Struts2】拦截器
一.概述 二.在Struts2中使用拦截器 2.1 步骤 2.2 分析拦截器原理 2.3 关于interceptor与Filter区别: 三.案例 一.概述 介绍拦截器: struts2拦截器使用的是 ...