轻松使用SaltStack管理成千上万台服务器(入门教程)
- 格式:doc
- 大小:62.50 KB
- 文档页数:13
salt 有哪些常用函数常用的salt 函数包括:salt\_minion、salt\_master、salt-call、salt-run、salt-ssh 以及salt-cloud 等。
这些函数在saltstack 中起到了至关重要的作用,帮助用户管理和控制他们的 IT 基础设施。
salt\_minion 是作为saltstack 中被管理的节点,它会连接到salt master 并执行 master 下发的指令。
通过 salt\_minion,用户可以远程执行命令、安装软件包、管理用户等操作,实现对节点的集中管理。
salt\_master 则是 saltstack 中的控制节点,用户通过 salt\_master 来下发指令给各个minion,并收集minion 返回的结果。
salt\_master 是整个saltstack 的中枢,负责协调各个节点的工作,实现自动化运维管理。
salt-call 是saltstack 提供的一个命令行工具,可以在salt minion 上直接执行 salt state。
通过 salt-call,用户可以快速地执行 state 文件,检查系统的配置状态,并进行必要的更改。
salt-run 提供了一系列的runner 模块,可以实现一些全局性的操作,如查看minion 的状态、执行高级操作等。
通过salt-run,用户可以更方便地管理各个 minion,并对整个 saltstack 系统进行监控和控制。
salt-ssh 是saltstack 提供的一个专门针对SSH 连接的工具,用户可以通过salt-ssh 在没有安装salt minion 的节点上执行命令,实现对这些节点的管理。
salt-ssh 的使用方式类似于salt-call,但是不需要安装 minion。
salt-cloud 则是 saltstack 提供的一个用于管理云服务器的工具,用户可以通过 salt-cloud 在多个云平台上创建、管理和销毁虚拟机实例。
⾃动化运维与Saltstack⼀、⾃动化运维介绍1、⾃动化运维产⽣背景传统的IT运维是将数据中⼼中的⽹络设备、服务器、数据库、中间件、存储、虚拟化、硬件等资源进⾏统⼀监控,当资源出现告警时,运维⼈员通过⼯具或者基于经验进⾏排查,找出问题并加以解决。
但是,随着互联⽹+时代的到来,移动互联⽹、云计算和⼤数据技术得到了⼴泛应⽤,从⽽导致企业所管理的IT架构不断扩⼤,服务器、虚拟化、存储设备的数量越来越多,⽹络也变得更加复杂,业务流程越来越繁琐,传统的运维管理也越来越⼒不从⼼。
运维的四⼤苦恼:2、运维⾃动化⾃动化运维,可实现⽇常设备监控、主动发现问题、⾃动分析定位、基于标准化流程⼯具规范化处理、通过⾃动化运维操作⼯具处理修复等功能,最终实现监管的⾃动化运维。
总结来说就是把⼈的⼯作给机器去完成,通过标准化快速分析和定位问题,将问题⾃动修复。
实现哪些⽅⾯⾃动化监控⾃动化、数据采集⾃动化、数据分析⾃动化、⽇常巡检⾃动化、设备配置⽐对⾃动化、故障定位⾃动化、故障处理⾃动化、流程处理⾃动化、⽇常备份⾃动化、系统优化⾃动化、⼤批量配置⾃动化。
3、⾃动化运维⼯具Saltstack:基于 rubby 开发,c/s 架构,⽀持多平台,可管理配置⽂件、⽤户、cron 任务、软件包、系统服务等。
分为社区版(免费)和企业版(收费),企业版⽀持图形化配置。
pupppet:基于 python 开发,c/s 架构,⽀持多平台,⽐ puppet 轻量,在远程执⾏命令时⾮常快捷,配置和使⽤⽐ puppet 容易,能实现 puppet ⼏乎所有的功能。
Ansible:更加简洁的⾃动化运维⼯具,不需要在客户端上安装 agent,基于 python 开发。
可以实现批量操作系统配置、批量程序的部署、批量运⾏命令三种运维⼯具技术特性⽐较:名称 | Puppet | SaltStack | Ansible| :-: | :-: | :-: | :-: | :-:开发语⾔ | Ruby | python | python客户端 | 有 | 有 | ⽆⼆次开发 | 不⽀持(⾃由度太低) | ⽀持 | ⽀持通信验证 | 是 | 是 | 是同学加密 | 标准SSL协议 | AES加密 | OpenSSH(点对点加密不推荐,机器压⼒⼤)平台⽀持 | AIX,BSD,HP-UX,Linux,Mac,Solaris,Windows | BSD,Linux,Mac,Solaris,Windows | AIX,BSD,HP-UX,Linux,Mac,Solaris配置⽂件格式 | Ruby语法格式 | YAML | YAMLWeb UI | 提供 | 提供 | 提供命令执⾏ | 不⽀持(配置模块可实现) | ⽀持 | ⽀持⼆、Saltstack介绍SaltStack管理⼯具允许管理员对多个操作系统创建⼀个⼀致的管理系统。
saltstack(九):saltstack配置管理—jinja模板saltstack配置管理—jinja模板Jinja2的应⽤场景:针对不同的操作系统安装软件,针对不同的cpu数量、内存等动态⽣成软件的配置⽂件,都需要Jinja2以及Grains和pillar 的辅助Jinja2是⼀个强⼤的python模板引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和⼀系列强⼤的功能。
其中最显著的⼀个是增加了沙箱执⾏功能和可选的⾃动转义功能,这对⼤多应⽤的安全性来说是⾮常重要的。
jinja模板包含变量或表达式,两种分隔符: {% ... %} 和 {{ ... }} 。
前者⽤于执⾏诸如 for 循环或赋值的语句,后者把表达式的结果打印到模板上。
需求:批量把httpd 0.0.0.0:80 改成9090端⼝或者本机IP:PORT⽅式每个主机IP都不⼀样的啊。
1.1 告诉File模块,你要使⽤jinja、指定参数lamp-install:pkg.installed:- pkgs:- httpd- php- php-pdo- php-mysqlapache-config:file.managed:- name: /etc/httpd/conf/httpd.conf- source: salt://web/files/httpd.conf- user: root- group: root- mode: 644- template: jinja- defaults :PORT: 9090- require:- pkg: lamp-installapache-auth:pkg.installed:- name: httpd-tools- require_in:- cmd: apache-authcmd.run:- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin- unless: test -f /etc/httpd/conf/htpasswd_fileapache-conf:file.recurse:- name: /etc/httpd/conf.d- source: salt://web/files/apache-conf.d- watch_in:- service: lamp-service/etc/php.ini:file.managed:- source: salt://web/files/php.ini- user: root- group: root- mode: 644- watch_in:- service: lamp-servicelamp-service:service.running:- name: httpd- enable: True- reload: True- watch:- file: apache-config1.2 模板引⽤files/httpd.conf配置⽂件引⽤如下1.3 执⾏、测试执⾏前1.4 ⽀持grains赋值lamp-install:pkg.installed:- pkgs:- httpd- php- php-pdo- php-mysqlapache-config:file.managed:- name: /etc/httpd/conf/httpd.conf- source: salt://web/files/httpd.conf- user: root- group: root- mode: 644- template: jinja- defaults :PORT: 9090IPADDR: {{ grains['fqdn_ip4'][0] }}- require:- pkg: lamp-installapache-auth:pkg.installed:- name: httpd-tools- require_in:- cmd: apache-authcmd.run:- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin - unless: test -f /etc/httpd/conf/htpasswd_fileapache-conf:file.recurse:- name: /etc/httpd/conf.d- source: salt://web/files/apache-conf.d- watch_in:- service: lamp-service/etc/php.ini:file.managed:- source: salt://web/files/php.ini- user: root- group: root- mode: 644- watch_in:- service: lamp-servicelamp-service:service.running:- name: httpd- enable: True- reload: True- watch:- file: apache-config1.5 ⽀持pillar变量例如通过pillar批量分组修改http端⼝设置好pillar分组#install.sls{% if grains['fqdn'] == 'test-tms' %}webserver: httpdhttp_port: 8081{% elif grains['fqdn'] == 'test-mall' %}webserver: nginxhttp_port: 8082{% else %}webserver: NOT-httpd-nginx{% endif %}#刷新salt 'test*' saltutil.refresh_pillar取得pillar-value分组进⾏更新#lnmp.slslamp-install:pkg.installed:- pkgs:- httpd- php- php-pdo- php-mysqlapache-config:file.managed:- name: /etc/httpd/conf/httpd.conf- source: salt://web/files/httpd.conf- user: root- group: root- mode: 644- template: jinja- defaults :PORT: {{ pillar['http_port'] }}IPADDR: {{ grains['fqdn_ip4'][0] }}- require:- pkg: lamp-installapache-auth:pkg.installed:- name: httpd-tools- require_in:- cmd: apache-authcmd.run:- name: htpasswd -bc /etc/httpd/conf/htpasswd_file admin admin - unless: test -f /etc/httpd/conf/htpasswd_fileapache-conf:file.recurse:- name: /etc/httpd/conf.d- source: salt://web/files/apache-conf.d- watch_in:- service: lamp-service/etc/php.ini:file.managed:- source: salt://web/files/php.ini- user: root- group: root- mode: 644- watch_in:- service: lamp-servicelamp-service:service.running:- name: httpd- enable: True- reload: True- watch:- file: apache-confighttp.conf变量设置测试salt -E 'test-mall|test-tms' state.sls web.lnmp。
saltstack partition模块用法
SaltStack的Partition模块主要用于管理对象操作,这也是SaltStack通过Push 的方式进行管理的入口。
具体来说,我们日常简单的执行命令、查看包安装情况、查看服务运行情况等工作都是通过SaltStack的Partition模块来实现的。
当安装好Master和Minion包后,系统上会安装很多Module,可以通过以下命令查看支持的所有Module列表:
```bash
salt 'node1' sys.list_modules
```
其中,node1是Minion节点的名字,你可以根据实际情况替换。
使用Partition模块时,你需要根据实际需求选择合适的Module,并按照Module的文档或说明进行操作。
例如,如果你想通过SaltStack的Partition模块来安装一个软件包,你可以使用pkg.install模块,具体命令如下:
```bash
salt 'node1' pkg.install 'package_name'
```
其中,node1是Minion节点的名字,package_name是你想要安装的软件包的名称。
需要注意的是,使用SaltStack的Partition模块需要具备一定的SaltStack基础知识和经验,以及对所使用的Module的深入了解。
因此,建议在使用Partition 模块之前,先熟悉SaltStack的基本概念和操作方法,并仔细阅读你所使用的Module的文档或说明。
saltstack常用功能模块编写一.简介Master - 控制中心,salt命令运行和资源状态管理端Minions - 需要管理的客户端机器,会主动去连接Master端,并从Master端得到资源状态信息,同步资源管理信息States - 配置管理的指令集Modules- 包含命令行下运行的指令,和在配置文件里面使用的指令模块可以的函数可以在命令行下运行Grains - minion端的变量,静态pillar - minion端的变量,动态,可自定义highstate - 给minion永久添加状态,从sls配置文件读取到salt schedule - 自动保持客户端配置二.常用功能执行命令cmd.runSls模板state.slsPillar自定义模块三.State.sls本文主要介绍state.sls常用基础功能写法,主要包含通过sls模板实现以下几块的管理:1.用户管理2.文件管理3.目录管理4.安装包管理5.计划任务用户管理:用户管理分为创建和删除用户,分别对应user.present和user.absent,如下sls 模板,如用户不存在,则新建用户admin和admin1,并设置相关属性:[root@]# cat init.slsadmin:user.present:- shell: /bin/bash- home: /home/admin- uid: 888admin1:user.present:- uid: 1111如下则是删除用户admin:user.absent:- purge: True- force: TruePurge:为True指删除该用户家目录以及下面的文件,类似于userdel –r Force:为True指即使该用户当前在线也强制删除添加用户的模板一般用于其他sls调用,如安装mysql的sls模板可以先调用此模板新建mysql用户。
如果是临时需要新建用户,直接用cmd.run即可文件管理:文件管理主要分为文件的上传和文件附加内容文件上传管理一般通过file.managed,如下sls,即为在minion端备份gz 包之后,将gz包传到minion目录/usr/local下,并设置相关属性[root@]# cat init.sls/usr/local/nginx-2.1.2.tar.gz:file.managed:- source: salt://nginx/nginx-xxx.xxx.tar.gz- user: root- group: root- mode: 755- backup: minion- template: jinja先备份在minion端的目录/var/cache/salt/minion/file_backup下,然后上传,长期使用备份目录会增大,恢复可用salt命令恢复或者直接手动考备份文件均可file.append用于追加文件,如下,用于安装完jdk之后将环境变量追加入profile文件里面(假设jdk安装目录为下),用于jdk安装模块调用:/etc/profile:file.append:- text:- "export JAVA_HOME=/usr/local/jdk1.6.0_13"- "export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH"- "export CLASSPATH=$JAVA_HOME/lib/:$JAVA_HOME/jre/lib:$CLASSPATH"目录管理file.recurse将目录下的所有文件覆盖到目标minion目录,目录递归复制,类似于rsync,如果master端减少了文件,minion端默认不会删除,如下将本地conf目录的文件全部同步到线上conf,并设置相关属性/usr/local/nginx/conf:file.recurse:- source: salt://nginx/conf- user: root- group: root- file_mode: 644- dir_mode: 755- template: jinja- backup: minion- makedirs: True- include_empty: True- recurse:- user- group- mode以上模板注意空格调整成一致,一般缩进空2格新建目录,如新建/web/logstash目录,并设置相关属性,一般用于其他模板调用/web/logstash:file.directory:- user: web- group: web- file_mode: 644- dir_mode: 755- makedirs: True- include_empty: True- template: jinja- backup: minion包管理如下,如在linux下即调用系统yum命令安装相关包,常用于初始化环境或者其他模块调用依赖包,如nginx的pcre-devel等installpackages:test:- pkgs:- aspell- ncurses- ncurses-devel- pcre-devel- telnet- libcurl- libcurl-devel计划任务添加计划任务salt 'xxx' cron.set_job root 0 3 '*' '*' '*' "echo 'abc'" "mytest"删除计划任务salt 'xxx' cron.rm_job root "echo 'abc'“第二种方式就是写sls也可做计划任务/usr/local/test.sh >> /var/log/test.log 2>&1:cron.present:- identifier: test cron #计划任务描述,同上面的mytest- user: root- minute: '0'- hour: '4'/usr/sbin/ntpdate :cron.present:- identifier: ntpdate rsync- user: root- minute: '*/30'如下是一个完整的nginx安装模板:整个模板的功能就是讲nginx安装包通过file.managed上传到相关目录,调用cmd.run执行安装命令,调用用户管理模板新建用户,调用目录管理上传配置文件目录以及目录内部配置文件。
快速入门网页服务器设置与管理第一章:概述网页服务器网页服务器是一种用于托管和传输网页内容的软件应用程序。
它的主要功能是接收来自客户端的HTTP请求,并向客户端返回相应的HTML文档或其他资源文件。
网页服务器是构建互联网基础设施的关键组成部分,通过将网页内容提供给用户,实现了信息的快速传递与交互。
第二章:常见的网页服务器软件2.1 Apache HTTP ServerApache是最受欢迎的开源网页服务器软件之一。
它提供了丰富的功能与灵活的配置选项,可以跨多个操作系统运行。
在Apache 的配置文件中,可以设置虚拟主机、访问控制、缓存以及HTTPS 等功能。
2.2 NginxNginx是一个高性能的开源网页服务器软件。
与Apache相比,Nginx在处理静态文件和高并发请求时表现更出色。
由于其轻量级和低内存使用,Nginx往往用于负载均衡和反向代理服务器。
2.3 Microsoft IISMicrosoft Internet Information Services(IIS)是微软开发的网页服务器软件,专门为Windows操作系统设计。
IIS提供了完善的支持,包括Windows认证、FTP服务和等特性。
它是在Windows服务器环境下运行网页应用程序的首选。
第三章:网页服务器的安装与配置3.1 安装网页服务器软件根据不同的操作系统,选择相应的网页服务器软件进行下载和安装。
确保操作系统满足最低系统要求,并按照安装向导进行安装。
3.2 配置网页服务器在安装完成后,需要对网页服务器进行配置。
这包括设置监听端口、定义虚拟主机、配置访问控制和启用扩展模块等。
根据具体的网页服务器软件,可以参考相应的文档进行配置。
第四章:虚拟主机配置4.1 什么是虚拟主机虚拟主机是在一台物理服务器上托管多个网站的技术。
通过配置虚拟主机,可以将不同的域名指向不同的网站目录,实现多个网站共享同一台服务器的资源。
4.2 虚拟主机的配置步骤首先,需要在操作系统的DNS服务器或域名注册商处设置域名解析,将域名指向服务器的IP地址。
saltstack ⾼效运维salt 介绍saltstack 是由thomas Hatch 于2011年创建的⼀个开源项⽬,设计初衷是为了实现⼀个快速的远程执⾏系统。
salt 强⼤吗系统管理员⽇常会进⾏⼤量的重复性操作,例如安装软件,修改配置⽂件,创建⽤户,批量执⾏命令等等。
如果主机数量庞⼤,单靠⼈⼯维护实在让⼈难以忍受。
早期运维⼈员会根据⾃⼰的⽣产环境来写特定脚本完成⼤量重复性⼯作,这些脚本复杂且难以维护。
系统管理员⾯临的问题主要是1、系统配置管理,2、远程执⾏命令,因此诞⽣了很多开源软件,系统维护⽅⾯有fabric 、puppet 、chef 、ansible 、saltstack 等,这些软件擅长维护系统状态或⽅便的对⼤量主机进⾏批量的命令执⾏。
salt 灵活性强⼤,可以进⾏⼤规模部署,也能进⾏⼩规模的系统部署。
salt 的设计架构适⽤于任意数量的服务器,从少量本地⽹络系统到跨越数个数据中⼼,拓扑架构都是c/s 模型,配置简单。
不管是⼏台、⼏百台、⼏千台服务器,都可以使⽤salt 在⼀个中⼼节点上进⾏管控,灵活定位任意服务器⼦集来运⾏命令。
Salt 是python 编写的,⽀持⽤户通过python ⾃定义功能模块,也提供了⼤量的python API 接⼝,⽤户可以根据需要进⾏简单快速的扩展。
saltstack 的运⾏⽅式Local 本地运⾏,交付管理Master/Minion <<< 常⽤⽅式Salt SSH 不需要客户端salt 部署基本架构在安装salt 之前,先理解salt 架构中各个⾓⾊,主要区分是salt-master 和salt-minion ,顾名思义master 是中⼼控制系统,minion 是被管理的客户端。
salt 架构中的⼀种就是master > minion。
在远程执⾏系统中,salt ⽤python 通过函数调⽤完成任务。
运⾏salt 依赖包解决依赖包最简单的办法就是⽤安装包管理器,yum ⼯具服务器环境准备# 修改虚拟机ip 地址为静态地址,并且确保可上⽹pythonzeromqpyzmppycryptomsgpack-pythonyamljinja2服务器环境centos7(master)centos7(master)ip 地址192.168.178.131192.168.178.132⾝份master slave 软件包salt-master salt-minionTYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="7d4f9ede-810f-4976-a01b-250b845c99cc"DEVICE="ens33"ONBOOT="yes"IPADDR=192.168.11.131NETMASK=255.255.255.0GATEWAY=192.168.11.1DNS1=119.29.29.29TYPE="Ethernet"PROXY_METHOD="none"BROWSER_ONLY="no"BOOTPROTO="static"DEFROUTE="yes"IPV4_FAILURE_FATAL="no"IPV6INIT="yes"IPV6_AUTOCONF="yes"IPV6_DEFROUTE="yes"IPV6_FAILURE_FATAL="no"IPV6_ADDR_GEN_MODE="stable-privacy"NAME="ens33"UUID="f9fc5929-8594-466e-a041-34caee8c1e32"DEVICE="ens33"ONBOOT="yes"IPADDR=192.168.11.132NETMASK=255.255.255.0GATEWAY=192.168.11.1DNS1=119.29.29.29# Generated by NetworkManagernameserver 119.29.29.29127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.11.132 slave192.168.11.131 master# 关闭服务器安全策略关闭firewalldsystemctl disable firewalldsystemctl stop firewalld关闭iptablesiptables -F关闭selinux# 安装saltstacksalt软件包需要epel源的⽀持,那么下载EPEL的全称叫 Extra Packages for Enterprise Linux 。
勤哲服务器入门教程勤哲服务器入门教程欢迎阅读勤哲服务器入门教程!本文档旨在帮助您了解如何使用勤哲服务器,并提供详细的操作步骤和实用技巧。
第一章:服务器基础知识1.1 什么是服务器?1.2 服务器的作用和用途1.3 不同类型的服务器及其特点1.4 服务器硬件配置要求1.5 服务器操作系统选择和安装步骤第二章:勤哲服务器概述2.1 勤哲服务器的特点和优势2.2 勤哲服务器的产品线介绍2.3 勤哲服务器的购买和使用方式第三章:勤哲服务器的安装和配置3.1 勤哲服务器的物理安装步骤3.2 勤哲服务器的BIOS设置3.3 勤哲服务器的操作系统安装3.4 勤哲服务器的网络配置第四章:勤哲服务器的远程管理4.1 远程管理工具的选择和使用4.2 远程登录服务器的方法4.3 远程管理服务器的常用操作第五章:勤哲服务器的性能优化5.1 服务器性能优化的基本原理5.2 CPU、内存和磁盘优化方法5.3 网络和应用优化技巧5.4 监控和调优工具的使用第六章:勤哲服务器的数据备份与恢复6.1 数据备份的重要性和方法6.2 常用的数据备份工具和策略6.3 数据恢复的步骤和技巧第七章:勤哲服务器的安全性保护7.1 服务器安全性的意义和挑战7.2 防火墙和网络安全配置7.3 用户权限和访问控制7.4 安全审计和监控第八章:勤哲服务器的故障排除与维护8.1 服务器故障排除的基本原则8.2 常见的服务器故障和解决方法8.3 服务器硬件的维护和保养附件:1.勤哲服务器安装向导(PDF格式)2.勤哲服务器远程管理工具(压缩包)3.勤哲服务器性能优化工具(安装包)4.其他相关文档和工具注释:1.服务器:指一种基于硬件和软件的计算机设备,用于存储、管理和处理数据,并提供服务给其他设备或用户。
2.操作系统:指安装在服务器上的软件系统,用于管理、控制和协调硬件资源和应用程序。
3.远程管理工具:指可通过网络远程管理服务器的软件工具,包括远程登录、操作和监控等功能。
saltstack之⾃动化运维引⼊简介 saltstack是由thomas Hatch于2011年创建的⼀个开源项⽬,设计初衷是为了实现⼀个快速的远程执⾏系统。
早期运维⼈员会根据⾃⼰的⽣产环境来写特定脚本完成⼤量重复性⼯作,这些脚本复杂且难以维护。
系统管理员⾯临的问题主要是1、系统配置管理,2、远程执⾏命令,因此诞⽣了很多开源软件,系统维护⽅⾯有fabric、puppet、chef、ansible、saltstack等,这些软件擅长维护系统状态或⽅便的对⼤量主机进⾏批量的命令执⾏。
salt灵活性强⼤,可以进⾏⼤规模部署,也能进⾏⼩规模的系统部署。
salt的设计架构适⽤于任意数量的服务器,从少量本地⽹络系统到跨越数个数据中⼼,拓扑架构都是c/s模型,配置简单。
不管是⼏台、⼏百台、⼏千台服务器,都可以使⽤salt在⼀个中⼼节点上进⾏管控,灵活定位任意服务器⼦集来运⾏命令。
Salt是python编写的,⽀持⽤户通过python⾃定义功能模块,也提供了⼤量的python API接⼝,⽤户可以根据需要进⾏简单快速的扩展。
saltstack的运维⽅式Local 本地运⾏,交付管理Master/Minion (常⽤⽅式)Salt SSH 不需要客户端salt基本架构 在安装salt之前,先理解salt架构中各个⾓⾊,主要区分是salt-master和salt-minion,顾名思义master是中⼼控制系统,minion是被管理的客户端。
salt架构中的⼀种就是master > minion。
服务器环境准备服务器环境centos7(master)centos7(master)ip地址192.168.178.131192.168.178.132⾝份master slave软件包salt-master salt-minion关闭服务器安全策略# 关闭firewalldsystemctl disable firewalldsystemctl stop firewalld# 关闭iptablesiptables -F# 关闭selinux安装saltstack注意:salt软件包需要epel源的⽀持,如果没有安装epel源 <>有教程在 192.168.178.131 中安装salt-masteryum install salt-master -y另⼀台安装salt-minionyum install salt-minion -ysalt端⼝安装好salt之后开始配置,salt-master默认监听两个端⼝:4505 publish_port # 提供远程命令发送功能4506 ret_port # 提供认证,⽂件服务,结果收集等功能# 确保客户端可以通信服务器的此2个端⼝,保证防⽕墙允许端⼝通过。
saltstack之Salt⽂件服务器与salt-cp以及cp模块在配置管理系统中,从中⼼服务器向客户端推送⽂件是基本需求。
SaltStack使⽤内建的ZeroMQ服务器作为⽂件服务器。
⽂件服务器主要⽤于在state系统中将SLS⽂件推送到客户端,当然也可以⽤于其他⽂件的传输。
运维⼯作中,经常会有⽂件同步的情况。
我在⽇常⼯作中,由于权限限制,只能⾃⼰写程序分发⽂件。
我使⽤的是Python+paramiko+threading+Queue,paramiko⽤于远程执⾏命令或者分发⽂件,threading+Queue实现并发分发⽂件(如果是串⾏的话,效率⼗分低下)。
最近研究SaltStack时,发现有两种⽅法可以做到⽂件分发,第⼀只是使⽤SaltStack命令:salt-cp;第⼆种是使⽤SaltStack提供的:Salt⽂件服务器,这两种⽅法都可以实现⽂件分发的功能。
参考官⽹⽂档:https:///en/latest/ref/cli/salt-cp.html⼀、 salt-cp 1. salt-cp简述 salt-cp命令⽤于复制⼀个⽂件到多个minion系统中。
指定minion可以使⽤通配符、正则表达式、Grains等⽅法salt-cp '*' [ options ] SOURCE DESTsalt-cp -E '.*' [ options ] SOURCE DESTsalt-cp -G 'os:CentOS*' [ options ] SOURCE DESTminion匹配 -E ⽬标选择;表⽰以正则表达式匹配minion -G ⽬标选择表⽰使⽤minion上的Salt Graings系统的返回值来匹配特定minion -L ⽬标minion别解析成⽤逗号分隔的列表2. salt-cp ⽤例将irq.py ⽂件发送到 OS为CentOS的minion的 /usr/local⽬录下salt-cp -G ‘os:centos’ irq.py /usr/local/返回值:{‘192.168.1.223’: {‘/usr/local/irq.py’: True}} 表⽰成功将salt.doc⽂件发送到所有的minion的/usr/local⽬录下salt-cp ‘*’ salt.doc /usr/local/返回值:{‘192.168.1.223’: {‘/usr/local/salt.doc’: True}} 表⽰成功salt-cp -L ‘192.168.1.223’ install.log /usr/local/返回{‘192.168.1.223’: {‘/usr/local/install.log’: True}} 表⽰成功⼆、Salt ⽂件服务器 Salt内置了⼀个简单的⽂件服务器⽤于分发⽂件给Salt minions。
勤哲服务器入门教程勤哲服务器入门教程章节一、服务器概述1.1 服务器的定义及作用1.2 勤哲服务器的特点及优势1.3 为何选择勤哲服务器章节二、服务器选购与配置2.1 了解自身需求2.2 选择适合的服务器型号2.3 配置服务器硬件2.4 安装操作系统2.5 配置网络设置章节三、服务器管理与维护3.1 远程访问服务器3.2 安装与更新软件3.3 配置服务器安全3.4 监控服务器性能3.5 备份与恢复数据章节四、网络服务配置4.1 配置Web服务器4.2 配置FTP服务器4.3 配置邮件服务器4.4 配置数据库服务器4.5 其他常用网络服务配置章节五、安全与防护5.1 建立防火墙5.2 配置访问控制列表5.3 防止DDoS攻击5.4 配置入侵检测和防护系统5.5 定期更新服务器软件章节六、故障排除与问题解决6.1 常见服务器故障排查方法6.2 服务器性能优化6.3 解决网络连接问题6.4 处理日志及错误信息----------本文档涉及附件:1、勤哲服务器选购指南:pdf2、勤哲服务器配置手册:pdf3、勤哲服务器安全指南:docx----------法律名词及注释:1、服务器:根据《中华人民共和国网络安全法》,指提供网络存储、计算、通信等服务的设备。
2、远程访问:根据《中华人民共和国计算机信息网络国际联网管理暂行规定(试行)》,指通过网络连接到远程设备并进行管理操作的行为。
3、防火墙:根据《中华人民共和国网络安全法》,指能够监控和过滤网络流量,保护网络安全的设备或软件系统。
4、入侵检测和防护系统:根据《中华人民共和国网络安全法》,指能够发现并防范入侵行为的设备或软件系统。
----------。
saltStack安装部署1、saltStack 服务架构介绍SaltStack 是⼀种基于C/S架构的服务模式,在SaltStack架构中服务器端叫作Master,客户端叫作Minion,传统C/S架构为:客户端发送请求给服务器端,服务器端接收到请求并且处理完成后再返回给客户端。
在SaltStack架构中不仅有传统的C/S架构服务模式,⽽且有消息队列中的发布与订阅(pub/sub)服务模式。
这使得SaltStack应⽤场景更加丰富。
⽬前在实际环境中⼀般使⽤SaltStack的C/S架构进⾏配置管理。
在Master和Minion端都是以守护进程的模式运⾏,⼀直监听配置⽂件⾥⾯定义的ret_port(接受minion请求,默认端⼝号:4506)和publish_port(发布消息,默认端⼝号:4505)的端⼝。
当Minion运⾏时会⾃动连接到配置⽂件⾥⾯定义的Master地址ret_port端⼝进⾏连接认证。
默认客户端请求id是socket.getfqdn()取到的值,也可以在Minion启动之前修改Minion的id值。
2.安装部署[root@zabbix salt]# cat /etc/redhat-releaseCentOS release 6.7 (Final)安装 epel yum源在 Master 端和 Minion 端都需要安装 epel 的 yum源rpm -ivh /epel/6/x86_64/epel-release-6-8.noarch.rpm3.安装 Master 端yum -y install salt-master/etc/init.d/salt-master startStarting salt-master daemon: [确定]chkconfig salt-master onSaltStack Master 端版本号[root@SaltStack-Master ~]# salt-master --versionsalt-master 2015.5.10 (Lithium)4.安装 minion 端yum -y install salt-minionsed -i 's/#master: salt/master: 192.168.10.10/g' /etc/salt/minion # 指定 master 的ip地址/etc/init.d/salt-minion startchkconfig salt-minion onSaltStack Minion 端版本号[root@SaltStack-Minion-node01 ~]# salt-minion --versionsalt-minion 2015.5.10 (Lithium)5.C/S认证salt-key -L 查看当前需要接受的keys(master和minions都需要把服务开启)。
快速入门网络服务器配置和管理第一章:理解网络服务器网络服务器是一种实体设备或软件程序,可提供服务、资源和功能给连接到网络的客户端设备。
它可以扮演各种角色,如文件服务器、数据库服务器、Web服务器和电子邮件服务器等。
理解网络服务器的基本概念是进行配置和管理的基础。
第二章:选择适合的操作系统在配置网络服务器之前,选择适合的操作系统是至关重要的。
常见的服务器操作系统包括Windows Server、Linux和Unix等。
根据业务需求、预期的访问量和资源要求等因素,选择一个稳定、安全且可扩展的操作系统。
第三章:安装和配置服务器操作系统安装和配置服务器操作系统是配置和管理网络服务器的第一步。
首先,确保服务器硬件满足操作系统的最低要求。
然后,按照操作系统提供的说明,进行安装和初始化设置。
这包括选择语言、时区、管理员密码等。
第四章:网络设置和防火墙配置在网络服务器配置中,网络设置和防火墙的配置是必不可少的。
配置服务器的网络设置,包括为服务器分配一个唯一的IP地址、设置子网掩码和默认网关等。
同时,根据安全需求,配置防火墙规则将有助于保护服务器免受潜在的网络攻击。
第五章:服务设置和管理网络服务器的核心功能是提供各种服务。
在服务器配置和管理中,对所需服务进行设置和管理至关重要。
常见的服务器服务包括Web服务器(如Apache、Nginx)、数据库服务器(如MySQL、SQL Server)和域名系统(DNS)服务器等。
根据需要,安装和配置所需的服务,并确保它们正常运行。
第六章:安全性设置和访问控制在网络服务器的配置和管理中,确保服务器的安全性至关重要。
通过配置访问控制列表(ACL)和权限,限制对服务器的访问。
此外,定期更新服务器操作系统和应用程序,并使用防病毒软件保护服务器免受恶意软件和网络威胁。
第七章:备份和灾难恢复策略在网络服务器的配置和管理中,备份和灾难恢复策略应该是必不可少的一部分。
定期备份服务器的数据和设置,以防止数据丢失和操作失误。
目录树 引言:一个”非专职运维人员“的烦恼 Salt快速入门 1. 安装配置 2. 安装管理端(master) 3. 安装被管理端(minion) 4. 接受minion的托管请求 5. 测试 Salt的强大功能 1. 批量操作(targeting) 2. 节点分组(nodegroups) 3. 命令执行(execution) 4. 节点信息(grains) 5. 配置管理(state) 6. 小结 Salt state实例解析 1. 目录结构 2. apache/init.sls 3. ssh/init.sls 4. ssh/server.sls 5. ssh/custom-server.sls
引言:一个”非专职运维人员“的烦恼加入到某证券公司的IT部门,尽管所在的部门挂了一个“研发部”的名字,但是我发现有大概40%的时间是在做运维工作。 这来自两种情况: 1. 自主开发的应用,需要持续的改进,不断的更新、发布、部署、调整配置,这不是运维部门喜欢的状态。 2. 软件商提供的“产品”无法满足运维部门的要求:无法通过简单的 Q&A 文档保证系统的正常运行,经常需要有一定技术能力的人员解决系统运行过程中各种稀奇古怪的问题。
这种情况下只能自己做一个“非专职运维人员”,需要频繁的登录各种服务器,执行一些命令来查看状态或者更改配置(包括配置文件的变更和软件包的安装部署)。很多操作都是不断的重复,日复一日,让人厌烦。
”重复的工作应该交给程序去做“,所以我自己写过一些脚本。为了避免将脚本上传到几十台服务器并且不时进行更改,我使用Fabric来进行服务器的批量操作。
尽管避免了”批量的人工操作“,但我还是在进行”人工的批量操作“。远远没有实现自动管理。将有限的生命解放出来,投入到更有意义的编码工作是一个奔四程序员应有的追求,所以我又睁大红肿的眼睛,迷茫的搜索这个世界。
我发现了Puppet,Chef和CFEngine,但是并不满意。直到我发现了Salt,我的眼前一亮:这正是我所需要的东西。
如果说Salt有什么独特之处打动了我,那就是:
简单:可能是源于python的简约精神,Salt的安装配置和使用简单到了令人发指的地步。任何稍有经验的linux使用者可以在10分钟之内搭建一个测试环境并跑通一个例子(相比之下,puppet可能需要30--60分钟)。
高性能:Salt使用大名鼎鼎的ZeroMQ作为通讯协议,性能极高。可以在数秒钟
之内完成数据的传递 可伸缩:基于ZeroMQ通信,具备很强的扩展性;可以进行分级管理,能够管理分
布在广域网的上万台服务器。
尽管twitter、豆瓣、oracle、等著名网站的运维团队都在使用puppet,但是我相信,他们切换到salt只是一个时间问题。毕竟不是所有的人都喜欢操纵傀儡(puppet),但是谁又能离开盐(salt)呢?
关于Salt和Puppet的对比,可以参考这里,或者看看中文版。 Salt快速入门Salt的体系结构中将节点区分为: master, minion, syndic。 1. master: 老大,管理端 2. minion: 马仔,被管理端 3. syndic: 头目,对于老大来说是马仔,对于马仔来说是老大
在入门阶段,先不考虑syndic。
1. 安装配置如果将操作系统区分为: *NIX Linux Solaris HP Unix FreeBSD OS X windows
理论上来说,Salt可以安装在任何*NIX系统上,包括master和minion。除了源代码之外, 还可以通过Salt提供的安装脚本,或者PyPI进行安装。
对于Linux,尤其是企业环境中常用的RHEL,CentOS,Ubuntu,可以通过包管理器非常容易的安装master 和/或 minion。 比如: yum(需要先配置EPEL), apt(需
要增加http://debian.madduck.net/repo/库),yaourt,ports。
Mac OS X 先使用HomeBrew解决依赖包:brew install swig zmq,然后用PyPI安装:pip install salt。
对于windows,只能安装minion(windows只适合做马仔)。从官方网站下载合适的安装包。安装过程中可以指定master地址和本机名称。 安装后需要自己启动Salt服务。配置文件在C:\salt\conf\minion。
具体的各操作系统下的安装可以参考官方文档。这里为了简单,只考虑常用的RHEL/CentOS 和 windows。 在下面的例子中,使用一台RHEL/CentOS作为master, 另外一台RHEL/CentOS和一台windows 2003 Server作为 minion。
2. 安装管理端(master)# 安装EPEL,注意选择合适的版本 rpm -ivh http://mirrors.sohu.com/fedora-e ... ease-6-8.noarch.rpm yum update # 安装master yum install salt-master # 修改配置 vim /etc/salt/master # 最基本的设定服务端监听的IP(比如使用VIP做master的高可用时): # interface: 服务端监听IP # 其他配置参考[官方文
档](http://docs.saltstack.com/ref/configuration/master.html) # 启动服务(以下命令等效) salt-master -d /etc/init.d/salt-master start service salt-master start3. 安装被管理端(minion)# 安装EPEL,注意选择合适的版本
rpm -ivh http://mirrors.sohu.com/fedora-e ... ease-6-8.noarch.rpm yum update # 安装minion yum install salt-minion # 修改配置 vim /etc/salt/minion # 最基本的设定是指定master地址,以及本机标识符: # master: master的主机名或IP地址 # id: 本机标识符 # 其他配置参考[官方文
档](http://docs.saltstack.com/ref/configuration/minion.html) # 启动服务(以下命令等效) salt-minion -d /etc/init.d/salt-minion start service salt-minion start4. 接受minion的托管请求minion向master投诚后,还需要master接受才行。这个过程叫做“授信”。
Salt底层使用公钥-私钥证书来保证通信信道的安全。具体的机制可以参考ZeroMQ的相关内容。Salt已经屏蔽了底层的细节,只需要使用封装好的命令:
# 在master上运行 # 查看所有minion salt-key -L Accepted Keys: windows bond_app_server_main mac_os_vm salt-master Unaccepted Keys: minion1 minion2 Rejected Keys: #其中Unaccepted Keys是未许可的minion。可以使
用下面的命令通过认证: salt-key -a minion15. 测试安装配置好之后,首先要测试一下联通性:salt '*' test.ping。salt会列出每个认证过的minion的联通状态(true 或 false)。
再举一些例子: # 查询主机运行了多长时间 sudo salt '*' cmd.run "uptime" # 批量重启服务 salt '*' cmd.run "service httpd restart" # 让多台机器一起,使用Apache Bench进行压力测试 salt '*' cmd.run "ab -n 10 -c 2
http://www.google.com/"注意,默认情况下master和minion之间使用以下端口
进行通信: 1. 4505(publish_port): salt的消息发布系统 2. 4506(ret_port):salt客户端与服务端通信的端口 网络的设置需要保证这些端口可以访问。 Salt的强大功能上面的例子都是用Salt进行批量操作。但是Salt的功能不仅如此。
认真分析一下我的“非专职运维工作”的内容,发现可以分为以下三个方面: 1. 变更操作:根据需要对节点中某个资源的某种状态进行调整,并检验变更的结果 2. 配置管理:让上述行为变得“可管理”,支持“有关人士”对上述行为的标记、控制、识别、报告、跟踪和归档甚至审批和审计 3. 状态监控:随时掌握状态,发现异常。尽量在系统用户发现问题之前解决麻烦
Salt对上述三个方面提供了完美的支持,事实上,Salt提供的功能比我需要的还要多。下图是Salt的主要功能:
11383710700xijerc_l.jpg (123.77 KB, 下载次数: 0) 下载附件 保存到相册 2015-7-23 08:52 上传
如果想对Salt的功能和使用有一个初步的了解,最好参考官方文档:Salt Stack Walkthrough。 1. 批量操作(targeting)再回顾一下上文中的例子:
# 测试连通性 salt '*' test.ping # 查询主机运行了多长时间 sudo salt '*' cmd.run "uptime" # 批量重启服务 salt '*' cmd.run "service httpd restart" # 让多台机器一起,使用Apache Bench进行压力测试 salt '*'
cmd.run "ab -n 10 -c 2 http://www.google.com/"上面的例子都是对多个节点进行批量操作:使用通配符"'*'"对所有注册的节点进行操作。Salt支持多种方式对节点id(minion id)进行匹配。包括:
默认:通配符(globbing)) * E:正则表达式(Regular Expression) * L:列表 * N: 分组(group) * C:复合匹配