Saltstack_实战指南01_系统规划
1. 实战项目GitHub地址
之前《Saltstack_使用指南》详细讲解了saltstack的使用。那么从这节开始实战讲解,当然不会再像之前那样详细说明了。只是讲一些系统规划之类的信息。
具体的项目代码请参见GitHub。
该项目已经放在了GitHub上,地址如下:
https://github.com/zhanglianghhh/salt-example-lnmp

2. 主机规划

说明:
上述的salt03-web、salt04-web、salt05-web、salt150-master没有内网地址。但如果为了方便省事儿,你也可以给这些机器添加外网地址,这样就不需要网关服务器,直接就可以访问公网了。
2.1. 内网机器通过网关服务器访问公网
实现salt03-web、salt04-web、salt05-web、salt150-master通过网关服务器GateWay00,达到访问公网的目的。
前提保证上述所有机器内网都是同一网段,相互之间可以正常通信。
参见博文:《VMware 实现 iptables NAT及端口映射》
网关机器开启linux的转发功能
[root@gateway01 ~]# tail /etc/sysctl.conf # 添加如下内容
…………
net.ipv4.ip_forward =
[root@gateway01 ~]# sysctl -p # 生效
网关机器iptables操作
# 将FORWARD链的策略设置为DROP,这样做的目的是做到对内网ip的控制,你允许哪一个访问internet就可以增加一个规则,不在规则中的ip将无法访问internet。
iptables -P FORWARD DROP
# 这条规则规定允许任何地址到任何地址的确认包和关联包通过。一定要加这一条,否则你只允许lan IP访问没有用。
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 这条规则做了一个SNAT,也就是源地址转换,将来自172.16.1./24的地址转换为10.0.0.。
iptables -t nat -A POSTROUTING -s 172.16.1.0/ -j SNAT --to 10.0.0.15
# 允许该网段访问
iptables -A FORWARD -s 172.16.1.0/ -j ACCEPT
# 保存iptables规则
iptables-save > /etc/sysconfig/iptables
最终iptables信息
[root@GateWay00 ~]# iptables -nL
Chain INPUT (policy ACCEPT)
target prot opt source destination Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/ 0.0.0.0/ state RELATED,ESTABLISHED
ACCEPT all -- 172.16.1.0/ 0.0.0.0/ Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@GateWay00 ~]#
[root@GateWay00 ~]# iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination Chain INPUT (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
SNAT all -- 172.16.1.0/ 0.0.0.0/ to:10.0.0.15
3. 系统架构

3.1. 重要说明
生产实践环境中:数据库监控单独一套,做到告警去重。
原因:其他告警可能是因为数据库有问题造成的。
多数情况数据库是单独部署,可以不用 salt 进行部署 【如果量大,那么可以在第一次进行初始化部署】
本次实战为了完整性,对数据库采取了 salt 方式部署。
3.2. 涉及机器hosts文件修改
salt150-master、salt01-haproxy、salt02-haproxy、salt03-web、salt04-web、salt05-web 机器的hosts文件都追加如下信息。
这样主机名相互之间可以解析。
[root@salt100 ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
:: localhost localhost.localdomain localhost6 localhost6.localdomain6 172.16.1.111 salt01-haproxy
172.16.1.112 salt02-haproxy
172.16.1.113 salt03-web
172.16.1.114 salt04-web
172.16.1.115 salt05-web
172.16.1.150 salt150-master
说明:生产优先采用hostname通信,这样后期维护、迁移方便。
4. 所有主机创建yun用户
后期所有的软件都安装在 /app/ 目录下。
# 使用一个专门的用户,避免直接使用root用户
# 添加用户、指定家目录、用户id并指定用户密码
# sudo提权
# 让其它普通用户可以进入该目录查看信息
useradd -u -d /app yun && echo '' | /usr/bin/passwd --stdin yun
echo "yun ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
chmod /app/
5. 在本地Windows 机器的hosts 文件追加信息
作用:模拟通过 DNS 解析访问网站。
# 文件路径:C:\Windows\System32\drivers\etc\hosts
# 追加信息如下
# SaltStack 实战 其中salt00-keepalived为VIP
10.0.0.110 salt00-keepalived
172.16.1.111 salt01-haproxy
172.16.1.112 salt02-haproxy
172.16.1.113 salt03-web
172.16.1.114 salt04-web
172.16.1.115 salt05-web
172.16.1.150 salt150-master
6. salt 部署注意事项
具体部署步骤请参见:《Saltstack_使用指南01_部署》
6.1. master 端配置文件修改并重启
[root@salt150-master ~]# vim /etc/salt/master
………………
# Allow minions to push files to the master. This is disabled by default, for
# security purposes.
#file_recv: False
# 允许minion向master推送文件,默认不允许
file_recv: True
………………
#file_roots:
# base:
# - /srv/salt
# 添加如下配置
file_roots:
base:
- /srv/salt/base
prod:
- /srv/salt/prod
busi:
- /srv/salt/busi
[root@salt150-master ~]# systemctl restart salt-master.service # 重启 master 服务
6.2. minion端配置文件修改并重启
所有机器都操作
[root@salt150-master salt]# pwd
/etc/salt
[root@salt150-master salt]# vim /etc/salt/minion
………………
# 可以是IP或者hostname
# 如果是hostname那么必须能够解析【最佳实践配置为 主机名】
master: salt150-master
………………
# Explicitly declare the id for this minion to use, if left commented the id
# will be the hostname as returned by the python call: socket.getfqdn()
# Since salt uses detached ids it is possible to run multiple minions on the
# same machine but with different ids, this can be useful for salt compute
# clusters.
# 如果id不配置,那么默认为hostname
# 如果下次要更改该配置,那么要把 /etc/salt/minion_id 也给删除掉,并重启客户端【会生成一个新的minion_id】
#id:
[root@salt150-master ~]# systemctl restart salt-minion.service # 重启服务
6.3. salt 安装完毕后记得加入开机自启动
# 服务端开机自启动
systemctl enable salt-master.service
# minion端开机自启动
systemctl enable salt-minion.service

Saltstack_实战指南01_系统规划的更多相关文章
- Saltstack_实战指南02_各主机Pillar信息指定
1. 实战项目GitHub地址 该项目已经放在了GitHub上,地址如下: https://github.com/zhanglianghhh/salt-example-lnmp 2. 主机规划 3. ...
- Saltstack_使用指南01_部署
1. 主机规划 服务器名称 操作系统版本 内网IP 外网IP(模拟) Hostname 部署模块 salt100 CentOS7.5 172.16.1.100 10.0.0.100 salt100 s ...
- Saltstack_使用指南17_salt-ssh
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- Saltstack_使用指南16_syndic
1. 主机规划 salt 版本 [root@salt100 ~]# salt --version salt (Oxygen) [root@salt100 ~]# salt-minion --versi ...
- 大数据存储:MongoDB实战指南——常见问题解答
锁粒度与并发性能怎么样? 数据库的读写并发性能与锁的粒度息息相关,不管是读操作还是写操作开始运行时,都会请求相应的锁资源,如果请求不到,操作就会被阻塞.读操作请求的是读锁,能够与其它读操作共享,但是当 ...
- 放飞App:移动产品经理实战指南
<放飞App:移动产品经理实战指南> 基本信息 原书名:App savvy:rurning ideas into iPhone and iPad Apps customers really ...
- 推荐一本书:清华出版的《Modbus软件开发实战指南》
前言: 最近在研究Modbus开发,如果只是简单的了解了一些modbus基础知识,但是不够系统和全面. 其实,modbus虽然比较简单,但是如果不注意有很多坑,特别是寄存器的位数,大小端处理,浮点数, ...
- Apache Beam实战指南 | 手把手教你玩转KafkaIO与Flink
https://mp.weixin.qq.com/s?__biz=MzU1NDA4NjU2MA==&mid=2247492538&idx=2&sn=9a2bd9fe2d7fd6 ...
- Java多线程编程实战指南(核心篇)读书笔记(五)
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/76730459冷血之心的博客) 博主准备恶补一番Java高并发编程相 ...
随机推荐
- Nuxt+Vuex初体验
小呀嘛小二郎,背着书包上学堂... 今天一个困扰了我一周时间的问题终于被我解决了,值得庆祝 在Nuxt中使用Vuex实现数据存储 首先: 在store目录下新建一个index.js文件 需要有两个组件 ...
- 非关系型数据库--redis
0.1 新单词 expire 美 /ɪk'spaɪɚ/ 到期 range 美 /rendʒ/ 范围 idle美 /'aɪdl/ 闲置的 0.2 面试题:mysql和redis和memcached区别? ...
- 第二个视频作品《[SpringCloudAlibaba]微服务之注册中心nacos》上线了
1.场景描述 第二个视频作品出炉了,<[SpringCloudAlibaba]微服务之注册中心nacos>上线了,有需要的朋友可以直接点击链接观看.(如需购买,请通过本文链接购买) 2. ...
- Css里的box-shadow的值分别代表什么
以下为例: box-shadow:1px 2px 3px 4px color inset; 1px:表示沿x轴的正方向的长度(如果是负数,则为沿x轴的负方向的长度); 2px:表示沿y轴的正方向的长度 ...
- ROS--自定义消息类型
一.msg 用于发布-订阅的通信方式中. 1.在包的src 中创建msg文件夹. 2.在msg文件夹中,创建.msg文件 3.编辑.msg文件 4.编辑package.xml , 添加依赖 <b ...
- 大数据-hadoop-MapReduce计算流程
MapReduce计算流程 1 首先是通过程序员所编写的MR程序通过命令行本地提交或者IDE远程提交 2 一个MR程序就是一个Job,Job信息会给Resourcemanger,向Resourcem ...
- 当Python遇上AI(一)
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.什么是学习 如果要给学习下一个定义,那么根据某百科给出的定义是——学习,是指通过阅读.听讲.思考和实践等途径获 ...
- ES6 ... 展开&收集运算符
...展开&收集运算符,也就是说他可以干两件事情,展开和收集 一:收集,顾名思义把散列东西收集到一个地方,这个地方ES6规定收集在数组中 例如:下面函数fn将传递的参数收集在arg变量中,打印 ...
- 45-管理 Machine
用 docker-machine 创建 machine 的过程很简洁,非常适合多主机环境.除此之外,Docker Machine 也提供了一些子命令方便对 machine 进行管理.其中最常用的就是无 ...
- 如何使用终端默认情况下阻止Mac应用保存到iCloud
当您保存要在Mac上的Pages,Numbers,TextEdit或其他基于云的应用程序中处理的文档时,该保存的默认位置是iCloud.尽管这对某些人或某些文档来说可能是一件好事,但您可能会厌倦每次更 ...