linux运维架构篇

网友投稿 1046 2022-10-14

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

linux运维架构篇

集群规划说明

集群架构概念图示

集群案例规划

集群主机规划表

关于主机规划注意事项:

灰色IP地址属于临时使用,企业场景一般没有。负载均衡器的 VIP10.0.0.3/24带外网IP的服务器的内网IP不配置网关和dns外部IP该配啥配啥

host解析(/etc/hosts 针对内网地址和主机名)

备份服务器(10.195.236.142)

Rsync服务:具有可视本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能,这个功能类似ssh带有的scp命令,但是优于scp命令,scp只能全量拷贝,rsync可以增量拷贝。

rsync 具有如下的基本特性:

可以镜像保存整个目录树和文件系统可以很容易做到保持原来文件的权限、时间、软硬链接等无须特殊权限即可安装优化的流程,文件传输效率高可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接(服务端和客户端)。支持匿名传输,以方便进行网站镜象

rsync企业两个应用场景

cron+rsync和inotify+rsync

rsync工作方式

1)本地使用:rsync [OPTION...] SRC... [DEST]2)通过远程 Shell 使用:拉: rsync [OPTION...] [USER@]HOST:SRC... [DEST]推: rsync [OPTION...] SRC... [USER@]HOST:DEST3)以守护进程(socket)方式传输数据(重点):拉: rsync [OPTION...] [USER@]HOST::SRC... [DEST]推: rsync [OPTION...] SRC... [USER@]HOST::DEST拉: rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]推: rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

其中:

SRC: 是要复制的源位置DEST: 是复制目标位置若本地登录用户与远程主机上的用户一致,可以省略 USER@使用远程 shell 同步时,主机名与资源之间使用单个冒号“:”作为分隔符使用 rsync 服务器同步时,主机名与资源之间使用两个冒号“::”作为分隔符当访问 rsync 服务器时也可以使用 rsync:// URL“拉”复制是指从远程主机复制文件到本地主机“推”复制是指从本地主机复制文件到远程主机当进行“拉”复制时,若指定一个 SRC 且省略 DEST,则只列出资源而不进行复制

若使用普通用户身份运行 rsync 命令,同步后的文件的属主将改变为这个普通用户身份。若使用超级用户身份运行 rsync 命令,同步后的文件的属主将保持原来的用户身份。

/home : 表示将整个 /home 目录复制到目标目录/home/ : 表示将 /home 目录中的所有内容复制到目标目录

参数总结:

-a, ––archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等价于 -rlptgoD (注意不包括 -H)

-z, ––compress 在传输文件时进行压缩处理

--ignore-existing 忽略那些已经存在于接收端的文件,仅备份那些新创建的文件

--bwlimit=RATE limit socket i/o bandwidth

--password-file = /etc/rsync.password #指定连接模块的密码文件

搭建backup服务器之rsyncdaemon服务模式-服务端配置过程

1、确保服务安装rsync服务 yum install -y rsync

2、vim /etc/rsyncd.conf #创建编写配置文件(启动rsync -daemon模式必须),一般没有此文件

#rsync_config created by dsh 20181220#uid = rsync #该选项指定当该模块传输文件时守护进程应该具有的uidgid = rsyncuse chroot = no #安全相关配置max connections = 200 #最大连接数timeout = 300 #超时时间pid file = /var/run/rsyncd.pid #进程对应的进程号文件lock file = /var/run/rsyncd.lock #锁文件log file = /var/log/rsyncd.log # 日志文件[backup] #模块名称path = /backup # 服务器提供的访问目录ignore errors #忽略错误read only = false #可写list =false #不能列表hosts allow = 10.195.236.0/24 ##hosts deny = 0.0.0.0/32 #拒绝,和allow同时使用时,会有异常,建议单独使用一个。auth users = rsync_backup #该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。secrets file = /etc/rsync.password #该选项指定一个包含定义用户名:密码对的文件。只有在"auth users"被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,需要限式指定一个(例如:/etc/rsyncd.passwd)。注意:该文件的权限一定要是600,否则客户端将不能连接服务器

3、创建用户

useradd rsync -s /sbin/nologin -M

4、创建 并 修改备份路径的属主属组

mkdir /backup -p

chown -R rsync.rsync /backup/

5、根据rsyncd.conf的auth users 创建虚拟账号的密码文件

echo 'rsync_backup:oldboy' >/etc/rsync.password

6、修改密码文件的权限为600

chmod 600 /etc/rsync.password

7、启动服务

rsync --daemon

8、加入开机自启动

echo "/usr/bin/rsync --daemon" >> /etc/rc.local

搭建backup服务器之rsyncdaemon服务模式-客户端配置

1、生成连接服务器的密码文件 ,注意,此时只保存密码,无需账号。

echo "oldboy" >/etc/rsync.password

2、为密码文件配置权限600,此时客户端配置完成。

chmod 600 /etc/rsync.password

3、同步文件(daemon模式下,只在客户端执行命令)

推送:

rsync -az /tmp/ rsync://rsync_backup@10.195.236.142/backup/ --password-file=/etc/rsync.password

拉取:

rsync -az /tmp/ rsync://rsync_backup@10.195.236.142/backup/ /tmp/ --password-file=/etc/rsync.password

注意:上述/backup/表示服务端配置文件中的模块名称。

搭建backup服务器之rsyncdaemon服务模式-开发启动/停止脚本

1、创建服务文件

vim /etc/init.d/rsyncd,键入以下脚本后保存。

#!/bin/sh#rsync 启动、停止、重启脚本#source function library. /etc/rc.d/init.d/functionsstart(){ rsync --daemon if [ $? -eq 0 -a `ps -ef | grep -v grep| grep rsync |wc -l ` -gt 0];then action "Starting Rsync:" /bin/true sleep 1 else action "Starting Rsync:" /bin/false sleep 1 fi}stop(){ pkill rsync;sleep 1;pkill rsync if [`ps -ef | grep -v grep | grep "rsync --daemon"| wc -l` -lt 1];then action "Stopting Rsync:`ps -ef | grep -v grep | grep rsync | wc -l`" /bin/true sleep else action "Stopting Rsync:`ps -ef | grep -v grep | grep "rsync --daemon"| wc -l`" /bin/false sleep 1 fi}case "$1" in start) start; ;; stop) stop; ;; restart|reload) $0 stop; $0 start; ;; *) echo $"Usage:$0 {start|stop|restart|reload}" ;;esac

2、chmod 700 /etc/init.d/rsyncd

3、chkconfig rsyncd on

搭建backup服务器之rsyncdaemon服务模式-客户端推送排除

排除单个文件推送:

rsync -avz -exclude=a /data/ rsync_backup@10.195.236.142::backup --password-file=/etc/rsync.password

排除多个文件推送:

rsync -avz -exclude={a,d} /data/ rsync_backup@10.195.236.142::backup --password-file=/etc/rsync.password

rsync -avz -exclude={a..d} /data/ rsync_backup@10.195.236.142::backup --password-file=/etc/rsync.password

rsync优缺点

优点:

1、增量备份,支持socket(daemon),daemon模式需要传输加密需要利用vpn服务或ipsec服务

缺点:

1、大量小文件时候,在同步时,比对时间较长,可能会造成rsync进程意外停止

2、同步大文件,10G这样的大文件有时候也会异常中断,未完整同步之前,是以隐藏文件方式存在,可以通过续传等参数实现传输。

企业级备份案例1:周期性定时备份web服务器站点目录

要求:

web服务器a和备份服务器b的备份目录必须都为/backupweb服务器站点目录假定为/var/www/htmlweb服务器本地仅保留七天内备份,并且每天备份当天数据到backup服务器备份服务器上检查备份结果是否正常,并在每天06点将备份结果发送给管理员信箱备份服务器上每周六的数据都保留,其他备份仅保留180天。

思路:

每晚凌晨01点在web服务器按日期打包需要备份的网站目录,并通过rsync推送到备份服务器上做备份。每天06点backup服务器校验发送邮件。

解决方案:

1、配置web服务器为rsync客户端,备份服务器为rsync服务端。

2、web服务器端进行手动推送验证

3、开发脚本实现客户端的打包、备份、推送、校验、删除。

4、web服务器端配置定时任务每天00执行

5、backup服务器开发脚本实现校验、删除、邮件通知

开发脚本实现校验删除动作

利用mail工具使用第三方邮件服务器发送邮件,前提需要在/etc/mail.rc文件中添加第三方邮件邮件服务商的账号的相关信息.

set from=dsh_hello@163.com smtp=smtp.163.com smtp-auth-user=dsh1246436536 smtp-auth-password=abc123456 smtp-auth=login

mailq    #可列出待寄邮件的清单

6、backup服务器配置定时任务每天05点执行

inotify+rsync实现实时备份

1、inotify介绍:它是一个内核用于通知用户空间程序文件系统变化的机制

2、inotify 实施准备

大前提rsync daemon 服务配置成功,可以再rsync客户端推送拉取数据,然后才能配置inotify服务。

3、安装

uname -r   #确认linux内核是否为2.3.13以上

ls /proc/sys/fs/inotify/   # 在/proc/sys/fs/inotify目录下有三个文件:max_user_watches:设置inotifywait或inotifywatch命令可以监视的文件数量(单进程);max_user_instances:设置每个用户可以运行的inotifywait或inotifywatch命令的进程数。;max_queued_events:设置inotify实例事件(event)队列可容纳的事件数量。

yum -y install inotify-tools #一共安装了2个工具,即inotifywait和inotifywatch。inotifywait:在被监控的文件或目录上等待特定文件系统事件(open,close,delete等)发生,执行后处于阻塞状态,适合shell脚本中使用。inotifywatch:收集被监视的文件系统使用度统计数据,指文件系统事件发生的次数统计

4、inotifywait 命令常用参数介绍

5、实现在nfs客户端对nfs自定文件目录事件(增删改)的实时监控

/usr/local/inotify/bin/inotifywait -mrq --format 'w%f%' -e close_wait,delete /backup

6、当监控到nfs目录文件系统事件后,触发rsync推送变化的文件

#!/bin/bashbackup_Server=172.16.1.41/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read linedo cd /data rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.passworddone

提示:

上边那个脚本效率很低,效率低的原因在于只要目录出现变化就都会导致我整个目录下所有东西都被推送一遍。因此,我们可以做如下改动提高效率

#!/bin/bashPath=/databackup_Server=172.16.1.41/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data | while read line do if [ -f $line ];then rsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password else cd $Path &&\ rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password fidone

脚本可以加入开机启动:

echo "/bin/sh /server/scripts/inotify.sh &" >> /etc/rc.local #提示:一个& 代表从后台开始运行该条命令。

7、优化

使用echo命令修改/proc/sys/fs/inotify目录下的三个文件

echo "50000000" > /proc/sys/fs/inotify/max_user_watchesecho "326790" > /proc/sys/fs/inotify/max_queued_eventssysctl -p

8、inotify优缺点

优点:

简单易用,监控文件系统事件变化,通过同步工具rsync实时同步数据

缺点:

并发如果大于200个文件(10-100k),同步会有延时

9、高并发数据实时同步方案小结

1)inotify(sersync)+ rsync,是文件级别的。2)drbd文件系统级别,文件系统级别,基于block块同步,缺点:备节点数据不可用3)第三方软件的同步功能:mysql同步(主从复制),oracle,mongodb4)程序双写,直接写两台服务器。5)利用产品业务逻辑解决(读写分离,备份读不到,读主)6)NFS集群(1,4,5方案整合)(双写主存储,备存储用inotify(sersync)+rsync)如下所示(读写分离方案)

sersync实现实时备份

特点:

支持配置文件管理

真正的守护进程socket

可以对失败文件定时重传(定时任务功能)

默认多线程rsync同步

1、实现rsync推送到backup服务器

2、安装sersync工具

#cd /usr/local/src

#tar zxvfsersync2.5.4_64bit_binary_stable_final.tar.gz  #解压

#mv GNU-Linux-x86  /usr/local/sersync  #移动目录到/usr/local/sersync

3、配置sersync

#cd  /usr/local/sersync #进入sersync安装目录

#cp confxml.xml confxml.xml-bak  #备份原文件

vim confxml.xml

localpath watch="/home/Sync":#源服务器同步目录

:#目标服务器IP地址

name="Sync": #目标服务器rsync同步目录模块名称

users="Sync": #目标服务器rsync同步用户名

passwordfile="/etc/passwd.pass": #目标服务器rsync同步用户的密码在源服务器的存放路径

remote ip="192.168.0.50": #目标服务器ip,每行一个

failLogpath="/tmp/rsync_fail_log.sh" #脚本运行失败日志记录

start="true"  #设置为true,每隔600分钟执行一次全盘同步

vim sersync/confxml.xml修改24--28行 24 25 26 27 28 修改后的内容为:24 25 26 修改29--35行,认证部分(rsync密码认证)29 30 31 32 33 34 35 修改后的内容如下:27 28 29 30 31 32 33

4、开启sersync守护进程同步数据

/usr/local/sersync/sersync2 -d -r -n 10 -o /usr/local/sersync/confxml.xml #开启datemon模式echo "/usr/local/sersync/sersync2 -d -r -n 10 -o /usr/local/sersync/confxml.xml &" >> /etc/rc.local #加入开机自启动

5、inotify sersync总结

为什么要用Rsync+sersync架构?1)、sersync是基于Inotify开发的,类似于Inotify-tools的工具2)、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?1)、Rsync+Inotify-tools(1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;(2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。2)、Rsync+sersync(1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字;(2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录(每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync。

NFS共享存储服务器(10.195.236.142)

必备知识点:

多个nfs客户端同时读写文件,需要有以下几个权限注意:

nfs服务器/etc/exports配置文件中的(rw)读写共享权限是否正确  nfs服务器实际要共享的NFS目录权限是否具有w权限,及服务器本地目录的安全权限  每台机器都对应存在和nfs默认配置UID相同的UID65534的nfsnobody用户(确保所有客户端的访问权限统一(使用all_squash参数),否则每个机器需要同时建立相同uid用户,并覆盖nfs的默认用户配置)

同时满足以上三个条件,即可实现多客户端同时对共享目录文件有读写权限。

重要文件

/etc/exports  #nfs服务的主配置文件,配置nfs具体共享服务的目录地址。

/usr/sbin/showmount #常在客户端执行,用以查看nfs配置及挂载结果。

/proc/mounts #客户端挂载参数。用于客户端查看挂载情况,比df 命令更加高效快捷,常用于监控挂载。

服务端启动顺序

/etc/init.d/rpcbind start

/etc/init.d/nfs start

exports语法格式

NFS共享目录  NFS客户端地址(参数1,参数2......)

NFS共享目录:为nfs服务端要共享的实际目录,要用绝对路径,注意要共享目录的本地权限。如果需要读写共享,务必要让此共享目录可以被nfs客户端的用户(nfsnobody)读写。nfs客户单地址:可以为单个主机地址,也可以为一个网段,还可以用* 来匹配素有客户端服务器。这里所谓的客户端一般来说就是前端的业务服务器。例如web服务。 参数介绍:

rw 读写 ; ro 只读 ; sync 数据直接写入磁盘,安全性高 ; async 数据会先写入缓冲区,效率高;

all_squash 所有客户端登入nfs主机访问共享目录,统一映射为nobody用户权限,以便所有文件共享。

anonuid 指定客户端登陆访问用户的UID

anongid 指定客户端登陆访问用户的UID

nfs优化:

硬件:sas/ssd磁盘,多块,raid5/raid10。网卡至少千兆(多块bond)服务器端配置 /data 10.195.236.135(rw,sync,all_squash,anonuid=65534,anongid=65534)nfs客户端mount 挂载企业优化命令参数:

mount -t nfs -o noatime,nodiratime,nosuid,noexec,nodev, rsize=131072,wsize=131072 10.195.236.140:/data

nfs内核优化

服务器端(增大缓存大小):

cat >>/etc/sysctl.conf<

net.core.wmen_default = 8388608

net.core.rmen_default = 8388608

net.core.wmen_max = 16777216

net.core.rmen_max = 16777216

eof

sysctl -p

大型网站nfs采用分布式系统,常见有GlusterFS、FastDFS.

nfs优缺点:

优点:服务稳定,简单高效

局限:

存在单点故障,可以通过负责均衡及高可用方案弥补。

高并发场合效率低,性能受限(指的是日并发超过2千万的日PV量)

多个客户端挂载同一个nfs 服务器时,连接管理维护麻烦。

企业应用场景:使用nfs搭建web服务集群的共享存储。

nfs服务端配置

1、nfs软件安装:yum -y install nfs-utils rpcbind

nfs-utils:nfs服务主程序包,包括rpc.nfsd、rpc.mountd这两个daemonrpcbind:centos6下面RPC的主程序。nfs可以视为一个rpc程序,再启动任何一个rpc之前。

2、启动PRC服务:

/etc/init.d/rpcbind start

rpcinfo -p localhost   #查看rpc中是否有nfs资源

3、启动nfs服务:

/etc/init.d/nfs start

chkconfig rpcbind onchkconfig nfs on

4、配置nfs服务端配置文件

默认路径:/etc/exports ,并且默认为空,vim /etc/exports

/data 10.195.236.135(rw,sync,all_squash)

5、给共享目录授权

chown -R nfsnobody.nfsnobody /data

6、showmount -e 服务端IP  #查看配置文件的路径有没有生效

nfs客户端配置

1、安装启动rpcbind

/etc/init.d/rpcbind start

2、挂载

mount -t nfs 10.195.236.142:/data /mnt  #如果挂载失败尝试安装nfs-utis,然后使用showmount -e 10.195.236.142测试是否有显示远程服务端共享路径

3、开机自动挂载

echo "mount -t nfs 10.195.236.142:/data /mnt" >>/etc/rc.local  #设置开机挂载,不能放到fstab中,因为是网络挂载,网卡启动比fstab慢。

ssh批量管理 服务

/etc/init.d/sshd

/etc/ssh/sshd_config

ssh 企业安全优化

1、vim /etc/ssh/sshd_config

Port 2211

ListenAddresss 10.195.236.41 #多网卡情况下,修改监听地址为单一内网地址

PermitRootLogin no #不允许root登陆,实际使用中,使用su从其他用户切换

PermitEmptyPasswords no #禁止空密码登陆

CSSAPIAuthentication no # 优化ssh连接登陆响应时间。

UseDNS no ## 优化ssh连接登陆响应时间。

2、使用密钥登陆,不使用密码登陆

ssh批量分发管理部署步骤(使用管理机进行批量分发管理)

1、创建用户及密码(管理机和后台服务器集群都需要)

#创建管理用户,让此用户使用密钥对进行远程管理,无需口令密码。useradd oldgirlecho 123456 |passwd --stdin oldgirlsu - oldgirl#目标服务器上配置sudoers,给oldgirl管理用户提权(rsync命令)否则系统权限目录无法进行文件推送:echo "oldgirl ALL= NOPASSWD: /usr/bin/rsync" >>/etc/sudoersvisudo -c

2、管理机上创建密钥对

交互式:ssh-keygen -t dsa #直接回车三次

非交互式:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

3、从管理机上分发密钥(锁)到各个服务器

cd ~

ssh-copy-id -i .ssh/id_dsa.pub oldgirl@172.16.1.8  #使用默认端口

ssh-copy-id -i .ssh/id_dsa.pub " -p 2211 oldgirl@172.16.1.6"  #指定自定义端口时,使用双引号

非交互式:sshpass -p '123456' ssh-copy-id -i .ssh/id_rsa.pub -p 2211 oldgirl@10.195.236.142

4、测试

ssh -p2211 oldboygirl@172.16.1.8 /sbin/ifconfig eth0

成功标志:连接目标服务器,不适用密码可以直接操作。

5、批量分发文件,脚本优化

#批量分发脚本,服务器固定,源文件、目的路径作为参数#!/bin/bashif [$# -ne 2]:then echo " USAGE:/bin/sh $0 Sourcefile Destfile" exit 1 fisource /etc/init.d/functionsfor key in 8 9 12 14 15 18 21 45 67 do scp -P2211 ~/$1 oldgirl@172.16.1.${key}:~ >/dev/null 2>&1&&\ ssh -p2211 oldgirl@172.16.1.$key sudo rsync ~/$1 $2 >dev/null 2>&1 #执行远程sudo 使用-t参数开终端执行。 if [$? -eq 0]:then action "FenFa host 172.16.1.$key" /bin/true else action "FenFa host 172.16.1.$key" /bin/fslse fi done

#批量分发脚本,指定单个服务器、源文件、目的路径作为参数#!/bin/bashif [$# -ne 3]:then echo " USAGE:/bin/sh $0 Sourcefile Destfile IPADDR" exit 1 fisource /etc/init.d/functionsscp -P2211 ~/$1 oldgirl@$3:~ >/dev/null 2>&1&&\ssh -p2211 oldgirl@$3 sudo rsync ~/$1 $2 >dev/null 2>&1 if [$? -eq 0]:then action "FenFa host $3" /bin/true else action "FenFa host $3" /bin/fslse fi done

#批量分发脚本,依次指定源文件、目的路径、IP地址若干作为参数#!/bin/bashif [$# -le 3]:then echo " USAGE:/bin/sh $0 Sourcefile Destfile IPADR......" exit 1 fisource /etc/init.d/functionsshift 2 #移动变量,表示移除前几个变量for key in $@ do scp -P2211 ~/$1 oldgirl@172.16.1.${key}:~ >/dev/null 2>&1&&\ ssh -p2211 oldgirl@172.16.1.$key sudo rsync ~/$1 $2 >dev/null 2>&1 if [$? -eq 0]:then action "FenFa host 172.16.1.$key" /bin/true else action "FenFa host 172.16.1.$key" /bin/fslse fi done

6、批量分发中权限问题解决方法(例:批量分发hosts文件覆盖到目标服务器/etc/hosts,本方案使用(2))

1)直接使用root用户执行,批量分发管理绝大多数企业选用root(条件是允许root用户登录,但是我们实际环境中已经做了root禁止登录的优化)

2)sudo提权实现没有权限用户使用rsync拷贝

#目标服务器上配置sudoers,给oldgirl用户提权:echo "oldgirl ALL= NOPASSWD: /usr/bin/rsync" >>/etc/sudoersvisudo -c#迂回方案:先拷贝hosts文件到各自家目录下scp -P2211 hosts oldgirl@172.16.1.8:~ #使用rsync管道模式拷贝更好(增量、加密) -az hosts -e 'ssh -p2211' oldgirl@172.16.1.8:~#然后使用远程sudo,rsync 拷贝hosts文件覆盖到/etc/hostsssh -p2211 -t oldgirl@172.16.1.8 sudo rsync ~/hosts /etc/hsots #-t允许执行远程sudo命令

WEB服务

URL 是URI命名机制的一个子集。

网页分类

1、静态网页

静态网页资源常见扩展名为:

纯文本类程序或文件:htm、html、xml、js、css图片类或数据文档:jpg、gif、png、doc、ppt等视频流媒体类文件:MP4、swf、avi、wmv等

静态网页特征

每个页面都有一个固定的URL地址,且URL一般以htm、html等常见形式为后缀,而且地址中不含有?或&等特殊符号网页内容已经发布到网站服务器上,无论是否有用户访问,每个页面的内容都是保存在王章服务器的文件系统上的,也就是说,静态网页是实实在在保存在服务器上的文件,每个网页都是一个独立的文件。网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到)(优点)网页没有数据库的支持,在网站制作和维护方面的工作量比较大,因此当网站信息量很大的时候,完全依靠静态网页制作的方式比较困难。(缺点)网页的交互性较差,在程序功能实现方面局限性。(缺点)网页程序在用户浏览器端解析,如:IE浏览器,程序解析效率很高,由于服务端不进行解析,并且不需要读取数据库,因此服务器端可以接受更多的并发访问。当客户端向服务器请求数据时,服务器直接把数据从磁盘上返回(不做任何解析),待客户端拿到数据后,在浏览器端解析并展示出来,服务端不解析,所以并发性能更高。(优点)

2、动态网页

形式特点:

通常以asp、aspx、php、js、do、cgi等形式为后缀一般网址中会有标志性符号?&网页一般以数据库技术为基础,大大降低了网站维护的工作量。采用动态网页技术的网站可以实现很多交互功能,比如:用户注册、登陆、在线调查、投票、用户管理、订单管理、发博文等动态网页并不是独立存在于服务器上的网页文件,当用户请求服务器上的动态程序时,服务器解析这些程序并读取数据库然后返回一个完整的网页内容。服务器端解析。动态网页中的?&在搜索引擎的收录方面存在一定的问题,一般搜索引擎不会去抓取网址中?后面的内容,因此在企业通过搜索引擎进行推广时,需要针对动态网页的网站做一定的技术处理(伪静态技术),以便适应搜索引擎抓取需求有关动态网页的架构思想:一般来说静态网页性能是动态网页的10-30倍,在高并发的场景中,应尽可能的把动态网页转换成静态网页提供服务。动态转静态,几乎是所有高并发网站必备架构方案思路,也是架构师的职责所在。

3、伪静态网页(rewrite技术实现,跟业务需求挂钩,一般由开发实现,运维发布更新)

缺点:伪静态网页不会提高性能,反而会一定程度降低。

功能:

一是让搜索引擎收录网站内容,方便推广。二是提升用户访问体验(url中无&?等符号)

网站流量度量术语

ip访问量:独立IP计数,同一IP多次访问计数为1

pv访问量:Page View

uv访问量:Unique Vistor 独立访客量

www服务概述

1、常用提供静态程序服务软件apache、nginx

2、常用提供动态服务软件

php:配合apache解析动态程序,使用mod_php5.so(module);配合nginx解析动态程序常用Fastcgi守护进程模式。tomcat:Tomcat只能算Web Container,是官方指定的JSP&Servlet容器。只实现了JSP/Servlet的相关规范,不支持EJB(硬伤啊)!不过Tomcat配合jboss和apache可以实现j2ee应用服务器功能一般来说考虑stucts等架构tomcat就可以了,但如果考虑EJB的话,WebLogic是比较好的选择。Jboss (免费):JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。weblogic (收费) :weblogic是j2ee的应用服务器(application server),包括ejb ,jsp,servlet,jms等等,全能型的。是商业软件里排名第一的容器(JSP、servlet、EJB等),并提供其他如JAVA编辑等工具,是一个综合的开发及运行环境。resin:大型动态web服务主流,互联网java容器主流(如jsp、do)IIS:微软windows下的web服务软件(如asp、aspx)

NginxWeb服务

主要应用场景:

使用Nginx运行html、js、css、小图片等静态数据Nginx结合FastCGI运行PHP等动态程序(常用用fastcgi_pass方式)Nginx结合tomcat/resin等支持java动态程序(常用proxy_pass方式)

安装nginx(编译安装)

yum安装nginx

虚拟主机概念

在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立得对外提供服务,对于apache来说,一个虚拟主机的标签段通常包含在一对标签内,对于nginx来说,就是一个server{}段

基于IP的虚拟主机访问:

基于端口的虚拟主机访问:

location语法

=精确匹配,优先级最高

~区分大小写匹配

~*不区分大小写匹配

^~常规字符匹配后,不做正则表达式检查

rewrite

语法格式

使用位置:server,location,if

举例说明(permanent301 redirect302)

nginx访问认证(了解)

1、添加配置文件

location或server中

auth_basic "oldboy training";

auth_basic_user_file /usr/local/nginx/conf/htpasswd;

2、htpasswd -cb /usr/local/nginx/conf/htpasswd oldboy 123456 #生成密码文件

403状态的解决

1、没有index.html、或者没有设置index

2、没有权限

PHP服务

FastCGI介绍

一个可伸缩的、高速的在HTTP服务器和动态脚本语言间通信的接口(在linux下,FastCGI接口即为socket),主要优点是把动态语言和HTTP服务器分离开来

nginx通过FastCGI借口和动态脚本语言PHP交换逻辑图

php安装

1、检查php安装所需的lib库

libmcrypt-devel在官方的yum源中没有,需要首先配置epel第三方yum源:

rpm -qa libxml2-devel libpng-devel libjpeg-devel libmcrypt-devel mcrypt

rpm -qa freetype-devel gd-devel curl-devel libxslt-devel zlib-devel mhash

2、下载、配置PHP安装参数

3、调整配置文件

pwd/usr/local/php-5.6.38php --ini #检查php安装的配置文件定义的路径cp php.ini-production /etc/php.ini mkdir -p /etc/php.dcp /usr/local/php-5.6.38/etc/php-fpm.conf.default /usr/local/php-5.6.38/etc/php-fpm.confcp /usr/local/php-5.6.38/sbin/php-fpm /etc/init.d/php-fpmln -s /usr/local/php-5.6.38 /usr/local/php/usr/init.d/php-fpm #启动php

4、配置测试解析php

#去除nginx.conf中匹配php的location注释,然后主要修改的就是fastcgi_param中的/scripts 为 $document_rootlocation ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }

编辑vim test.php文件放到根目录html下

/usr/local/nginx/sbin/nginx -s reload

浏览器输入地址/test.php,验证是否可以正常解析。

mysql数据库

DNS服务

windows 客户端DNS解析相关维护命令

1)查看windows客户端本地dns缓存

ifconfig /displaydns #显示dns cache

2)清除windows客户端本地dns缓存的dns解析记录

ipconfig /flushdns

3)windows系统下hosts域名解析记录位置

C:\Windows\System32\drivers\etc\hosts

Tomcat

概述:

安装

官网下载jdk和tomcat安装包部署Java环境tar xf jdk-8u60-linux-x64.tar.gz -C /application/ln -s /application/jdk1.8.0_60 /application/jdksed -i.ori '$a export JAVA_HOME=/application/jdk\nexport PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH\nexport CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/:$JAVA_HOME/lib/tools.jar' /etc/profilesource /etc/profilejava -version安装tomcattar -xf apache-tomcat-8.0.27.tar.gz -C /application/ln -s /application/apache-tomcat-8.0.27 /application/tomcatecho 'export TOMCAT_HOME=/application/tomcat\nexport CATALINA_HOME=/application/tomcat' >>/etc/profilesource /etc/profile/application/tomcat/bin/version.shchown -R root:root /application/jdk/ /application/tomcat/

tomcat启动成功的标志:tail /usr/local/tomcat/logs/catalina.out 日志中找到org.apache.catalina.startup.Catalina.start Server startup in 573 ms 语句

日常运维注意/log/文件夹下catalina.out运行日志文件不断增大占用空间。

unpackWARs="true" autoDeploy="true">

Redis

概述

参考维护文档

Redisdoc.com

特点:

缓存服务器(数据库)

速度快、支持多种数据结构、持久化、主从复制、支持过期时间、支持事务、消息订阅

对比memcached,多了主从和持久化功能以及多数据结构支持。

应用场景:

数据缓存、会话缓存(保存web回话信息)、排行榜/计数器、消息队列

安装配置.

docker

概述

docker的三大特性构建、运输、运行(一次构建、多处运行)

docker是传统cs架构,组要分为三大组件镜像、容器、仓库。

安装

简单操作

镜像操作docker search nginxdocker pull nginxdocker save nginx >/tmp/nginx.tar.gz #保存镜像(导出镜像)docker load < /tmp/nginx.tar.gz #导入镜像docker images # 查看镜像列表docker rmi nginx #删除镜像/var/lib/docker/ #docker默认路径/usr/lib/systemd/system/docker.service #docker配置文件,可指定docker内核参数(centos7)环境变量等,需daemon-reload 重启docker服务docker daemon --help #查看docker内核参数帮助容器操作docker run -it --name mytest alpine sh #启动镜像alpine,使用-it参数进入到docker终端中,--name参数指定容器运行名字而不是随机生成docker inspect mytest #查看容器运行的详细信息。exit#退出docker终端,此时如果此运行中的镜像里无其他进程运行,那么退出终端时,此镜像会自动关闭,使用docker ps 命令无法显示。让退出终端后的空镜像继续运行操作:ctrl 不放手 p qdocker rm -f mytest #强制删除容器,运行中的也可以删除。docker ps #显示正在运行的docker容器docker ps -a #显示所有容器docker exec #docker exec 命令会在运行中的容器执行一个新进程。docker commit #docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。docker inspect or #ocker inspect命令会提取出容器或者镜像最顶层的元数据。

上一篇:ITIL与运维管理
下一篇:京东到家Loki日志系统实践
相关文章

 发表评论

暂时没有评论,来抢沙发吧~