集群规划说明

集群架构概念图示

集群案例规划

集群主机规划表

关于主机规划注意事项:

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

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

备份服务器(10.195.236.142)

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

rsync 具有如下的基本特性:

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

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  #该选项指定当该模块传输文件时守护进程应该具有的uid
gid = rsync
use 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 --daemonif [ $? -eq 0 -a `ps -ef | grep -v grep| grep rsync |wc -l ` -gt 0];then action "Starting Rsync:" /bin/truesleep 1elseaction "Starting Rsync:" /bin/falsesleep 1fi
}
stop(){pkill rsync;sleep 1;pkill rsyncif [`ps -ef | grep -v grep | grep "rsync --daemon"| wc -l` -lt 1];thenaction "Stopting Rsync:`ps -ef | grep -v grep | grep rsync | wc -l`" /bin/truesleepelseaction "Stopting Rsync:`ps -ef | grep -v grep | grep "rsync --daemon"| wc -l`" /bin/falsesleep 1fi
}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的备份目录必须都为/backup
  • web服务器站点目录假定为/var/www/html
  • web服务器本地仅保留七天内备份,并且每天备份当天数据到backup服务器
  • 备份服务器上检查备份结果是否正常,并在每天06点将备份结果发送给管理员信箱
  • 备份服务器上每周六的数据都保留,其他备份仅保留180天。

思路:

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

解决方案:

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

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

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

#!/bin/bash
export PATH=/sbin:/bin:/usr/bin:/usr/sbin
IP=$(ifconfig | awk -F "[ :]+" 'NR==2{print $4}')
HostName=$(uname -n)
BakPath=/backup
mkdir $BakPath/$HostName_$IP -pif [$(date +%w) -eq 7]:then #if [ "$(date +%w)" -eq "4" ]; then  date="$(date +%F -d "-1day")_week6"else  date="$(date +%F -d "-1day")"fi
cd / &&\
tar -czfh $BakPath/$HostName_$IP/webdata_${date}.tar.gz var/spool/www &&\
tar -czf $BakPath/$HostName_$IP/webaccess_log_${date}.tar.gz var/log/httpd &&\
find $BakPath/$HostName_$IP/ -type f -mtime -1 -name "*.tar.gz"|xargs md5sum > $BakPath/$HostName_$IP/md5_flag_${date} #给所生成的压缩包文件生成md5校验码并存到flag文件中。
rsync -az $BakPath/ rsync_backup@10.195.236.142::backup --password-file=/etc/rsync.password #推送到备份服务器
find $BakPath -type f -mtime +7 -exec rm -f {} \  #删除七天以前文件

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

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

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

#!/bin/bash
export LANG=en
find /backup/ -name "flag_$(date +%F -d "-1day")*" |xargs md5sum -c &>/tmp/mail_$(date +%F -d "-1day").log
if [$(date +%w) -eq 7]:thendate="$(date +%F -d "-1day")_week6"
elsedate="$(date +%F -d "-1day")"
fifind /backup/ -type f -name "*.tag.gz" -a ! -name "*week6*" -mtime +180 -exec rm -f {} \
mail -s "backup check results `date +%F" "%X`" 1246436536@qq.com </tmp/mail_$(date +%F -d "-1day").log
\cp /tmp/mail_$(date +%F -d "-1day").log{,.ori}
echo "default mail md5 flag error" >/tmp/mail_$(date +%F -d "-1day").log

利用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

echo "测试邮件内容" | mail -s "-s指定邮件主题" 1246436536@qq.com

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 命令常用参数介绍

-m ,--monitor 始终保持事件的监听状态
-r ,--recursive 递归查询目录
-q,--quiet 仅打印监控事件的信息--timefmt 指定时间输出格式
--format 指定输出监控信息格式-e 通过此参数指定需要监控的事件,有以下几种常用事件类型:create 文件或目录被创建close_write 文件被创建或修改delete 文件被删除

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 line
docd /datarsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password
done

提示:

  • 上边那个脚本效率很低,效率低的原因在于只要目录出现变化就都会导致我整个目录下所有东西都被推送一遍。因此,我们可以做如下改动提高效率
#!/bin/bashPath=/data
backup_Server=172.16.1.41/usr/bin/inotifywait -mrq --format '%w%f' -e create,close_write,delete /data  | while read line
doif [ -f $line ];thenrsync -az $line --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.password       elsecd $Path &&\rsync -az ./ --delete rsync_backup@$backup_Server::nfsbackup --password-file=/etc/rsync.passwordfi
done

脚本可以加入开机启动:

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

7、优化

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

echo "50000000" > /proc/sys/fs/inotify/max_user_watches
echo "326790" > /proc/sys/fs/inotify/max_queued_events
sysctl -p

8、inotify优缺点

优点:

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

缺点:

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

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

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

sersync实现实时备份

特点:

支持配置文件管理

真正的守护进程socket

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

第三方的http接口(例如更新cdn缓存)

默认多线程rsync同步

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

2、安装sersync工具

sersync下载地址:https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz,上传sersync2.5.4_64bit_binary_stable_final.tar.gz到/usr/local/src目录下

#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":#源服务器同步目录

<remote ip="192.168.0.50" name="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         <localpath watch="/opt/tongbu">25             <remote ip="127.0.0.1" name="tongbu1"/>26             <!--<remote ip="192.168.8.39" name="tongbu"/>-->27             <!--<remote ip="192.168.8.40" name="tongbu"/>-->28         </localpath>
修改后的内容为:
24         <localpath watch="/data/www">
25             <remote ip="10.1.20.109" name="www"/>
26         </localpath>修改29--35行,认证部分(rsync密码认证)
29         <rsync>
30             <commonParams params="-artuz"/>
31             <auth start="false" users="root" passwordfile="/etc/rsync.pas"/>
32             <userDefinedPort start="false" port="874"/><!-- port=874 -->
33             <timeout start="false" time="100"/><!-- timeout=100 -->
34             <ssh start="false"/>
35         </rsync>修改后的内容如下:
27         <rsync>
28             <commonParams params="-artuz"/>
29             <auth start="true" users="rsync_backup" passwordfile="/etc/rsync.password"/>
30             <userDefinedPort start="false" port="874"/><!-- port=874 -->
31             <timeout start="true" time="100"/><!-- timeout=100 -->
32             <ssh start="false"/>
33         </rsync>

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客户端同时读写文件,需要有以下几个权限注意:

  1.   nfs服务器/etc/exports配置文件中的(rw)读写共享权限是否正确
  2.   nfs服务器实际要共享的NFS目录权限是否具有w权限,及服务器本地目录的安全权限
  3.   每台机器都对应存在和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<<eof

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这两个daemon
  • rpcbind: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 on
  • chkconfig 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 oldgirl
echo 123456 |passwd --stdin oldgirl
su - oldgirl
#目标服务器上配置sudoers,给oldgirl管理用户提权(rsync命令)否则系统权限目录无法进行文件推送:
echo "oldgirl ALL= NOPASSWD: /usr/bin/rsync" >>/etc/sudoers
visudo -c

2、管理机上创建密钥对

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

[root@zqq-study dsh]# ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1
[root@zqq-study dsh]# ls /root/.ssh/
id_dsa id_dsa.pub #创建密钥后,会在/root/.ssh目录下生成锁和钥匙

非交互式: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/bash
if [$# -ne 2]:thenecho " USAGE:/bin/sh $0 Sourcefile Destfile"exit 1
fisource /etc/init.d/functionsfor key in 8 9 12 14 15 18 21 45 67
doscp -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]:thenaction "FenFa host 172.16.1.$key" /bin/trueelseaction "FenFa host 172.16.1.$key" /bin/fslsefi
done

#批量分发脚本,指定单个服务器、源文件、目的路径作为参数
#!/bin/bash
if [$# -ne 3]:thenecho " 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>&1if [$? -eq 0]:thenaction "FenFa host $3" /bin/trueelseaction "FenFa host $3" /bin/fslsefi
done

#批量分发脚本,依次指定源文件、目的路径、IP地址若干作为参数
#!/bin/bash
if [$# -le 3]:thenecho " USAGE:/bin/sh $0 Sourcefile Destfile IPADR......"exit 1
fisource /etc/init.d/functionsshift 2 #移动变量,表示移除前几个变量
for key in $@
doscp -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>&1if [$? -eq 0]:thenaction "FenFa host 172.16.1.$key" /bin/trueelseaction "FenFa host 172.16.1.$key" /bin/fslsefi
done

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

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

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

#目标服务器上配置sudoers,给oldgirl用户提权:
echo "oldgirl ALL= NOPASSWD: /usr/bin/rsync" >>/etc/sudoers
visudo -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/hosts
ssh -p2211 -t oldgirl@172.16.1.8 sudo rsync ~/hosts /etc/hsots #-t允许执行远程sudo命令

WEB服务

http请求响应流程

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(编译安装)

  • 1、yum install pcre pcre-devel openssl-devel -y #安装依赖
  • 2、useradd www -s /sbin/nologin -M
  • 3、wget -q http://nginx.org/download/nginx-1.8.1.tar.gz #到nginx官网http://nginx.org/复制下载链接,然后使用wget命令下载到本地
  • 4、tar -xf nginx-1.8.1.tar.gz
  • 5、./configure --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --prefix=/user/local/nginx-1.8.1/  #配置
  • 6、make &&make install #编译 &安装
  • 7、ln -s /usr/local/nginx-1.8.1/ /application/nginx #创建位置软连接,提供给开发或者其他脚本调用,以方便升级维护nginx
  • 8、/usr/local/nginx-1.8.1/sbin/nginx #启动nginx 不加任何参数
  • 9、/usr/local/nginx-1.8.1/sbin/nginx -V #显示nginx相关信息,和编译参数。

yum安装nginx

  • wget -q http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
  • rpm -ivh epel-release-6-8.noarch.rpm
  • yum install nginx -y

虚拟主机概念

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

基于域名的虚拟主机访问:DNS解析到IP地址后,根据IP:端口,建立tcp-http连接,sever端根据客户端的请求报文的请求头(如果使用ip访问,则没有请求头,直接找第一个位置的虚拟主机),拿到server_name,然后将请求发给相同server_name的虚拟站点。

基于IP的虚拟主机访问:

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

location语法

=精确匹配,优先级最高

~区分大小写匹配

~*不区分大小写匹配

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

rewrite

语法格式

    rewrite    <regex>    <replacement>    [flag];关键字         正则            替代内容           flag标记关键字:其中关键字rewrite不能改变正则:perl兼容正则表达式语句进行规则匹配替代内容:将正则匹配的内容替换成replacementflag标记:rewrite支持的flag标记flag标记说明:last  #本条规则匹配完成后,继续向下匹配新的location URI规则break  #本条规则匹配完成即终止,不再匹配后面的任何规则redirect  #返回302临时重定向,浏览器地址会显示跳转后的URL地址permanent  #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址

View Code

使用位置:server,location,if

举例说明(permanent301 redirect302)

server {listen 80;server_name www.360buy.com;rewrite ^/(.*) http://www.jd.com/$1 permanent;
}
server {listen 80;server_name www.jd.com;location / {root html/www;index index.html index.htm;}
}

View Code

http {# 定义image日志格式log_format imagelog '[$time_local] ' $image_file ' ' $image_type ' ' $body_bytes_sent ' ' $status;# 开启重写日志rewrite_log on;server {root /home/www;location / {# 重写规则信息error_log logs/rewrite.log notice; # 注意这里要用‘’单引号引起来,避免{}rewrite '^/images/([a-z]{2})/([a-z0-9]{5})/(.*)\.(png|jpg|gif)$' /data?file=$3.$4;# 注意不能在上面这条规则后面加上“last”参数,否则下面的set指令不会执行set $image_file $3;set $image_type $4;}location /data {# 指定针对图片的日志格式,来分析图片类型和大小access_log logs/images.log mian;root /data/images;# 应用前面定义的变量。判断首先文件在不在,不在再判断目录在不在,如果还不在就跳转到最后一个url里try_files /$arg_file /image404.html;}location = /image404.html {# 图片不存在返回特定的信息return 404 "image not found\n";}
}###
对形如/images/ef/uh7b3/test.png的请求,重写到/data?file=test.png,于是匹配到location /data,先看/data/images/test.png文件存不存在,如果存在则正常响应,如果不存在则重写tryfiles到新的image404 location,直接返回404状态码。
###

View Code

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源:

wet -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

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

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

libiconv-devel包无yum源,需下载安装指定repo包然后再指定yum的repo包安装(https://pkgs.org/download/libiconv-devel; wget https://forensics.cert.org/cert-forensics-tools-release-el7.rpm;rpm -Uvh cert-forensics-tools-release-el7.rpm; yum --enablerepo=forensics install libiconv-devel -y)

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

./configure --prefix=/usr/local/php-5.6.38 \
--enable-fpm \
--enable-mysqlnd \--with-mysqli=mysqlnd \--with-pdo-mysql=mysqlnd \--with-fpm-user=www \--with-fpm-group=www \--with-config-file-path=/etc \--with-config-file-scan-dir=/etc/php.d

make && make install
注意:
--prefix=安装目录
--with-使用包名称[=包目录]
--enable-需要激活的功能
--with-mysql=mysqlnd,如果本机没有安装mysql,使用mysqlnd代替,因为php已经自带了mysql的客户端工具--with-fpm-user=www,php指定用户要和nginx一样--with-apxs2=/usr/local/apache/bin/apxs #php使用此选项生成模块嵌入到apache(到httpd.conf)来配合apache的动态交互.当然也可以使用fastcgI,但LAMP中一般都用模块方式。
如果失败,使用make clean ,然后重新配置、编译、安装。

3、调整配置文件

pwd
/usr/local/php-5.6.38
php --ini #检查php安装的配置文件定义的路径
cp php.ini-production /etc/php.ini
mkdir -p /etc/php.d
cp /usr/local/php-5.6.38/etc/php-fpm.conf.default /usr/local/php-5.6.38/etc/php-fpm.conf
cp /usr/local/php-5.6.38/sbin/php-fpm /etc/init.d/php-fpm
ln -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_root
location ~ \.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下

<?php
phpinfo();
?>

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

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

mysql数据库

https://www.cnblogs.com/he-ding/p/10020688.html

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

概述:

web应用服务器和nginx、apache、lighthttpd等web服务器一样,具有处理html页面功能,主要用于servlet和jsp容器。java最为广泛应用的容器,其他还有resin、weblogic(收费国企等)

安装

官网下载jdk和tomcat安装包部署Java环境
tar xf jdk-8u60-linux-x64.tar.gz -C /application/
ln -s /application/jdk1.8.0_60 /application/jdk
sed -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/profile
source /etc/profile
java -version安装tomcat
tar -xf apache-tomcat-8.0.27.tar.gz -C /application/
ln -s /application/apache-tomcat-8.0.27 /application/tomcat
echo 'export TOMCAT_HOME=/application/tomcat\nexport CATALINA_HOME=/application/tomcat' >>/etc/profile
source /etc/profile
/application/tomcat/bin/version.sh
chown -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运行日志文件不断增大占用空间。

配置tomcat管理页面登陆(生产环境务必关闭)
vim conf/tomcat-users.xml #修改用户管理配置文件,增加管理角色账号
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
vim webapps/manager/META-INF/context.xml #修改manger访问地址控制
vim webapps/host-manager/META-INF/context.xml #修改host-manger访问地址控制
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.195\.\d+\.\d+"
重启tomcat

tomcat安装目录
bin 目录是二进制运行文件
webapps/ROOT 目录是默认站点目录
生产环境tomcat安全优化
cd /webapps
mv docs examples host-manager manger /tmp/ #移除webapps目录下ROOT意外所有文件夹
mv ROOT/* /tmp #清空ROOT 文件夹

tomcat配置文件
/tomcat/conf/server.xml #主配置文件
<Server port="8005" shutdown="SHUTDOWN"> <!-- 关闭tomcat的端口和口令 -->
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" /> <!-- tomcat默认端口重定向端口 -->
               
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <!--与httpd通信的AJP协议端口,因常用nginx,注释关闭即可。-->
<Engine name="Catalina" defaultHost="localhost"> #配置域名
<Host name="localhost"  appBase="webapps"

unpackWARs="true" autoDeploy="true"> <!-- 应用程序app定义自动解压自动加载选项 -->

Redis

概述

参考维护文档

Redisdoc.com

特点:

缓存服务器(数据库)

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

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

应用场景:

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

安装配置.

docker

概述

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

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

安装
[root@pbx ~]# yum -y install docker
[root@pbx ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@pbx ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd-current --registry-mirror=https://a14c78qe.mirror.aliyuncs.com \ #找到ExecStart行,添加registry-mirror参数,修改docker下载仓库地址。
[root@pbx ~]# systemctl daemon-reload
[root@pbx ~]# systemctl start docker
[root@pbx ~]# systemctl status docker

简单操作
镜像操作
docker search nginx
docker pull nginx
docker 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 q
docker rm -f mytest #强制删除容器,运行中的也可以删除。
docker ps #显示正在运行的docker容器
docker ps -a #显示所有容器docker exec <running-container-id>  #docker exec 命令会在运行中的容器执行一个新进程。
docker commit <container-id>  #docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。
docker inspect <container-id> or <image-id> #ocker inspect命令会提取出容器或者镜像最顶层的元数据。

docker的http代理配置(通过修改/lib/systemd/system/docker.service文件增加配置环境方法无效)

mkdir -p /etc/systemd/system/docker.service.d
vim /etc/systemd/system/docker.service.d/http-proxy.conf
[Service]  #键入配置内容
Environment="HTTP_PROXY=http://pill:pill@node2:3128/"
systemctl daemon-reload #重新加载配置文件
systemctl restart docker # 重启docker
docker search nginx  #搜索nginx镜像 测试http连接

转载于:https://www.cnblogs.com/he-ding/p/10243190.html

linux运维架构篇相关推荐

  1. Linux运维架构师、SRE技术图谱

    Linux运维架构师.SRE技术图谱 Web服务器: apache, tomcat, nginx, lighttpd, varnish 监控: nagios. ganglia. cacti. zabb ...

  2. linux运维架构师职业规划

    1.假如你从来未接触过Linux的话,首先要做的就找一本指导书来学习.现在公认的Linux的入门书籍是"鸟哥的私房菜",讲的很全面,鸟哥的私房菜一共分为两部,一部是基础篇,一部是服 ...

  3. linux运维基础篇 unit14

    14.linux中设备的访问 1.设备访问 1.设备识别 /dev/xdxn                          ##硬盘设备/dev/sda1 /dev/cdrom           ...

  4. linux运维基础篇 unit7

    unit 7 1.进程定义 进程就是cpu未完成的工作 2.ps命令 ps a            ##关于当前环境的所有进程 x            ##与当前环境无关的所有进程 f       ...

  5. www.yaxjf.com+m.php,linux运维架构--PHP开发-零基础学习PHP视频教程

    Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...

  6. httpqyl.php,linux运维架构--PHP开发-零基础学习PHP视频教程

    Dockfile介绍 Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令.Docker程序将这些Dockerfile指令 ...

  7. Linux运维容器篇 k8s单节点二进制部署(1) ECTD部署+CA证书制作

    文章目录 一.环境配置 二.制作CA证书 1.传入脚本 2.创建CA证书 3 指定节点通讯证书 三 部署etcd集群 1 安装etcd包并传入证书 配置etcd启动脚本并生成cfg文件 配置node节 ...

  8. Linux运维工程师岗位前景及学习路线

    Linux运维工程师岗位前景及学习路线 1.1 什么是Linux? 大家日常使用电脑听歌.打游戏娱乐或处理日常工作时,接触到最多的就是Windows操作系统,电脑如果不安装Windows系统是无法进行 ...

  9. 跟老男孩学Linux运维:Web集群实战(运维人员必备书籍)

    号外,号外! 1.<跟老男孩学习Linux运维:核心命令案例精讲> 紧张编写中,已过半. 2.<老男孩的MySQL私房菜>即将出版, 紧张编写中,已过2/3. 3.<跟老 ...

最新文章

  1. BP as a Vendor and Customer Configuration
  2. Core官方DI解析(2)-ServiceProvider
  3. 关于 ASP.NET MVC 中的视图生成
  4. mysql查询字段变慢,MySQL Query IN()子句在索引列上变慢
  5. java怎么对用户做自定义模版打印_Printing tools 自定义模板打印的实现
  6. qca9377linux无线驱动,ubuntu下安装无线网卡去驱动Qualcomm-Atheros-QCA9377
  7. python制作照片_python3一键排版证件照(一寸照、二寸照),附源代码
  8. 2019年中总结之说走就走
  9. html价格划掉的样式,用css布局价格划线_价钱中划线_价格中间贯穿删除线效果样式布局...
  10. 03_跳转sucess方法和error方法
  11. 文明6/Civilization VI 全DLC解锁
  12. Esp32+Dht11+MQTT+Mysql实现测温数据传至数据库
  13. 03-docker系列-docker容器的基本操作
  14. 关于飞机材料阻燃测试标准ABD 0031
  15. 2010/12/19英语单词背诵
  16. 中山大学计算机类专业代码,各大学代码及专业代码
  17. python 开源项目 书_十大 Python 机器学习开源项目
  18. 风华秋实再度递表港交所:非控股权益亏损扩大,涉三七互娱等
  19. python画e指数函数_[宜配屋]听图阁
  20. Linux复制文件时出现权限不够的问题

热门文章

  1. 空字符python_Python中的None与 NULL(即空字符)的区别详解
  2. CUDA C编程权威指南 第四章 全局内存
  3. C语言 显示器键盘io
  4. 代替oracle dblink,oracle dblink
  5. VMware日志收集方法总结
  6. 专有网络 VPC > 快速入门 > 网络规划
  7. Spring Boot学习总结(14)——Spring Boot常见面试题汇总
  8. 你不知道的《阿里巴巴Java开发手册》背后故事
  9. android 客户端bks,Keytools Https双向认证(Android通用)
  10. mysql relay log 配置_mysql relay log参数汇总