【Linux题目】第九关
前言:项目整合
企业项目实战考试:
1. 全网备份解决方案实战
2. NFS集群后段共享存储搭建优化
3. 解决NFS单点实现实时数据同步。

环境:
| 服务器角色 | 外网ip | 内网ip | 主机名 |
| web | 10.0.0.8 | 192.168.0.8 | web01 |
| nfs | 10.0.0.31 | 192.168.0.31 | nfs |
| backup | 10.0.0.41 | 192.168.0.41 | backup |
注意:下面的环境准备是基于所有的三个项目的整合,前面的每个blog都是基于模版机之后再模拟的环境。此处相当于做一个提纲总结。
环境准备:
系统基础优化脚本(所有服务器执行)
参考文档:https://www.cnblogs.com/zoe233/p/11958652.html中的5虚拟机环境准备,模版机准备内容。
也可以整合成一个优化脚本:
#!/bin/bash # stop selinux
# permanent
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
# temporary
setenforce 0 #iptables off
/etc/init.d/iptables stop
chkconfig iptables off #services
chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'|bash #add users
useradd oldboy
echo ""|passwd --stdin oldboy
\cp /etc/sudoers /etc/sudoers.ori
echo "oldboy ALL=(ALL) NOPASSWD:ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c #ntpdate
ntpdate times.aliyun.com
echo '# time sync' >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate times.aliyun.com >/dev/null 2>&1' >>/var/spool/cron/root
crontab -l # ulimit 调整连接数
echo '* - nofile 65535' >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf #kernel
cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
EOF sysctl -p #yumrepo
yum install wget -y
系统基础优化脚本
执行sh -x /server/scripts/envpre.sh可以调试脚本。 确认脚本执行成功后,可以在所有机器上执行。如果是在模版机上设置好的,则直接克隆模版机即可,若是新增的机器,则可以执行脚本。
【Linux系统基础优化】 1. 关闭selinux防火墙 临时关闭selinux
setenforce 0 将状态设置为permissive,给出警告提示,但不会阻止操作,相当于disable
getenforce 查看
永久关闭,修改配置文件/etc/selinux/config
2. 关闭iptables /etc/init.d/iptables stop 最好执行两遍,确保成功关闭
chkconfig iptables off
3. 精简开机自启动服务 chkconfig|egrep -v "crond|sshd|network|rsyslog|sysstat"|awk '{print "chkconfig",$1,"off"}'
export LANG=en
chkconfig --list|grep 3:on
4. 授权用户oldboy可以sudo 复制代码
[root@oldboy ~]# useradd oldboy
[root@oldboy ~]# \cp /etc/sudoers /etc/sudoers.ori # 备份
[root@oldboy ~]# echo "oldboy ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers # 添加授权语句,oldboy授权无密码登陆,所有权限所有主机
[root@oldboy ~]# tail -1 /etc/sudoers
oldboy ALL=(ALL) NOPASSWD:ALL [root@oldboy ~]# visudo -c # 语法检查
/etc/sudoers: parsed OK
复制代码
5. 中文字符集【可选】 cp /etc/sysconfig/i18n /etc/sysconfig/i18n.ori
echo 'LANG=zh_CN.UTF-8' >/etc/sysconfig/i18n
source /etc/sysconfig/i18n
echo $LANG
6. 时间同步 echo "#time sync" >>/var/spool/cron/root
echo '*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1' >> /var/spool/cron/root
crontab -l # 检查
7. 命令行安全 复制代码
[root@oldboy ~]# echo 'export TIMEOUT=300' >>/etc/profile
[root@oldboy ~]# echo 'export HISTSIZE=50' >>/etc/profile
[root@oldboy ~]# echo 'export HISTFILESIZE=5' >>/etc/profile
[root@oldboy ~]# tail -3 /etc/profile
export TIMEOUT=300
export HISTSIZE=50
export HISTFILESIZE=5
[root@oldboy ~]# source /etc/profile
复制代码
8. 调整文件描述符数量(加大) [root@oldboy ~]# echo '* - nofile 65535 '>>/etc/security/limits.conf
[root@oldboy ~]# tail -1 /etc/security/limits.conf
* - nofile 65535
9. 内核优化 优化方法是,执行vi /etc/sysctl.conf命令到文件结尾,然后拷贝如下内容并保存。 复制代码
cat >>/etc/sysctl.conf << EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384 # iptables arguments
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
EOF
复制代码
sysctl -p命令检查输入的参数是否有误,生效。
系统基础优化的细节说明
主机名解析(/etc/hosts文件统一):
cat >>/etc/hosts<<EOF
192.168.0.5 lb01
192.168.0.6 lb02
192.168.0.7 web02
192.168.0.8 web01
192.168.0.51 db01
192.168.0.31 nfs01
192.168.0.41 backup
192.168.0.61 m01
EOF
目录规划(三个项目所有涉及到的目录):
web01:
- /var/www/html
- /app/logs
- /backup
- /server/scripts
nfs:
- /backup
- /data/r_shared
- /data/w_shared
- /service
backup:
- /server/scripts
- /nfsbackup
- /backup
- /data/r_aaron
- /data/w_aaron
1.全网备份解决方案实战
一直三台服务器,分别为web01,backup,nfs。
要求:
- 每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录以及访问日志
- 并通过rsync命令推送到服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再利用rsync推送到备份服务器上)。
具体要求如下:
- Web服务器和备份服务器的备份目录都必须为/backup
- 系统配置文件包括但不限于:
- 定时开机服务的配置文件/var/spool/cron/root
- 开机自启动的配置文件/etc/rc.local
- 日常脚本的目录/server/scripts
- 防火墙iptables的配置文件/etc/sysconfig/iptables
- 更多的配置文件...
- Web服务器站点目录假定为/var/www/html
- Web服务器A的日志路径为/app/logs
- Web服务器本地仅保留7天内的备份(本地保留不能多于7天,因为太多硬盘会满)。
- 备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
- 备份服务器上要按照备份服务器的IP为目录保存备份,备份的文件按照时间保留。
实施:
部署rsync服务-Rsync服务器端
1. 确认是否安装了rsync服务:
[root@backup-41 tmp]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2. 创建rsyncd.conf文件,并添加如下内容(文件默认不存在)
注意:man rsyncd.conf可以查询里面的参数。 复制代码
[root@backup-41 tmp]# cat /etc/rsyncd.conf
# rsync_config____start
# created by zoe
## rsyncd.conf start ## uid = rsync # 用户
gid = rsync # 用户组 use chroot = no # 程序安全设置
max connections = 200 # 客户端连接数
timeout = 300 # 超时时间
pid file = /var/run/rsyncd.pid # 进程号文件位置
lock file = /var/run/rsync.lock # 锁文件
log file = /var/log/rsyncd.log # 日志文件位置 ######
[backup] # 模块名称
path = /backup/ # 服务器端提供访问的目录
ignore errors # 忽略错误
read only = false # 只读false,即:可读,可写
list = false # 阻止远程列表(不让通过远程方式查看服务端有啥,不让使用ls这样的命令)
hosts allow = 192.168.0.31/24 # 允许IP
hosts deny = 0.0.0.0/32 # 禁止IP ,如果冲突导致ip连接失败,可以注释掉hosts deny
auth users = rsync_backup # 虚拟用户,不是系统内真正创建的虚拟用户,是用来客户端和服务端传输数据,创建socket时的虚拟用户,相当于字符串约定的口令
secrets file = /etc/rsync.password # 虚拟用户,存放用户和密码的文件 ##rsync_config____end ##
复制代码
3. 添加rsync程序用户
复制代码
[root@backup-41 tmp]# useradd -M -s /sbin/nologin rsync
[root@backup-41 tmp]# tail -1 /etc/passwd
rsync:x:503:503::/home/rsync:/sbin/nologin
[root@backup-41 tmp]# id rsync
uid=503(rsync) gid=503(rsync) 组=503(rsync)
复制代码
4. 创建共享目录/backup,更改属主和数组
[root@backup-41 tmp]# mkdir /backup
[root@backup-41 tmp]# chown rsync.rsync /backup/ # 更改属主和数组,确保客户端通过rsync用户连接时对/backup目录有相关权限
[root@backup-41 tmp]# ls -ld /backup/
drwxr-xr-x 2 rsync rsync 4096 Nov 30 19:14 /backup/ 5. 启动服务:rsync --daemon 复制代码
[root@backup-41 tmp]# rsync --daemon # 启动服务
[root@backup-41 tmp]# ps -ef|grep rsync|grep -v grep # 查看进程是否存在
root 4637 1 0 19:10 ? 00:00:00 rsync --daemon
[root@backup-41 tmp]# netstat -lntup|grep rsync # 查看网络状态
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 4637/rsync
tcp 0 0 :::873 :::* LISTEN 4637/rsync
复制代码
注意:可以加启动服务,加入到rc.local,开机自启动。 如何重启rsync服务? pkill rsync #关闭rsync服务
rsync --daemon #启动rsync服务
6. 创建虚拟用户rsync_backup
复制代码
[root@backup-41 tmp]# echo "rsync_backup:123456" >/etc/rsync.password # 将虚拟用户和密码以此格式写入密码配置文件 [root@backup-41 tmp]# ll /etc/rsync.password
-rw-r--r-- 1 root root 20 Nov 30 19:25 /etc/rsync.password
[root@backup-41 tmp]# chmod 600 /etc/rsync.password # 由于密码是明文,所以更改权限600,提高安全性
[root@backup-41 tmp]# ll /etc/rsync.password
-rw------- 1 root root 20 Nov 30 19:25 /etc/rsync.password
复制代码
部署rsync服务的步骤说明
【Linux题目】第九关的更多相关文章
- 20145233 2016-2017 1 linux题目总结
20145233 2016-2017 1 linux题目总结 第一周考试知识汇总 判断:实验楼环境中所有的默认系统用户名和密码均为 shiyanlou.(x ). 填空:Linux Bash中,Ctr ...
- SQL注入之Sqli-labs系列第九关和第十关(基于时间盲注的注入)
开始挑战第九关(Blind- Time based- Single Quotes- String)和第十关( Blind- Time based- Double Quotes- String) gog ...
- Python Challenge 第九关
第九关只有一幅图,上面有一些黑点.网页名字叫:connect the dots.可能是要把这些点连起来. 查看源代码,果然有两个整数集合 first 和 second.并且有个提示:first+sec ...
- webug第九关:URL跳转
第九关:URL跳转 不太明白,看源码 接受了一个URL的参数
- 【linux题目】第一关
详细的解答:https://github.com/Zoe233/Linux/blob/master/[题目]5.Linux了解程度测试题解析.ipynb 1. 创建一个目录/data 解答: mkdi ...
- 【Linux题目】第七关
1. 如果想修改开机内核参数,应该修改哪个文件? A. /dev/sda1 B. /etc/fstab 磁盘自动挂载的文件 C. /boot/grub/grub.conf D. /etc/rc.loc ...
- 【Linux题目】第六关
[定时任务规则] 1. 如果在某用户的crontab文件中有以下记录,该行中的命令多久执行一次(RHCE考试题)?( ) 30 4 * * 3 mycmd A. 每小时. B. 每周. C. 每年三月 ...
- 【Linux题目】第五关
1. 如何取得/etiantian文件的权限对应的数字内容,如-rw-r-r 为644,要求使用命令取得644或0644这样的数字. 解答: 方法1:用sed获取stat filename里的属性值 ...
- 【Linux题目】第四关
1. 如何过滤出已知当前目录下oldboy中的所有一级目录? 提示:不包含oldboy目录下面目录的子目录和隐藏目录,只要一级目录即可. 解答: ls -F|grep / 通过ls -F给目录后面 ...
随机推荐
- C# 快速开发框架搭建—环境搭建
一.新建MVC项目 打开vs2013新建空的解决方案,在解决方案中增加一个MVC项目,如图: 删除不需要的文件,剩下如图所示的文件夹: 首先创建一个MVC5控制器(Login,登入使用),该控制器无需 ...
- python--内建属性、集合、常见模块、调试
一.常用内建属性 常用专有属性 说明 触发方式 __init__ 构造初始化函数 创建实例后,赋值时使用,在__new__后 __new__ 生成实例所需属性 创建实例时 __class__ 实例所在 ...
- WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)
本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. WordPress文章阅读 ...
- 一、VMware Workstation 15中文破解版 下载与安装(附密钥)
下载地址: 下载地址VMware Workstation Pro 15.5.0 Build 14665864https://download3.vmware.com/software/wkst/fil ...
- 数据结构和算法(Golang实现)(17)常见数据结构-树
树 树是一种比较高级的基础数据结构,由n个有限节点组成的具有层次关系的集合. 树的定义: 有节点间的层次关系,分为父节点和子节点. 有唯一一个根节点,该根节点没有父节点. 除了根节点,每个节点有且只有 ...
- 004-流程控制-C语言笔记
004-流程控制-C语言笔记 学习目标 1.[掌握]关系运算符和关系表达式 2.[掌握]逻辑运算符和逻辑表达式 3.[掌握]运算符的优先级和结合性 4.[掌握]if-else if-else结构的使用 ...
- [算法]Huffman树(哈夫曼树)
目录 一.关于Huffman树 二.具体实现 例1:P1090 合并果子 例2:P2168 [NOI2015]荷马史诗 一.关于Huffman树 Huffman树(哈夫曼树)可以解决下述问题: 一颗\ ...
- 【three.js第二课】页面自适应
1.在[three.js第一课]的基础上加入以下代码,改变窗口大小时,页面内容会自适应 //加入事件监听器,窗口自适应 window.addEventListener('resize', functi ...
- Python基础:按位异或 ^ ,按位或 | ,按位与 &
前言文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http: ...
- JS 中的自定义事件和模拟事件
在 JS 中模拟事件指的是模拟 JS 中定义的一些事件,例如点击事件,键盘事件等. 自定义事件指的是创建一个自定义的,JS 中之前没有的事件. 接下来分别说一下创建这两种事件的方法. 创建自定义事件 ...