第十四周

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进程的主要任务:

      缓存的失效及过期检验;

你可能感兴趣的:(第十四周)