1、搭建时间服务器,日志服务器并简述sudo安全切换。
server端
[root@zabbix ~]# hostnamezabbix[root@zabbix ~]# hostname -I10.0.0.120 172.16.1.120
先说下环境,我这里是用ansible批量执行的。server端为外网为10.0.0.120。
目标是让客户端四台机器做到时间同步,一秒不差
小提示:在利用ansible批量分发文件的时候,覆盖文件是一件很危险的事,如果原文件存在,最好先备份。其实不管是ansible还是其它操作,覆盖都是很危险的
[root@zabbix ~]# cat /etc/ansible/hosts[client]172.16.1.51172.16.1.52172.16.1.53172.16.1.250
防火墙关闭:
[root@zabbix ~]# systemctl status firewalld.service ???firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead)
selinux关闭:
[root@zabbix ~]# getenforce Disabled
[root@localhost ~]#systemctlstatuschrony●chrony.serviceLoaded:not-found(Reason: No such file or directory)Active:inactive(dead)
========================服务端=========================
1.安装chrony(所有机器)
yum install chrony -y
2.启动chrony
[root@zabbix ~]# systemctl start chronyd.service [root@zabbix ~]# systemctl status chronyd.service ???chronyd.service - NTP client/server Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2017-05-27 11:47:43 CST; 4s ago
3.编辑配置文件(注意:现在是服务器端的修改)
22 allow 10.0.0.0/24 23 24# Listen for commands only on localhost. 25 bindcmdaddress 127.0.0.1 26 bindcmdaddress ::1 27 28# Serve time even if not synchronized to any NTP server. 29localstratum 10#第22行设置为本网段#第29行的注释取消
4.查看配置文件如下
[root@zabbix ~]# egrep -v "#|^$" /etc/chrony.conf server ntp1.aliyun.comserver time1.aliyun.comstratumweight 0driftfile /var/lib/chrony/driftrtcsyncmakestep 10 3allow 10.0.0.0/24bindcmdaddress 127.0.0.1bindcmdaddress ::1localstratum 10keyfile /etc/chrony.keyscommandkey 1generatecommandkeynoclientloglogchange 0.5logdir /var/log/chrony
5.重启时间同步服务
[root@zabbix ~]# systemctl restart chronyd.service
======================客户端=====================
方法一
客户端的配置文件是同一个文件(/etc/chrony.conf)
1.删掉哪些没用的server xxxxxxxxxx iburst
1 # Use public servers from the pool.ntp.org project.
2 # Please consider joining the pool (http://www.pool.ntp.org/j oin.html).
3 server 10.0.0.120 iburst
4 # Ignore stratum in source selection.
2.在server端把配置文件编辑好然后用ansible批量分发过去
[root@zabbix ~]# ansible client -m copy -a "src=/root/chrony.conf dest=/etc/"
172.16.1.250 | SUCCESS => {
"changed": true,
"checksum": "52bda81d895de3c7c54886d342e5eec074df757e",
"dest": "/etc/chrony.conf",
"gid": 0,
"group": "root",
"md5sum": "aee9cc7faa70a0c189033cdb8692e4b1",
"mode": "0644",
"owner": "root",
"size": 1038,
"src": "/root/.ansible/tmp/ansible-tmp-1495860905.35-183232559888238/source",
"state": "file",
"uid": 0
}
172.16.1.53 | SUCCESS => {
"changed": true,
"checksum": "52bda81d895de3c7c54886d342e5eec074df757e",
"dest": "/etc/chrony.conf",
"gid": 0,
"group": "root",
"md5sum": "aee9cc7faa70a0c189033cdb8692e4b1",
"mode": "0644",
"owner": "root",
"size": 1038,
"src": "/root/.ansible/tmp/ansible-tmp-1495860905.34-134007063835838/source",
"state": "file",
"uid": 0
}
172.16.1.51 | SUCCESS => {
"changed": true,
"checksum": "52bda81d895de3c7c54886d342e5eec074df757e",
"dest": "/etc/chrony.conf",
"gid": 0,
"group": "root",
"md5sum": "aee9cc7faa70a0c189033cdb8692e4b1",
"mode": "0644",
"owner": "root",
"size": 1038,
"src": "/root/.ansible/tmp/ansible-tmp-1495860905.43-104570916452677/source",
"state": "file",
"uid": 0
}
172.16.1.52 | SUCCESS => {
"changed": true,
"checksum": "52bda81d895de3c7c54886d342e5eec074df757e",
"dest": "/etc/chrony.conf",
"gid": 0,
"group": "root",
"md5sum": "aee9cc7faa70a0c189033cdb8692e4b1",
"mode": "0644",
"owner": "root",
"size": 1038,
"src": "/root/.ansible/tmp/ansible-tmp-1495860905.43-40575778655199/source",
"state": "file",
"uid": 0
}
3.启动同步服务,防火墙也需要关闭
[root@zabbix ~]# ansible client -m shell -a "systemctl start chronyd.service"
172.16.1.53 | SUCCESS | rc=0 >>
172.16.1.250 | SUCCESS | rc=0 >>
172.16.1.52 | SUCCESS | rc=0 >>
172.16.1.51 | SUCCESS | rc=0 >>
4.注意客户端时间同步定时任务关闭
[root@zabbix ~]# ansible client -m shell -a "crontab -l"
172.16.1.51 | SUCCESS | rc=0 >>
172.16.1.250 | SUCCESS | rc=0 >>
172.16.1.53 | SUCCESS | rc=0 >>
172.16.1.52 | SUCCESS | rc=0 >>
5.Centos7依然可以用ntpdate命令同步时间
[root@zabbix ~]# ansible client -m shell -a "ntpdate 10.0.0.120"
172.16.1.53 | SUCCESS | rc=0 >>
27 May 13:05:57 ntpdate[26817]: adjust time server 10.0.0.120 offset -0.001686 sec
172.16.1.250 | SUCCESS | rc=0 >>
27 May 13:05:57 ntpdate[17419]: adjust time server 10.0.0.120 offset -0.004419 sec
172.16.1.52 | SUCCESS | rc=0 >>
27 May 13:05:57 ntpdate[50111]: adjust time server 10.0.0.120 offset -0.004410 sec
172.16.1.51 | SUCCESS | rc=0 >>
27 May 13:05:57 ntpdate[114089]: adjust time server 10.0.0.120 offset -0.000597 sec
6.查看时间,现在已经都同步了,一秒不差
[root@zabbix ~]# ansible client -m shell -a "date"
172.16.1.250 | SUCCESS | rc=0 >>
Sat May 27 13:06:04 CST 2017
172.16.1.51 | SUCCESS | rc=0 >>
Sat May 27 13:06:04 CST 2017
172.16.1.53 | SUCCESS | rc=0 >>
Sat May 27 13:06:04 CST 2017
172.16.1.52 | SUCCESS | rc=0 >>
Sat May 27 13:06:04 CST 2017
方法二:放入定时任务
[root@zabbix ~]# ansible client -m cron -a "name='time sync' minute=*/5 job='/usr/sbin/ntpdate 10.0.0.120 &>/dev/null'"
172.16.1.51 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"time sync"
]
}
172.16.1.52 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"time sync"
]
}
172.16.1.53 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"time sync"
]
}
172.16.1.250 | SUCCESS => {
"changed": true,
"envs": [],
"jobs": [
"time sync"
]
}
[root@zabbix ~]# ansible client -m shell -a "crontab -l"
172.16.1.51 | SUCCESS | rc=0 >>
#Ansible: time sync
*/5 * * * * /usr/sbin/ntpdate 10.0.0.120 &>/dev/null
172.16.1.52 | SUCCESS | rc=0 >>
#Ansible: time sync
*/5 * * * * /usr/sbin/ntpdate 10.0.0.120 &>/dev/null
172.16.1.53 | SUCCESS | rc=0 >>
#Ansible: time sync
*/5 * * * * /usr/sbin/ntpdate 10.0.0.120 &>/dev/null
172.16.1.250 | SUCCESS | rc=0 >>
#Ansible: time sync
*/5 * * * * /usr/sbin/ntpdate 10.0.0.120 &>/dev/null
centos7默认已经安装:
[root@QFQLDl155405 2018-07-31]# rpm -qa | grep rsys
rsyslog-8.24.0-12.el7.x86_64
1
2
配置主配置文件/etc/rsyslog.conf
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
$ModLoad imtcp #开启tcp
$InputTCPServerRun 514 #端口
$FileCreateMode 0644 #文件创建权限
$DirCreateMode 0755 #目录权限
$Umask 0022
$EscapeControlCharactersOnReceive off #字符集调整
$template LogFormat,"%msg%\n" #定义模板
$template DayPerProgram_AccessLogs,"/opt/logs/%programname:1:320%/%fromhost-ip%/%$year%-%$month%-%$day%/%programname%.%$year%-%$month%-%$day%-%$hour%.log" #定义日志位置模板
if ($programname contains 'nginx' ) then -?DayPerProgram_AccessLogs;LogFormat #设置触发条件
$WorkDirectory /var/lib/rsyslog
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
$IncludeConfig /etc/rsyslog.d/*.conf
$OmitLocalLogging on
$IMJournalStateFile imjournal.state
*.info;mail.none;authpriv.none;cron.none;local3.none;local4.none /var/log/messages
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
配置客户端文件:/etc/rsyslog.d/nginx.conf
$ModLoad imfile
$InputFileName /alidata/nginx/logs/default.log #日志路径
$InputFileTag nginx_skynet #日志标签
$InputFileStateFile nginx_log
$InputFileFacility local4
$InputFileSeverity notice
$InputFilePersistStateInterval 1
$InputRunFileMonitor
$InputFilePollInterval 1
if ($programname contains 'nginx') then @@127.0.0.1:514 #@@是tcp,@是UDP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
启动:systemctl start rsyslog
root用户通过使用visudo命令编辑sudo的配置文件/etc/sudoers,才可以授权其他普通用户执行sudo命令
su或su-切换用户需要输入切换目标用户的密码
2、详解nginx模块使用方法。
一、Nginx介绍
Nginx是由俄罗斯软件工程师Igor Sysoev开发的一个高性能的HTTP和反向代理服务器,具备IMAP/POP3和SMTP服务器功能,Nginx最大的特点是对高并发的支持和高效的负载均衡,在高并发的需求场景下,是Apache服务器不错的替代品。目前,包括新浪、腾讯等知名网站都已使用Nginx作为Web应用服务器。下面我简单介绍一下:
nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性;
作为Web服务器;相比较与Apache,Nginx使用更少的资源,支持更多的并发连接,体现更高的效率,这点使Nginx尤为受到虚拟主机提供商的欢迎,能够支持高达50000个并发的连接数的响应。
作为负载均衡服务器器:Nginx既可以在内部直接支持Rails和PHP,也可以支持作为HTTP代理服务器对外惊醒服务,Nginx用C语言编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好的多。
作为邮件代理服务器,Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last.fm描述了成功并且美妙的使用经验。
Nginx安装非常简单,配置文件非常简介(还能够支持perl语法),Bugs非常少的服务器:Nginx启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数月也不需要重新启动。还能够在不间断服务的情况下进行软件版本平滑升级。
二、软件获得及帮助文档
官方地址:http://nginx.org
下载稳定版本:http://nginx.org/download/nginx-1.8.0.tar.gz
帮助文档:http://nginx.org/en/docs
编译参数说明:http://nginx.org/en/docs/configure.html
三、Nginx的功能
1、Nginx的特性
模块化设计、较好的扩展性
高可靠性:一个master启动一或多个worker,每个worker响应多个请求
低内存消耗:10000个keepalive连接在Nginx中仅消耗2.5MB内存(官方数据)
支持热部署:不停机更新配置文件、更新日志文件、更新服务器程序版本
2、Nginx的基本功能
静态web资源服务器,能够缓存打开的文件描述符
支持http/imap/pop3/smtp的反向代理;支持缓存、负载均衡
支持fastcgi(fpm)
模块化,非DSO机制,支持过滤器zip压缩,SSI以及图像大小调整
支持SSL
3、Nginx的扩展功能
基于名称和IP的虚拟主机
支持keepalive的保持机制
支持平滑升级
定制访问日志,支持使用日志缓存区提高日志存储性能
支持url rewrite
支持路径别名(root或alias指定)
支持基于IP以及用户的访问控制
支持传输速率限制,并发限制
4、Nginx的基本架构
一个master进程,生成一个或者多个worker进程,每个worker响应多个请求
事件驱动:epoll,kqueue,poll,select,rt signals
支持sendfile,sendfile64
支持AIO
支持mmap
5、Nginx模块类型
Nginx core module: nginx的核心模块
Standard HTTP modules:nginx的标准模块
Optional HTTP modules:nginx的可选模块
Mail modules :nginx的邮件模块
3rd party modules:nginx的第三方模块
6、Nginx进程详解
主进程主要完成如下工作:
读取并验正配置信息;
创建、绑定及关闭套接字;
启动、终止及维护worker进程的个数;
无须中止服务而重新配置工作特性;
控制非中断式程序升级,启用新的二进制程序并在需要时回滚至老版本;
重新打开日志文件,实现日志滚动;
编译嵌入式perl脚本;
worker进程主要完成的任务包括:
接收、传入并处理来自客户端的连接;
提供反向代理及过滤功能;
nginx任何能完成的其它任务;
cache loader进程主要完成的任务包括:
检查缓存存储中的缓存对象;
使用缓存元数据建立内存数据库;
cache manager进程的主要任务:
缓存的失效及过期检验;