日常企业运维中,需要备份Linux操作系统中重要的文件和目录,例如/etc、/boot分区、重要网站数据等,在备份数据时,由于数据量非常大,需要指定高效的备份方案,以下为常用的备份数据方案: •□ 每周日进行完整备份,周一至周六使用增量备份; •□ 每周六进行完整备份,周日至周五使用增量备份。 企业备份数据的工具主要有tar、cp、rsync、scp、sersync、dd等工具。以下为基于开源tar工具实现系统数据备份方案。 tar工具手动全备份网站,-g参数指定新的快照文件
tar -g /tmp/snapshot -czvf /tmp/2018_full_system_data.tar.gz /data/sh/
tar工具手动增量备份网站,-g参数指定全备已生成的快照文件,后续增量备份基于上一个增量备份快照文件,代码如下:
tar -g /tmp/snapshot -czvf /tmp/2015_add01_system_data.tar.gz /data/sh/
tar工具全备、增量备份网站,shell脚本实现自动打包备份,编程思路如下: •□ 系统备份数据按每天存放; •□ 创建完整备份函数块; •□ 创建增量备份函数块; •□ 根据星期数判断完整或增量; •□ 将脚本加入crontab实现自动备份。
在企业生产环境中,经常会对服务器资产进行统计存档,单台服务器可以手动去统计服务器的CPU型号、内存大小、硬盘容量、网卡流量等,但如果服务器数量超过百台、千台,使用手工方式就变得非常吃力。 基于shell脚本实现自动化服务器硬件信息的收集,并将收集的内容存放在数据库,能更快、更高效地实现对服务器资产信息的管理。shell脚本实现服务器信息自动收集,编程思路如下: •□ 创建数据库和表存储服务器信息; •□ 基于shell四剑客awk、find、sed、grep获取服务器信息; •□ 将获取的信息写成SQL语句; •□ 定期对SQL数据进行备份; •□ 将脚本加入crontab实现自动备份。
企业服务器暴露在外网,每天会有大量的人使用各种用户名和密码尝试登录服务器,如果让其一直尝试,难免会猜出密码,通过开发shell脚本,可以自动将尝试登录服务器错误密码超过设定次数的IP列表加入到防火墙配置中。 shell脚本实现服务器拒绝恶意IP登录,编程思路如下: •□ 登录服务器日志/var/log/secure; •□ 检查日志中认证失败的行并打印其IP地址; •□ 将IP地址写入至防火墙; •□ 禁止该IP访问服务器SSH 22端口; •□ 将脚本加入crontab实现自动禁止恶意IP。
LAMP是目前互联网主流Web网站架构,通过源码安装、维护和管理对于单台很轻松,但如果服务器数量多,手工管理就非常困难,基于shell脚本可以更快速地维护LAMP架构。 shell脚本实现服务器LAMP一键源码安装配置,编程思路如下: •□ 脚本的功能,实现安装LAMP环境、论坛网站; •□ Apache安装配置、MySQL、PHP安装; •□ 源码LAMP整合配置; •□ 启动数据库,创建数据库并授权; •□ 重启LAMP所有服务,验证访问。
MySQL数据库服务器主要应用于与动态网站结合,存放网站必要的数据,例如订单、交易、员工表、薪资等记录,为了实现数据备份,需引入MySQL主从架构,MySQL主从架构脚本可以实现自动化安装、配置和管理。 shell脚本实现服务器MySQL一键YUM安装配置,编程思路如下: (1)MySQL主库的操作: •□ 主库上安装MySQL,设置server-id、bin-log; •□ 授权复制同步的用户,对客户端授权; •□ 确认bin-log文件名、position位置点。 (2)MySQL从库的操作: •□ 从库上安装MySQL,设置server-id; •□ changemaster指定主库和bin-log名以及position; •□ start slave启动从库I/O线程; •□ show slave status\G查看主从的状态。
企业中服务器IP地址系统通过自动化工具安装完系统,IP均是自动获取的,而服务器要求固定的静态IP,百台服务器手工去配置静态IP是不可取的,可以基于shell脚本自动修改IP、主机名等信息。 shell脚本实现服务器IP、主机名自动修改及配置,编程思路如下: •□ 静态IP修改; •□ 动态IP修改; •□ 根据IP生成主机名并配置; •□ 修改DNS域名解析。
Zabbix是一款分布式监控系统,基于C/S模式,需在服务器安装zabbix_server,在客户端安装zabbix_agent,通过shell脚本可以更快速地实现该需求。 shell脚本实现Zabbix服务器端和客户端自动安装,编程思路如下: •□ Zabbix软件的版本源码安装、路径、–enable-server、–enable-agent; •□ cp zabbix_agentd启动进程-/etc/init.d/zabbix_agentd,执行x权限; •□ 配置zabbix_agentd.conf文件,指定server IP变量; •□ 指定客户端的Hostname,可以写成客户端IP地址; •□ 启动zabbix_agentd服务,创建Zabbix user。
Nginx Web服务器的最大特点在于Nginx常被用于负载均衡、反向代理,单台Nginx服务器配置多个虚拟主机,百台服务器配置N个虚拟主机,基于shell脚本可以更加高效地配置虚拟主机及添加、管理。 shell脚本实现Nginx自动安装及虚拟主机的维护,编程思路如下: •□ 脚本指定参数v1.jfedu.net; •□ 创建v1.jfedu.net同时创建目录/var/www/v1; •□ 将Nginx虚拟主机配置定向到新的目录; •□ 重复虚拟主机不再添加。
Tomcat用于发布JSP Web页面,根据企业实际需求,会在单台服务器配置N个Tomcat实例,同时手动将Tomcat创建后的实例加入至Nginx虚拟主机中,同时重启Nginx,开发Nginx、Tomcat自动创建Tomcat实例及Nginx虚拟主机管理脚本,这能大大地减轻人工干预,实现快速地交付。 shell脚本实现Nginx自动安装、虚拟主机及自动将Tomcat加入至虚拟主机,编程思路如下: •□ 手动复制Tomcat与脚本一致目录(可自动修改); •□ 手动修改Tomcat端口为6001、7001、8001(可自动修改); •□ 脚本指定参数v1.jfedu.net; •□ 创建v1.jfedu.net Tomcat实例; •□ 修改Tomcat实例端口,保证port唯一; •□ 将Tomcat实例加入Nginx虚拟主机; •□ 重复创建Tomcat实例,端口自动增加,并加入原Nginx虚拟主机,实现负载均衡。
Docker虚拟化是目前主流的虚拟化解决方案,越来越多的企业在使用Docker轻量级虚拟化。构建、维护和管理Docker虚拟化平台是运维人员工作中非常重要的一个环节,开发Docker shell脚本可以在命令行界面快速管理和维护Docker。 shell脚本实现Docker自动安装、自动导入镜像、创建虚拟机、指定IP地址、将创建的Docker虚拟机加入Excel存档或者加入MySQL数据库,编程思路如下: •□ 基于CentOS 6.5+或者7.X YUM安装Docker; •□ Docker脚本参数指定CPU、内存、硬盘容量; •□ Docker自动检测局域网IP并赋予Docker虚拟机; •□ Docker基于pipework指定IP; •□ 将创建的Docker虚拟机信息加入至CSV(Excel)或者MySQL库。
Bind主要用于企业DNS平台的构建,而DNS用于将域名解析成IP,用户在浏览器只需输入域名,即可访问服务器IP地址的虚拟主机网站。 Bind难点在于创建各种记录,例如A记录、mail记录、反向记录、资源记录,基于shell脚本可以减轻人工的操作,节省大量的时间成本。 shell脚本实现Bind自动安装、初始化Bind环境、自动添加A记录、反向记录、批量添加A记录,编程思路如下: •□ YUM方式自动安装Bind; •□ 自动初始化Bind配置; •□ 创建安装、初始化、添加记录函数; 自动添加单个A记录及批量添加A记录和反向记录。 shell脚本实现Bind自动安装、初始化Bind环境、自动添加A记录、反向记录、批量添加A记录。