Linux云计算个人学习总结(二)

高级文件系统

一、RSYNC概述

1、作用:快速的文件复制工具(支持本地和远程),以及删除、查看等基本功能。

2、特点:支持实时(inotify、sersync)的增量备份工具

3、模式:
	检查模式:按照指定规则检查需要被同步的文件列表
	同步模式:确定文件列表后,同步过程中需要进行的额外工作 

4、工作方式:
	本地文件系统同步
		rsync [OPTION...] SRC... [DEST]
	本地主机使用远程SHELL和远程主机同步(基于ssh)
		Pull(下载): rsync [OPTION...] [USER@]HOST:SRC... [DEST]
     			Push(上传): rsync [OPTION...] SRC... [USER@]HOST:DEST
	本地主机使用网络套接字连接远程主机同步(基于rsync)
		Pull: 
			rsync [OPTION...] [USER@]HOST::SRC... [DEST]
           				rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
     			Push: 
			rsync [OPTION...] SRC... [USER@]HOST::DEST
           				rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
	
	注意事项:
		第一个路径参数是源文件路径(可以同时指定多个路径),定义同步的基准
		路径的格式可以是本地,也可以是远端主机
		若主机地址和路径之间使用单冒号分割,表示使用远程SHELL的通信方式
		若主机地址和路径之间使用双冒号分割,表示使用rsync daemon的通信方式
		若只有一个路径,则表示查看,类似ls的效果
		目录后带斜线(目录内容,ls -l)与不带斜线(目录本身,ls -d)效果完全不一样

5、常用选项:
	v	显示rsync过程中的详细信息
		vvvv更详细的信息
	P	显示文件传输进度
	n	dry-run,测试模式
	r	递归
	t	保留mtime属性
	o	保留属主属性
	g	保留属组属性
	p	保留权限(不包括特殊权限)
	l	保留链接属性(仅复制链接文件本身)
	D	保留文件的类型(设备文件、特殊文件等)
	a	归档,相当于rtopgDl
	z	压缩
	R	使用相对路径
	W	使用完整备份(默认是增量)
	--max-size	限制传输的最大文件大小
	--min-size	限制传输的最小文件大小
	--exclude		排除指定的文件
	--delete		以SRC为基准,对DST进行同步。
	--backup		对DST已存在的文件进行备份,默认使用~做后缀名
	--existing		只更新DST已存在的文件
	--ignore-existing	只更新DST不存在的文件
	--remove-source-files	删除SRC已经成功传输的文件

6、实例:
	

7、规则
	--exclude 	设置排除规则 
	--exclude-from	从文件中读取排除项

	filter规则:
		exclude:排除规则	
		include:包含规则
		show:显示规则
		protect:保护规则
		hide:隐藏规则
		risk:取消保护规则 

	注意事项:
		路径:相对路径和绝对路径
		尾斜线:启用和不启用

	-i  	输出文件的过程及路径
		
		>	代表传输到本地主机(接收)
		<	代表传输到远程主机(发送)
		
		f	代表普通文件,其它值如d、L、D、S等
	
		T	修改时间不同
		
8、delete

二、构建基于RSYNC的同步服务器

1、配置文件

/etc/rsyncd.conf

2、启动方式

rsync --daemon

3、默认端口

873

4、命令格式

Pull: (下载)

rsync [OPTION...] [USER@]HOST::SRC... [DEST]

rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

Push: (上传)

rsync [OPTION...] SRC... [USER@]HOST::DEST

rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

5、配置文件选项:
	uid = nobody			rsync的运行用户,默认nobody
	gid = nobody			rsync的运行组,默认nobody
	use chroot = yes			传输开始前,将rsync禁锢在指定目录下运行
	max connections = 4		最大并发连接数量
	pid file = /var/run/rsyncd.pid		PID文件的路径及名称
	exclude = lost+found/		排除lost+found/目录			
	timeout = 900			客户端连接的超时时间
	dont compress			对特定文件类型,不进行压缩处理

	[ftp]				模块名称
	path = /home/ftp			模块对应的目录路径
	comment = ftp export area		目录说明

6:实验

基于rsync daemon的同步服务器

两台虚拟机:1台1.1客户端 1台1.254 服务器

服务器:

[root@zhao ~]# vim /etc/rsyncd.conf 主配置文件 cenots7有 之前的需要创建

port=888 非默认的端口

uid = rsync 用户

gid = rsync 组

use chroot = yes 禁锢在目录下,不能随边访问

max connections = 4 最大的连接资源

pid file = /var/run/rsyncd.pid 存放进程文件的目录

log file = /var/log/rsync.log 日志文件存放的目录

motd file = /var/rsync/rsync.motd 提示信息存放的目录(可以不加)

exclude = lost+found/ 错误文件目录

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 不需要压缩

fake super =yes 如果有特殊要求就以root用户来

[private] 共享名

path = /var/pri 共享名的目录路径

comment = read/write 简单说明(读写)

read only = false 权限(yes只读)读写访问

auth users = rsync_users 访问添加用户(只要不是纯数字就可以)

secrets file = /etc/rsyncd.passwd 密码文件的位置

[public] 公共目录

path = /var/pub 目录路径

comment = read 简单说明只读

read only = yes 权限只读

[root@zhao ~]# mkdir /var/rsyncd 创建目录

[root@zhao ~]# vim /var/rsyncd/rsync.motd 创建提示文件

welcome to RSYNC server: 随便写提示信息

[private]:read/write 读写访问

[public]:only read 只读访问

[root@zhao ~]# mkdir /var/{pri,pub} 创建两个目录

[root@zhao ~]# useradd -s /sbin/nologin -r rsync 创建系统用户

[root@zhao ~]# chown -R rsync:rsync /var/{pri,pub} 修改权限

[root@zhao ~]# vim /etc/rsyncd.passwd 默认没有自己创建(只认第一行)

必须加用户名

[root@zhao ~]# chmod 600 /etc/rsyncd.passwd 必须修改成管理员才能登陆

root@zhao ~]# netstat -anpt 查看没有启用

[root@zhao ~]# systemctl start rsyncd.service 开启rsyncd

root@zhao ~]# netstat -anpt 查看启用

root@zhao pri]# vim pri.txt 创建测试用的文件

ot@zhao pub]# vim pub.txt 创建测试用的文件

客户端:

Pull(下载):

[root@localhost ~]# rsync --list-only --port 888 rsync_users@192.168.1.254::private 需要密码

[root@localhost ~]# rsync --list-only --port 888 rsync_users@192.168.1.254::public 不需要密码

[root@localhost ~]# rsync -avz --port 888 rsync_users@192.168.1.254::private/pri.txt /root下载

[root@localhost ~]# rsync -avz rsync://rsync_users@192.168.1.254:888/private/pri.txt /root 下载

如果不想输入密码(免密码验证)

[root@localhost ~]# echo "123456" >>/tmp/rsync_passwd 创建一个密码链接

[root@localhost ~]# chmod 600 /tmp/rsync_passwd 修改权限

[root@localhost ~]# rsync -avz rsync://rsync_users@192.168.1.254:888/private/pri.txt /root --password-file=/tmp/rsync_passwd 不需要密码下载

Push(上传):

[root@localhost ~]# vim web01.txt 创建测试文件

[root@localhost ~]# rsync -avz --port 888 web01.txt rsync_users@192.168.1.254::private --password-file=/tmp/rsync_passwd

去服务器端查看有这个文件

#rsync-avz web01.txt rsync://rsync_users@192.168.1.254:888/private/ --password-file=/tmp/rsync_passwd

三、构建基于SSH的同步服务器

1、语法结构(本地主机使用远程SHELL和远程主机同步(基于ssh))

Pull(下载): rsync [OPTION...] [USER@]HOST:SRC... [DEST]

Push(上传): rsync [OPTION...] SRC... [USER@]HOST:DEST

2、实验

基于ssh的同步服务器:

环境跟上面一样

服务器:

[root@zhao ~]# mkdir /var/ssh 创建一个同步目录

[root@zhao ~]# useradd test 创建一个用户

root@zhao ~]# passwd test test密码

[root@zhao ssh]# vim ssh.txt 测试文件

客户端:

[root@localhost ~]# rsync -avz --list-only test@192.168.1.254:/var/ssh 有哪些

[root@localhost ~]# rsync -avz test@192.168.1.254:/var/ssh/ssh.txt /root 下载

单独给test目录在ssh目录里权限:(服务器)

[root@zhao var]# setfacl -m u:test:rwx ssh/

[root@localhost ~]# rsync -avz web01.txt test@192.168.1.254:/var/ssh 上传

服务器查看有

免密码验证:

[root@localhost ~]# ssh-keygen -t rsa 生成密钥对

[root@localhost ~]# ssh-copy-id test@192.168.1.254

四、通过远程SSH连接rsync daemon(二和三的混用)

服务器端rsync daemon没有启动的情况下,依然可以访问其部分配置

1、语法结构

rsync [options] --rsh="ssh -l ssh_name" anth_user@host::src

rsync [options] -e "ssh -l ssh_user" anth_user@host::rsc

rsync [options] -e "ssh -l ssh_user" rsync://anth_user@host/src

2、实验

客户端验证:

服务器:

[root@zhao var]# systemctl stop rsyncd.service 关闭rsync

[root@zhao var]# netstat -anpt 查看端口没有888

客户端:

[root@localhost ~]# rm -rf pri.txt 删除

[root@localhost ~]# rsync -avz --rsh="ssh -l root" rsync_users@192.168.1.254::private/pri.txt /root 第一次输入root密码(zbb827.) 第二次输入程序用户密码(123456)

免密码验证:

[root@localhost ~]# ssh-keygen -t rsa 生成密钥对

[root@localhost ~]# ssh-copy-id root@192.168.1.254 公钥信息

[root@localhost ~]# rsync -avz --rsh="ssh -l root" rsync_users@192.168.1.254::private/pri.txt /root 只需输入程序用户密码

[root@localhost ~]# rsync -avz --rsh="ssh -l root" rsync_users@192.168.1.254::private/pri.txt /root --password-file=/tmp/rsync_passwd 不需要输入密码

五、实时数据同步:

1、工具

inotify、 sersync、 lsyncd

rsync+inotify

2、inotify

inotify-tools

inotifywait:检查文件变化,实现监控功能

inotifywaych:收集统计信息

3、内核参数

fs.inotify.max_queued_events = 16384

event可排队的最大数量

fs.inotify.max_user_instances = 128

用户可创建的instances(实列)的最大数量

fs.inotify.max_user_watches = 8192

每个instances中可以监控的最大文件数

修改:echo "数值" > /proc/sys/fs/inotify/类型(man_user_watches)

4、inotify常见选项

m 持久监控

r 递归(有可能需要调整最大文件数)

q 仅输出基本信息

e 指定监控对象

--exclude 排除指定的监控对象

--timefmt 输出的时间格式"%Y%m%d%H%M%S"

--format 自定义输出格式

%w 输出监控路径

%f 输出产生事见的具体文件名

%e 输出事见名称

%T 输出时间

5、Inotifywait 监控对象

access 文件被访问

modify 文件被写入

attrib 元数据被修改

close_write 打开的文件被关闭,为写入打开文件

close_nowrite 打开的文件被关闭,为读取打开文件

close close_write+close_nowrite

open 文件被打开

moved to 向监控对象移入文件

moved from 将监控对象中的文件移出

create 创建文件

delete 删除文件

umount 挂载在监控目录上的文件系统被umount

isdir 监控目录相关操作

常见监控对象:

close_write、moved to、movedfrom、delete、isdir

6、实验

注意事项:

1、尽可能同步目录,而不是产生事件的单个文件

2、尽量减少批量操作,多次触发rsync,影响服务器性能

3、对不同事件,可单独设计inotify+rsync的脚本

4、rsync默认是单向同步

实验:添加一台虚拟机

Ip1.3安装inotify工具:(eject换光盘)

[root@zhao ~]# cd /run/media/root/20130806_063316/ 进入光盘

20130806_063316]# cp * /usr/src/ 复制到

]# cd /usr/src/ 进到目录

换成系统盘

重新挂载光盘

如果有这三个文件说明支持

yum -y install gcc*

[root@zhao src]# tar -zxf inotify-tools-3.14.tar.gz 解压

[root@zhao inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify 进入编译

make && make install 安装

默认有两个工具

echo P A T H 查看环境变量 P A T H = PATH 查看环境变量 PATH= PATH查看环境变量PATH=PATH:/usr/local/inotify/bin/ 把这个路径添加到变量里

sysctl -a | grep inotify 查看与inotify相关的数据值

简单的全部监控(打开两个终端):

1终端root@zhao ~]# mkdir test 创建监控目录

[root@zhao ~]# inotifywait -mrq test 监控全部

2终端:输入随便命令

利用脚本监控

vim 1.sh

inotifywait -mrq -e delete,close_write,moved_to,moved_from,isdir /root/test | while read line 监控test目录里的变化 (类型) 事件分析

do

if echo KaTeX parse error: Expected 'EOF', got '&' at position 24: ...ep -i "delete" &̲>//dev/null 如果是...{line}" >> /root/delete.log 所有跟删除有关的

else

rsync -az /root/test root@192.168.1.100:/tmp 如果不是删除就放到

fi

done

建立密钥对:

root@zhao ~]# ssh-keygen -t rsa

[root@zhao ~]# ssh-copy-id 192.168.1.100

测试:

#设置两个变量 dir 监控的目录 dst 监控的ip

#inotifywait 对删除,打开并写入,移动文件,监控目录等操作进行监控,除了swp文件不监控 对监控时间,格式加以说明。 监控的目录 循环里面的值line

如果执行的操作是delete|moved_from 则扔进垃圾站

如果是其他的值 值+字符串和date的时间格式 追加到/tmp/www.log目录中记录

#同步 delete 单方向的一致同步除了SWP和SWX两种文件外 将$dir 中的文件 通过ssh的方式发送给另一台服务器

#如果上一条命令成功最显示 send成功不成功就显示 失败 并输入到指定文件中

一、存储概述

1、存储架构:

封闭性系统的存储:设计之初就明确用途和使用场景

开放性系统的存储:设计之初无法明确用途和使用场景

2、开放系统的存储类型:

内置存储

外挂存储

3、外挂存储:

DAS:直连式存储

特点:

安装简单,性价比高

通常不具备灾备能力

不适合对性能要求高的场景

NAS:网络附加存储

特点:

提供文件级的网络存储

支持多计算机

即插即用

samba、NFS、CIFS

SAN:存储区域网络

二、ISCSI

1、定义:

互联网小型计算机系统接口

2、优势:

使用SAN网络进行存储优化

使用软件配置进行存储分配,无需额外物理设备

简化数据复制、迁移和灾备

3、名词:

启动器(initiator):iscsi客户端

目标(target):iscsi服务器端存储资源

ACL:访问控制列表

发现(discovery):查询服务器端已列出可配置的目标

IQN:iscsi的唯一名称,用于命名和识别启动器和目标

LUN:逻辑单元,带编号的块设备,连接目标时使用

一个目标仅提供给客户端一个LUN

一个或多个LUN连接到一个目标

三、构建ISCSI网络存储服务器

两台虚拟机:1存储资源:两块磁盘1.1 2客户机:1.2

存储资源:

[root@localhost ~]# fdisk /dev/sdb 创建5个分区(4个)

t ~]# partprobe /dev/sdb 格式化

oot@localhost ~]# lsblk 查看磁盘

mdadm -C /dev/md0 --auto=yes -n 3 -l 5 -x 1 /dev/sdb{1,2,3,5} 创建raid5

mdadm -D /dev/md0 查看是否创建成功

yum -y install targetcli 服务器端的工具

systemctl start target 开启这个工具

targetcli 进入命令页面

/> cd backstores/block 进入

/backstores/block> create disk0 /dev/md0 创建disk0

/> iscsi/ 进入目录

/iscsi> create 生成iqn

创建一个逻辑单元

acls访问规则

退出一定要用exit

客户端:

[root@zhao ~]# rpm -q iscsi-initiator-utils 默认安装

服务打开

[root@zhao ~]# vim /etc/iscsi/initiatorname.iscsi

InitiatorName=iqn.2003-01.org.linux-iscsi.localhost.x8664:sn.e7d63749b7b6

		有了

四、cobbler网络装机

Cobbler(一键装机)

一,部署环境。

root@localhost ks_mirror]# vim /etc/cobbler/pxe/pxedefault.template 定制cobbler引导菜单默认

1,安装copbbler和必要的组件(通过镜像文件安装)

[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

root@localhost yum.repos.d]# yum -y install epel-release

root@localhost yum.repos.d]# yum -y install cobbler 用来快速建立linux网络安装环

root@localhost yum.repos.d]# yum -y install pykickstart 实现无人值守安装

[root@localhost yum.repos.d]# yum -y install cobbler-web debmirror 网页页面管理

root@localhost yum.repos.d]# yum -y install dhcp 给空白主机自动分配IP地址

[root@localhost yum.repos.d]# yum -y install httpd 作为控制台程序运行

Xinetd 提供访问控制、加强日志和资源管理功能

Tftp 提供引导镜像文件下载

rsync------远程同步管理,实现数据同步

2,修改cobbler配置文件

[root@zhao yum.repos.d]# systemctl start httpd

oot@localhost yum.repos.d]# systemctl start cobblerd.service

[root@localhost yum.repos.d]# cobbler check ##cobbler检测需要优化项

[root@localhost yum.repos.d]# vim /etc/cobbler/settings

next_server: 192.168.1.1 本地服务器地址

server: 192.168.1.1

manage_dhcp: 1 dhcp

[root@localhost yum.repos.d]# vim /etc/xinetd.d/tftp 进行tftp优化

disable = no no|yes

[root@localhost yum.repos.d]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/cobbler/loaders/

[root@localhost yum.repos.d]# systemctl start rsyncd 优化开启远程同步管理服务器

root@localhost yum.repos.d]# vim /etc/debmirror.conf

#@dists="sid"; 注释

#@arches="i386";

[root@localhost yum.repos.d]# openssl passwd -1 -salt '123456' '123456' 优化设置管理员密码

$1 123456 123456 123456wOSEtcyiP2N/IfIl15W6Z0 复制这段加密过后的密文

[root@localhost yum.repos.d]# vim /etc/cobbler/settings 修改配置文件,将密文添加到此处

[root@localhost yum.repos.d]# systemctl start rsyncd

root@localhost yum.repos.d]# systemctl restart cobblerd.service

3,[root@localhost yum.repos.d]# vim /etc/cobbler/dhcp.template 优化dhcp修改配置文件

subnet 192.168.1.0 netmask 255.255.255.0 { 修改网段

option routers 192.168.1.1; 网关

option domain-name-servers 192.168.1.1; dns地址

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.1.100 192.168.1.254; 地址池

[root@localhost yum.repos.d]# cobbler sync 同步生成dhcp配置文件(/etc/dhcp/dhcpd.conf)

[root@localhost yum.repos.d]# systemctl start dhcpd

root@localhost yum.repos.d]# cobbler import --path=/media/cdrom/ --name=CentOS7.8-x86_64 --arch=x86_64 导入镜像文件 (等)

root@localhost yum.repos.d]# cobbler list 查看文件信息

[root@localhost mnt]# cd /var/www/cobbler/ks_mirror/ 查看的

[root@localhost ks_mirror]# ls

开启全部服务

[root@localhost yum.repos.d]# systemctl restart cobblerd.service

root@localhost yum.repos.d]# systemctl restart tftp

[root@localhost yum.repos.d]# systemctl start dhcpd

开一台机器进行通过cobbler安装

一、日志概述

1、日志管理系统

elasticsearch、logstash、solr、kibana、splunk

solr   	apache  lucene
splunk	SPL	
elasticsearch
	json	

2、ELK平台

elasticsearch、logstash、kibana

优势:
	处理方式灵活
	配置简单
	检索性能高效
	集群扩展	
	前端界面

elasticsearch:分布式搜索和分析引擎,提供对大容量数据的存储、搜索、分析等
logstash:数据收集引擎,支持动态的从数据源采集信息
kibana:数据分析和可视化平台
filebeat:数据采集器,安装在指定的数据源主机

3、常见架构

二、安装步骤

1、环境准备(两台)

a、防火墙禁用

b、selinux禁用

c、安装JDK

rpm安装包放置两台虚拟机

cp -r rpm/ /usr/src/

cd /usr/src/rpm/

yum -y install *.rpm

	vim  /etc/profile
			JAVA_HOME=/amoeba/jdk

export JAVA_HOME

PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH

export PATH

CLASSPATH=.: J A V A H O M E / l i b / t o o l s . j a r : JAVA_HOME/lib/tools.jar: JAVAHOME/lib/tools.jar:JAVA_HOME/lib/dt.jar:$CLASSPATH

export CLASSPATH

	source  /etc/profile
d、 打开的最大文件数
	vim  /etc/security/limits.conf
	*       soft    nofile          65535
	*       hard    nofile          65535/etc/yum.repos.d/
e、准备软件
		
	rpm包
			
	rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
		
	vim /etc/yum.repos.d/es.repo
	[elasticsearch]
		name=Elasticsearch repository for 7.x packages
		baseurl=https://artifacts.elastic.co/packages/7.x/yum
		gpgcheck=1
		gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
		enabled=1
		autorefresh=1
		type=rpm-md

	yum -y install  elasticsearch  kibana  logstash  filebeat 

3、配置elasticsearch(分布式搜索引擎 分析 存储)

72.130 72.131

Yum -y install *.rpm

[root@zhao rpm]# vim /etc/elasticsearch/elasticsearch.yml

另外一台除了

其他都一样

[root@zhao rpm]# mkdir -p /data/elk/{data,logs}

[root@zhao rpm]# chown -R elasticsearch:elasticsearch /data/elk/{data,logs}

[root@zhao rpm]# systemctl start elasticsearch.service

表示成功

[root@zhao rpm]# netstat -nptl 查看9200、9300 端口

[root@zhao rpm]# vim /etc/elasticsearch/elasticsearch.yml

[root@localhost rpm]# systemctl restart elasticsearch.service

[root@localhost rpm]# yum -y install git

[root@localhost ~]# git clone git://github.com/mobz/elasticsearch-head.git

root@localhost ~]# cp -r elasticsearch-head/ /usr/local/

[root@localhost yum.repos.d]# wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

ot@localhost yum.repos.d]# yum -y install epel-release

[root@localhost yum.repos.d]# yum -y install npm

[root@localhost yum.repos.d]# npm config set registry http://registry.npm.taobao.org

[root@localhost yum.repos.d]# npm install -g grunt-cli 等

[root@localhost ~]# cd /usr/local/elasticsearch-head/ cd _site/

[root@localhost _site]# vim /usr/local/elasticsearch-head/Gruntfile.js

[root@localhost _site]# vim app.js 192.168.72.131:9200

[root@localhost _site]# cd /usr/local/elasticsearch-head/

[root@localhost elasticsearch-head]# npm install 等

[root@localhost elasticsearch-head]# npm install 检查

1、首先改成公网 关闭防火墙 72.131

oot@zhao elasticsearch-head]# grunt server & 运行server服务 后台

符合查询 写完之后验证 提交请求

回到概览 点击刷新

分片:就是如果有四个片,有两个文件那就把四个分片分成两份,一个文件有两个分片,数据的切片 ,存储容器

主分片(存储数据)和从分片(提供主分片备份)

索引:基于文档文件快速查找的工具(testindex)但这个上面的索引类似于数据库也就是说是数据集合(相同的数据放在一起就是一个集合)

集群状态:

绿色:正常工作状态

黄色:主分片正常工作,但至少一个主分区对应的从分片没有正常工作

红色:至少一个主分片没有正常工作

[root@zhao ~]# eject

[root@zhao ~]# cd /run/media/root/20210316_104643/

[root@zhao 20210316_104643]# cp cerebro-0.9.3.tgz /usr/local/

[root@zhao 20210316_104643]# cd /usr/local/

[root@zhao local]# tar -zxf cerebro-0.9.3.tgz -C /usr/local/

[root@zhao local]# mv cerebro-0.9.3/ cerebro 改名或软连接

[root@zhao local]# cd cerebro/conf/

[root@zhao conf]# vim application.conf

[root@zhao conf]# cd /usr/local/cerebro/

[root@zhao cerebro]# vim cerebro-up 端口只要不是特权端口

[root@zhao cerebro]# chmod +x cerebro-up 给执行权限

[root@zhao cerebro]# vim /etc/systemd/system/cerebro.service 启动脚本

[root@zhao cerebro]# systemctl daemon-reload

[root@zhao cerebro]# systemctl enable cerebro

[root@zhao cerebro]# systemctl start cerebro

[root@zhao cerebro]# systemctl status cerebro

点用户名

3、首先改成公网72.132 关闭防火墙 安装logstash (日志的收集 分析过滤)

oot@zhao ~]# eject

[root@zhao ~]# cd /run/media/root/20210316_104643/

[root@zhao 20210316_104643]# cp logstash-7.11.2-x86_64.rpm /usr/src/

[root@zhao 20210316_104643]# cd /usr/src/

[root@zhao src]# rpm -ivh logstash-7.11.2-x86_64.rpm

[root@zhao src]# vim /etc/logstash/logstash.yml

自动加载

10s以上

本机地址

[root@zhao src]# chown -R logstash:logstash /usr/share/ 不改服务会报错

root@zhao src]# systemctl enable logstash 自动启动成功

[root@zhao src]# systemctl start logstash

[root@zhao src]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { stdout{ codec=> rubydebug }}' 你要输入什么信息 你要输出什么信息(对象什么样的格式) 输入到屏幕上

[root@zhao src]# /usr/share/logstash/bin/logstash -e 'input { stdin{} } output { file { path => "/tmp/log-%{+YYY.MM.dd}message.gz"}}' 输入到文件上 message.gz(随便起)

输入 help

logstash的语法规则:

1、index类型

Index => "log_index_%{+YYY.MM.dd}"

2、hosts类型

hosts => ["192.168.1.1:80","192.168.1.2:8080"]

3、document_type文档类型

4、template模板类型

template_name

template_overwrite

manage_template

4、首先改成公网 72.133 关闭防火墙 安装kibana (图形界面 可视化)

oot@zhao ~]# eject

[root@zhao ~]# cd /run/media/root/20210316_104643/

[root@localhost 20210316_104643]# cp kibana-7.11.2-x86_64.rpm /usr/src/

[root@localhost 20210316_104643]# cd /usr/src/

[root@localhost src]# rpm -ivh kibana-7.11.2-x86_64.rpm

[root@localhost src]# vim /etc/kibana/kibana.yml

可以从任意地址访问

从131服务器访问

索引名称

启动中文补丁

[root@localhost src]# systemctl start kibana 启动

[root@localhost src]# netstat -anpt 查看5601是否启动

192.168.72.131:5601

一、概述

1、存储方式

单机、独立服务器(图片、页面)、分布式

2、分布式存储的特点:

扩展能力:1G可以扩展成2G

可用性:可以设置多个存储电脑

弹性存储:有一个虚拟存储空间

缺点:设置麻烦,需要多台服务器

3、分布式文件系统(DFS)

就是可以放在不同的节点

最早的是NFS:网络文件系统

4、分布式文件系统的类型

GFS、HDFS、CEPH、MogileFS、MooseFS、TFS

	GFS(谷歌)、Mapreduce、Bigtable(三篇论文)

世界最大的三大数据软件:

hadoop分布式文件系统 hadoop之父

spark

storm

	mogileFS danga     memcached
	
	moosefs 

	TFS

	CEPH  高性能分布式文件系统 
	CRUSH算法
	openstack

4、分布式存储类型
	文件存储:支持POSIX(可移植操作系统接口,有这个就可以在liunx和weindos系统都可以)接口,提供并行化访问的能力和冗余机制,常用于存储非结构化数据
	块存储:通过qemu或iscsi(互联网存储接口)协议访问,常用于存储结构化数据
	对象存储:以对象作为基本的存储单元,主要用于存储非结构化数据(网盘)

结构化数据:数据能够用统一的结构来表示

非结构化数据:无法用数字来表示的数据?(图片、网页文件音频)

半结构化数据:有A有B 文档

二、CEPH集群

1、基本组件:

CEPH监视器(ceph-mon):维护集群状态的映射

CEPH管理器(ceph-mgr):跟踪集群运行指标

CEPH对象存储(ceph-osd):存储数据的核心组件

CEPH元数据服务(ceph-mds):存储元数据

2、实现步骤:

环境准备:

客户机

第一步:

三台虚拟机:三台ceph

三台设置成公网 72.130 72.131 72.132

关闭防火墙(四台都关):

#iptables -F

#systemctl stop firewalld

#setenforce 0

免密码验证(三台都做):

[root@localhost ~]# ssh-keygen -t rsa

[root@localhost ~]# ssh-copy-id 192.168.72.131

[root@localhost ~]# ssh-copy-id 192.168.72.132

[root@localhost ~]# ssh node2 不需要密码

主机映射文件:

oot@localhost ~]# vim /etc/hosts

#scp /etc/hosts node2:/etc/ 把文件传到node2

#scp /etc/hosts node3:/etc/ 把文件传到node3

去第二台查看:

[root@zhao ~]# cat /etc/hosts

安装CEPH相关软件:

1、2、3都装:

#cd /etc/yum.repos.d/

wget -O /etc/yum.repos.d/ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo

阿里云

#yum -y install epel-release 会生成(epel.repo epel-testing.repo)

#yum -y install yum-plugin-priorities

#cat /etc/yum/pluginconf.d/priorities.conf

依赖关系的软件包

#rpm --import 'https://download.ceph.com/keys/release.asc' 验证用的公钥

#vim ceph.repo

查看文件:

https://ceph.io/

[ceph]

name=Ceph packages for b a s e a r c h b a s e u r l = h t t p s : / / m i r r o r s . t u n a . t s i n g h u a . e d u . c n / c e p h / r p m − 15.2.4 / e l 7 / basearch baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.4/el7/ basearchbaseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm−15.2.4/el7/basearch

enabled=1

priority=2

gpgcheck=1

gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[ceph-noarch]

name=Ceph noarch packages

baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.4/el7/noarch

enabled=1

priority=2

gpgcheck=1

gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

[ceph-source]

name=Ceph source packages

baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-15.2.4/el7/SRPMS

enabled=0

priority=2

gpgcheck=1

gpgkey=https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc

#yum clean all 清理软件源

#yum -y install ceph

#pip3 install pecan

#pip3 install werkzeug

第二步:监视器ceph-mon部署(node1)

#cd /etc/ceph/

#uuidgen 集群文件系统ip号(唯一值)

310a5dc2-7062-4166-979a-74cdf031aaed

#vim ceph.conf

[global] 全区配置

fsid = 310a5dc2-7062-4166-979a-74cdf031aaed 集群IP(唯一值)

mon initial members = node1 初始化

mon host = 192.168.72.130:6789 监视器对应的IP

public network = 192.168.72.0/24 允许哪些范围可以使用

auth cluster required = cephx 集群认证相关的

auth service required = cephx 服务器认证相关的

auth client required = cephx 客户端认证相关的

osd journal size = 1024 对象存储的大小

osd pool default = 2 对象存储池生成的副本有2个(通常环境下最好是3以上)

osd pool default min size = 1 节点不正常最少有1个

osd pool default pg num = 333 可以存储pg的数量

osd pool default pgp num = 333 可以存储pgp的数量

osd crush chooseleaf type = 1 算法

mon_allow_pool_delete = true 是否允许删除存储池=不允许

#ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' 集群的密钥环ceph-authtool(认证相关的工具)-create-keyring(表示创建一个密钥环)

/tmp/ceph.mon.keyring(监控端的密钥放在哪里)--gen-key(生成一个私钥)

-n mon.(私钥的名字)--cap mon 'allow *'(权限最大操作)

#ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *' 管理员的密钥环

#ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/client.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r' 客户端的r只读

把刚才创建的都放在/tmp/ceph.mon.keyring

#ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

#ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/client.keyring

#monmaptool --create --add node1 192.168.72.130 --fsid 310a5dc2-7062-4166-979a-74cdf031aaed /tmp/monmap 生成映射信息并创建

#mkdir /var/lib/ceph/mon/ceph-node1 创建监控器的数据目录

#ceph-mon --mkfs -i node1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring目录初始化

#chown -R ceph:ceph /var/lib/ceph/mon/ceph-node1/ 监控器的权限

#systemctl start ceph-mon@node1 启动第一节点上的监控端

#systemctl status ceph-mon@node1 active (running) 查看启动

#netstat -anpt 本地的监控端6789端口启动

#ceph -s

集群的健康状态(错)

#ceph mon enable-msgr2 修改集群状态

#ceph -s

配置管理器mgr

mkdir /var/lib/ceph/mgr/ceph-node1

#ceph auth get-or-create mgr.node1 mon 'allow profile mgr' osd 'allow *' > /var/lib/ceph/mgr/ceph-node1/keyring

#ceph-mgr -i node1

#ceph status 查看状态

将文件传到2、3虚拟机:

#scp /var/lib/ceph/bootstrap-osd/client.keyring node2:/var/lib/ceph/bootstrap-osd/

#scp /var/lib/ceph/bootstrap-osd/client.keyring node3:/var/lib/ceph/bootstrap-osd/

每台虚拟机都能识别:

#scp /etc/ceph/ceph.conf node2:/etc/ceph/

#scp /etc/ceph/ceph.conf node3:/etc/ceph/

第二、三台:

其他两台虚拟机都有文件

#cd /var/lib/ceph/bootstrap-osd/

#mv client.keyring ceph.keyring 改名

#ceph-volume lvm create --data /dev/sdb 客户端磁盘必须什么都没做过

72.131和72.132同时做

mds配置(node1)

创建存放mds相关的数据目录

#mkdir /var/lib/ceph/mds/ceph-node1

ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-node1/keyring --gen-key -n mds.node1 设置mds的密钥环即生成私钥

#ceph auth add mds.node1 osd 'allow rwx' mon 'allow profile mds' -i /var/lib/ceph/mds/ceph-node1/keyring 导入密钥环设置权限

#vim /etc/ceph/ceph.conf

用第一台做同步(文件改动)

#scp /etc/ceph/ceph.conf node2:/etc/ceph/

#scp /etc/ceph/ceph.conf node3:/etc/ceph/

#ceph-mds --cluster ceph -i node1 -m node1:6789 启动元数据服务

启用mds守护进程, --cluster启用ceph集群 -i 启用node1进程 使用端口6789

#ceph osd pool create cephfs_data 128 创建存储池 最大不能超过250

#ceph osd pool create cephfs_metadata 64

创建分布式文件系统先指定元数据存储池,然后指定存储数据

#ceph fs new cephfs cephfs_metadata cephfs_data

ceph fs ls 查看

创建挂载目录

mkdir /mnt/mycephfs

ceph :/表示把分布式文件系统根目录开始挂载到/mnt下使用的名为admin

#mount -t ceph 😕 /mnt/mycephfs/ -o name=admin

查看为什么为12G一部分为用户提供存储数据,一部分被分给存储元数据

#df -hT

如果在加入一个新的节点也想用分布式文件系统进行管理

新开一台虚拟机

IP192.168.72.133 防火墙关闭

#wget -O /etc/yum.repos.d/aliyun.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#yum -y install yum-plugin-priorities

#yum -y install epel-release

#scp ceph.repo 192.168.72.130:/etc/yum.repos.d/

#rpm --import 'https://download.ceph.com/keys/release.asc'

#yum -y install ceph

#pip3 install pecan

#pip3 install werkzeug

#ssh root@node1 'ceph config generate-minimal-conf' | tee /etc/ceph/ceph.conf 生成一个更小的文件从node1上获取,本机生成

#chmod 644 /etc/ceph/ceph.conf 设置权限

#ssh root@node1 'ceph fs authorize cephfs client.abc / rw' | tee /etc/ceph/ceph.client.abc.keyring

#chmod 600 /etc/ceph/ceph.client.abc.keyring 设置密钥环权限

#mount -t ceph 😕 /mnt -o name=abc 将ceph:/根目录挂载到本地mnt下

#df -hT

监控系统

一、监控概述

1、监控对象

a、软/硬件资源

硬件:服务器、路由、交换、其他I/O设备等

软件:操作系统、网络、应用程序等

b、意外状态

服务关闭、设备宕机、服务器不可达等

c、严重事件

磁盘利用率大于n%(free)

主从同步延迟

CPU利用率大于n%(uptime top)

d、趋势数据

图形展示数据的变化曲线

e、事件发生时间

f、时间产生原因

2、监控告警

a、采样

多次获取数据,提高监控准确性

b、存储

c、展示

3、工作原理

a、调度器主动将探测到的数据发送给监控平台

b、监控平台主动向调度器收集数据

4、基本模块

a、agent(代理程序)收集数据

b、NMS(网络监控系统)汇总数据

5、数据传输

a、ssh远程连接

b、snmp简单网络协议

c、telnet远程连接

d、agent

6、snmp特点

实现机制:

NMS--> 设置监控类别 --> SNMP --> 本地采集数据

提供的工具:

Snmpget、 snmpwalk、snmptrp

协议版本:

V1:最古老的版本

V2c:添加身份识别功能(组)

V3:功能最完善的版本

监控方式:

直接通过SNMP协议收集数据

安装agent收集数据

通过ssh/telnet收集数据

通过特殊硬件接口收集数据(IPMI)

7、常见监控平台:

cacti(环):

每一个监控指标都需要单独的RRD存储

httpd、mysql、PHP展示数据

rrdtool绘制图表

nagios:

监控业务指标是否在合理区间内

不提供图形化的数据展示,仅提供简单的图形功能

cacti+nagios+ntop

zabbix:

二、zabbix

1、特性:

数据采样:

SNMP、SHH/TELNET、agent、IPMI、JMX

自定义检测机制:通过zabbix_agent定义监控指标

自定义时间间隔:设置监控范围

实时绘画:

内置的绘画接口,读取数据库重的数据,完成绘画

支持graph(图形生成)、map(类似网络拓补)、screen(屏幕墙)、slide show(类似幻灯片)

告警机制:

自定义脚本

邮件通知

数据存储:

mysql

mariadb

pgsql

支持模板:

快速完成监控配置

网络自动发现

API

2、宏观架构:

zabbix server:守护进程,复制所有配置、数据汇总及数据操作,最核心的zabbix组件

zabbix database:数据库,存储所有的配置信息及zabbix采集的数据信息

zabbix web gui:图形化接口,用于提供图形界面(通常与server运行在同一主机)

zabbix proxy:代理进程(分布式监控,减轻服务器压力),可选组件,代理server收集部分对监控端的数据,汇总后一并发送server端。

zabbix agent:部署在被监控主机上,复制收集本地数据并发送server或proxy端

zabbix server <--> zabbix proxy <--> agent/ssh/snmp

3、zabbix程序组成:

zabbix_server:服务器端的守护进程

zabbix_agentd:客户端的守护进程

zabbix_proxy:代理段的守护进程

zabbix_get:命令行工具,手动采集数据时使用

zabbix_sender:命令行工具,运行于agent端,手动发送数据时使用

zabbix_java_gateway:JAVA网关

4、概念:

主机(host):监控的对象,使用IP或域名指定

主机组(host group):主机容器,开源包含主机和模板

监控项(item):特定监控指标的相关数据,来自于被监控对象

触发器(trigger):评估指定监控对象的item内所接收到的数据是否在合理区间内(即阈值)

事件(event):即将发生的值得关注的事务,如触发器的状态变化

动作(action):对于特定事件实现定义的处理方法,通常包含操作和条件

告警升级:告警时的自定义方案

通知(notification):向用户发送有关某事件的信息

媒介(meadia):发送统治的手段或通道,如邮件、短信等

远程命令(remote command):预定义的指令

应用(application):一组item的集合

模板(template):用于快速定义被监控主机的预设条目集合,通常包含item、trigger、graph、screen等

前端(frontend):zabbix的web接口

5、微观架构(逻辑架构)

internal:zabbix内崭的监控机制

SNMP:基于SNMP协议的监控机制

agent:基于agent的监控机制

poller:用于从监控接口拉取数据

维护(maintenance):定义依赖关系

poller子进程:基于agent执行数据采集

http poller子进程:基于http协议执行数据采集的poller程序,类似的还有snmp poller、ipmi poller等

housekeeper子进程:以固定周期,清除数据库中过期的历史数据的机制

pinger子进程:探测器,定期执行ICMP ping检查,探测主机是否在线

nodewatcher子进程:监控个节点的分布式节点看收起,用于在不同节点之间发送数据和配置信息更新的过程

alerter子进程:发送告警通知的进程

escalator子进程:负责处理告警过程中各步骤

discovery子进程:用于自动发现设备的过程

db_config_syncer:数据库配置同步器

db_data_syncer:数据库数据同步器

timer:处理触发器中时间相关函数的进程

watchdog:监控进程的运行状态,由内核直接生成

一、zabbix安装

1、要求

Name Platform CPU/Memory Database Monitored hosts

Small CentOS Virtual Appliance MySQL InnoDB 100

Medium CentOS 2 CPU cores/2GB MySQL InnoDB 500

Large RedHat Enterprise Linux 4 CPU cores/8GB RAID10 MySQL InnoDB or PostgreSQL >1000

Very large RedHat Enterprise Linux 8 CPU cores/16GB Fast RAID10 MySQL InnoDB or PostgreSQL >10000

2、安装方式
	操作系统:CentOS8.3
	zabbix软件:zabbix 5.0 LTS
	安装类型:RPM(zabbix源、国内镜像源)

二、基础操作

1、用户管理

登录:

用户名:Admin(必须大写)

密码:zabbix

默认用户:

Admin:zabbix中的超级管理员,拥有最大权限

guest:特殊的默认用户,没有登录zabbix时,访问zabbix使用,默认对zabbix中的对象没有任何权限

2、主机管理
	创建主机:
		主机名、群组、接口(IP、端口)
	
	主机可用性:
		绿色:表示正常状态
		灰色:表示状态还未启用或未更新
		红色:表示通信存在问题
	
3、监控项:
	创建监控项:
		名称、键值(key)、信息类型(浮点数)、主机接口、历史数据、趋势数据等
	显示数据:
		检测 --> 最新数据

		中文支持:
			windows路径:
				C:\Windows\Fonts
			zabbix路径:
				/usr/share/zabbix/assets/fonts

		gnome-tweaks 	gnome优化工具
			开启窗口最大化和窗口最小化
		复制微软雅黑文件至CENTOS8目录中(不可在桌面操作)
		
4、触发器:
	监控项主要用于收集数据,而触发器则可定义数据的阈值级别

	超过阈值时,触发状态变化:
		OK --> PROBLEM
		PROBLEM --> OK
	
	语法格式:
		{<server>:<key>.<function>(<parameter>)}<operator><constant>
		{<服务器>:<键>.<函数>(<参数>)}<运算符><设定的值>

		关键参数:
			服务器:主机名称
			键:主机上设定的监控项的关键字
			函数:评估采集的数据是否在合理范围内  

		函数:
			avg:平均值
			sum:求和
			count:指定时间内或次数内的数值统计
			min/max:最小值/最大值
			last:最新数据
			date:当前日期
			等等

		运算符:
			>
			>=
			<
			<=
			=
			<>		不等于
			+
			-
			*
			/
			and		和
			or		或

		时间参数:
			s、m、h、d、w

	创建触发器:
		每一个触发器仅能关联至一个监控项
		一个监控项可以同时使用多个触发器(为了实现不同级别的报警)			

	查看触发器:
		监测  -->  问题
		
	其它实例:
		a、检测当前CPU负载
			{new_host:system.cpu.load.last()}>3
		b、多条件匹配
		
		c、文件更改

		d、检测网络流量,大于1M更改状态

e、系统用户数统计,大于3人更改状态

一、告警机制

1、实现原理

通过触发器的状态改变触发告警机制

2、常见类型

邮件、微信、短信等

二、电子邮件告警

1、服务器端配置邮件参数

vim /etc/mail.rc

set from=zabbix_2021@sina.com

set smtp=smtp://smtp.sina.com

set smtp-auth-user=zabbix_2021@sina.com

set smtp-auth-password=79107ed43f60ba8f

set smtp-auth=login

2、配置zabbix前台

故障{TRIGGER.STATUS},服务器{HOST.NAME}发生{TRIGGER.NAME}故障!!!

+++++++++++++++++++++++++++++++

| Zabbix触发报警,主机出现故障 |

+++++++++++++++++++++++++++++++

告警主机:{HOST.NAME}

告警地址:{HOST.IP}

监控项目:{ITEM.NAME}

监控内容:{ITEM.LASTVALUE}

告警等级:{TRIGGER.SEVERITY}

当前状态:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

告警时间:{EVENT.DATE}{EVENT.TIME}

事件ID:{EVENT.ID}

服务器:{HOST.NAME};{TRIGGER.NAME}已恢复正常!!!

三、企业微信告警

1、配置群机器人,并获取webhook接口

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=92b0cdf9-6dc4-4004-91df-50553b9df91a

2、配置zabbix前台

四、报警信息优化

主题:

故障{TRIGGER.STATUS},服务器{HOST.NAME}发生{TRIGGER.NAME}故障!!!

消息:

<tr>
	<td>告警主机</td>
	<td bgcolor="#7CFC00">{HOST.NAME}</td>
</tr>

<tr>
	<td>告警地址</td>
	<td>{HOST.IP}</td>
</tr>

<tr>
	<td>监控项目</td>
	<td>{ITEM.NAME}</td>
</tr>

<tr>
	<td>监控内容</td>
	<td>{ITEM.LASTVALUE}</td>
</tr>

<tr>
	<td>告警等级</td>
	<td>{TRIGGER.SEVERITY}</td>
</tr>	

<tr>
	<td>当前状态</td>
	<td>{TRIGGER.STATUS}</td>
</tr>	

<tr>
	<td>告警信息</td>
	<td>{TRIGGER.NAME}</td>
</tr>

<tr>
	<td>告警时间</td>
	<td>{EVENT.DATE}{EVENT.TIME}</td>
</tr>	

<tr>
	<td>事件ID</td>
	<td>{EVENT.ID}</td>
</tr>	

一、模板(template)

将一组预先定义好的监控规则,快速应用到指定设备中

添加被监控端:
Linux
	zabbix-agent 
Windows
	www.zabbix.com
	格式:msi和archive
	版本:zabbix agent和zabbix agent 2 

模板的导入和导出
	
移除模板
	取消链接:仅将模板的链接取消,之前应用的数据不会改变
	取消链接并清理:将模板的链接取消,之前应用的数据也会被清理

通过模板) 监控其他主机,如果客户端主机发生问题,就在服务器这边显示问题

两台主机,一台为服务器ip:192.168.72.135

客户端:ip:192.168.110.136

防火墙关闭。seliunx关闭

(1)配置zabbix前台生成主机,模板,

用模板快速给主机定义一套规则,让其生效

先生成模板,加入Templates群组,

创建应用集,包含监控项,

添加监控项,将监控项添加进应用集

创建触发器,属于监控项的

创建图形

创建主机,监控客户端使用的,并将模板添加进去

最后可以看到主机上就应用了这些模板数据

(2)客户端配置

由服务器端将安装包发送给客户端

[root@lixiaopeng ~]# scp zabbix-release-5.0-1.el8.noarch.rpm 192.168.72.136:/root

客户端接收并安装

[root@localhost ~]# rpm -ivh zabbix-release-5.0-1.el8.noarch.rpm

安装zabbix客户端agent

[root@localhost yum.repos.d]# yum -y install zabbix-agent

进入客户端配置文件修复参数

[root@localhost yum.repos.d]# vim /etc/zabbix/zabbix_agentd.conf

117 行 Server=192.168.72.135 服务器地址

158 行 ServerActive=192.168.72.135 服务器地址

169 行 Hostname=Zabbix agent 客户端名

启动服务

root@localhost yum.repos.d]# systemctl start zabbix-agent.service

[root@localhost yum.repos.d]# systemctl enable zabbix-agent.service

测试,由这次测试的是用户登录数量,创建几个用户登录即可完成实验,在这就不测试了

在其他系统上安装参考https://www.zabbix.com/

2,模板的导入导出

导出,生成文件,可以用于导入

3.移除模板

(1)取消连接,保留数据

(2)取消链接并清理,不保留数据

二、宏

格式:{MACRO}

类型:
	内置宏:可以直接引用的宏
		{HOST.NAME}{HOST.IP}{TRIGGER.NAME}
	自定义宏:由用户自定义的宏
		{$MACRO}
		级别:
			全局宏:适用于模板、主机
			模板宏:仅适用于当前模板
			主机宏:仅适用于当前主机
		优先级:
			主机 --> 模板 --> 全局
			范围越小,优先级越高

设置全局宏在zabbix前台一般

然后根据宏设置进监控项,

然后测试。在客户端开启http进程

[root@localhost yum.repos.d]# yum -y install httpd

[root@localhost yum.repos.d]# systemctl restart httpd

然后查看最新数据、

三、自动发现

提供了有效的添加主机列表的机制,适用于大规模部署监控,其主要基于:

可用的外部服务(FTP、SSH、WEB、TCP等)

zabbix的客户端

SNMP的客户端

配置步骤
	发现
	动作

配置步骤

zabbix前台,客户端

(1)zabbix

创建动作

添加操作

(2)客户端

安装zabbix客户端agent

[root@localhost yum.repos.d]# yum -y install zabbix-agent

进入客户端配置文件修复参数

[root@localhost yum.repos.d]# vim /etc/zabbix/zabbix_agentd.conf

117 行 Server=192.168.72.135 服务器地址

158 行 ServerActive=192.168.72.135 服务器地址

169 行 Hostname=mysql

启动服务

root@localhost yum.repos.d]# systemctl start zabbix-agent.service

[root@localhost yum.repos.d]# systemctl enable zabbix-agent.service

等待zabbix前端自动搜索设备,发现140就成功

四、监控服务(mysql)

监控数据库服务的步骤

zabbix前台,创建主机,添加模板。客户端生成zabbix启动脚本文件,数据库配置文件配置

先配置客户端

安装数据库服务

root@localhost ~]# yum -y install mariadb mariadb-server

root@localhost ~]# systemctl start mariadb.service

设置数据库密码

root@localhost ~]# mysqladmin -uroot password '12345'

进入数据库授权

root@localhost ~]# mysql -uroot -p

Enter password:

授权用户zabbix主机192.168.72.137通过密码12345登录

ariaDB [(none)]> GRANT ALL PRIVILEGES ON . TO zabbix@'192.168.72.137' IDENTIFIED BY '12345';

刷新

MariaDB [(none)]> FLUSH PRIVILEGES;

退出

编写脚本文件

root@localhost ~]# cd /etc/zabbix/zabbix_agentd.d/

[root@localhost zabbix_agentd.d]# vim userparameter.conf

For all the following commands HOME should be set to the directory that has .my.cnf file with password information.

Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].

Key syntax is mysql.status[variable].

UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/var/lib/zabbix mysql -N | awk '{print $$2}'

Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].

Key syntax is mysql.size[,,].

Database may be a database name or "all". Default is "all".

Table may be a table name or "all". Default is "all".

Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".

Database is mandatory if a table is specified. Type may be specified always.

Returns value in bytes.

'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table

UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo " 3 l e n g t h " ; ; f r e e ) e c h o " d a t a f r e e " ; ; e s a c ) ) f r o m i n f o r m a t i o n s c h e m a . t a b l e s 3_length";; free) echo "data_free";; esac)) from information_schema.tables 3length";;free)echo"datafree";;esac))frominformationschema.tables([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=" 1 " ¨ ) 1\"") 1"¨)([[ "$2" = "all" || ! "$2" ]] || echo "and table_name="$2"");" | HOME=/var/lib/zabbix mysql -N'

UserParameter=mysql.ping,HOME=/var/lib/zabbix mysqladmin ping | grep -c alive

UserParameter=mysql.version,mysql -V

创建脚本文件所需的目录

root@localhost zabbix_agentd.d]# mkdir /var/lib/zabbix

root@localhost zabbix_agentd.d]# vim /etc/my.cnf

This group is read both both by the client and the server

use it for options that affect everything

[client-server]

include all files from the config directory

!includedir /etc/my.cnf.d

[mysqld]

#skip-grant-tables

[mysql]

host=192.168.72.137

user=zabbix

password=12345

#socket=/var/lib/mysql/mysql.sock

[mysqladmin]

host=192.168.72.137

user=zabbix

password=12345

#socket=/var/lib/mysql/mysql.sock

[client]

host=192.168.72.137

user=zabbix

password=12345

[root@localhost ~]# cp /etc/my.cnf /var/lib/zabbix/.my.cnf

[root@localhost ~]# vim /var/lib/zabbix/.my.cnf

[mysql]

host=192.168.72.137

user=zabbix

password=12345

#socket=/var/lib/mysql/mysql.sock

[mysqladmin]

host=192.168.72.137

user=zabbix

password=12345

#socket=/var/lib/mysql/mysql.sock

[client]

host=192.168.72.137

user=zabbix

password=12345

启动数据库,zabbix客户端服务

root@localhost ~]# systemctl restart mariadb.service

[root@localhost ~]# systemctl restart zabbix-agent.service

zabbix前台服务

创建主机

添加模板

查看监控情况

一、运维刨析

[root@zhao yum.repos.d]# wget https://mirrors.aliyun.com/repo/Centos-8.repo

[root@zhao yum.repos.d]# yum clean all 清理缓存

[root@zhao yum.repos.d]# yum makecache 生成缓存 减缩缓存(可以不用)

[root@zhao yum.repos.d]# yum -y install epel-release

[root@zhao yum.repos.d]# yum -y install ansible

[root@zhao yum.repos.d]# rpm -qi ansible

1、主要文件

/etc/ansible 主目录

/etc/ansible/ansible.cfg 主配置文件

/etc/ansible/hosts 主机清单

/etc/ansible/roles 角色目录

/usr/bin/ansible 主程序文件

2、主要配置项

inventory 被控端的主机列表文件

library 库文件的存储位置

module_utils 库文件的相关工具

remote_tmp 远程主机存放的目录

local_tmp 临时文件存放的目录

forks 默认开启的并发数

	配置文件默认位于/etc/ansible/目录
	配置文件应用顺序:当前命令的执行目录ansible.cfg --> 用户家目录中的.ansible.cfg --> /etc/ansible/ansible.cfg=
3、管理目标主机	
	通过命令行接口告知目标主机的任务需求
	通过剧本方式来实现多主机管理
4、ansible命令简介
	ansible:最核心的命令,主要用于执行单条命令,通常需要指定主机、选项、模块,若未指定模块,则使用command模块
	ansible-doc:查看模块的信息
	ansible-playbook:主要用于执行反复执行、较为复杂的任务。支持使用变量、条件判断、循环以及模板等

二、ansible命令

1、常见参数

运行参数

-v,--version 提供版本信息

-a MODULE_ARGS 指定模块参数

-C, --check 测试变更的内容,不会真正执行

-D, --diff 当更改文件和模板时,显示其差异

-f FORKS 指定并行的进程数

-i INVENTORY 指定主机清单文件或用逗号分割多台主机

--list-hosts 输出匹配的主机列表

-m MODULE_NAME 指定模块的名称

-M MODULE_PATH 指定模块的位置

-h 查看帮助信息

特权参数

-K, --ask-become-pass 提权密码

--become 执行指定的操作

--become-user BECOME_USER 指定提权的用户,默认root

--become-method 指定提权的方法,默认sudo

	连接参数
		-k, --ask-pass		要求用户输入请求连接的密码
		-u REMOTE_USER		连接远端主机的用户
		-c CONNECTION		连接的类型
		-T TIMEOUT		设置默认的超时时间 

2、环境准备
	1、添加/etc/hosts

2、创建密钥对

3、配置主机清单

[root@zhao ~]# scp /etc/hosts 192.168.72.136:/etc/hosts

3、基础命令格式

格式: HOST-PARTTERN -m MODE_NAME -a MOD_ARGS -f FORKS -C -u USERNAME -c CONNECTION

	示例:
		[root@localhost ~]# ansible all -m ping 
			SUCCESS		成功
			changed		目标主机是否发生修改
			ping		pong表示主机的成功响应

		[root@localhost ~]# ansible-doc --help
		
4、常见模块
	ping模块:检查指定的节点主机是否能连通,不涉及参数,若目标主机可连通,则返回pong
	group模块:组模块,调用groupadd、groupdel、groupmod三个指令
	user模块:用户模块,调用useradd、userdel、usermod三个指令
	raw模块:执行原始命令,而不调用模块子系统
	yum模块:提供软件包安装和管理
	pip模块:管理python的依赖库
	template模块:基于模板生成文件复制到远端主机
	copy模块:在远端主机上执行复制操作
	fetch模块:用于从远端主机复制文件
	file模块:用于远端主机上的文件操作
	command模块和shell模块:在远端主机上运行指定的命令
		shell模块支持特殊字符
		command模块不支持特殊字符
	hostname模块:修改远端主机的主机名
	mount模块:挂载文件系统
	find模块:在远端主机查找文件
	selinux模块:管理远端主机上的selinux

5、模块操作:
	a、group模块
		选项:	
			gid	设置目标主机组的GID
			name	设置目标主机组名
			state	设置目标主机组的状态
				present 	创建
				absent	删除
			system	设置系统组 
		实验:
			[root@localhost ~]# ansible all -m group -a "gid=3001 name=mygrp1 state=present system=false"
			[root@localhost ~]# ansible all -m group -a "gid=3001 name=mygrp1 state=absent system=false"
			[root@localhost ~]# ansible 192.168.59.136 -m group -a "gid=3002 name=mygrp2 state=present system=false"
			[root@localhost ~]# ansible 192.168.59.136,192.168.59.137 -m group -a "gid=3003 name=mygrp3 state=present system=false"

	b、user模块
		选项:
			home		设置用户的家目录
			groups		设置用户的属组
			uid		设置用户的UID
			password		设置用户的密码
			name		设置用户名
			createhome	是否创建家目录(配合home选项使用)
			system		是否创建系统用户(UID范围1-999)
			remove		当删除用户时,remove=yes表示连同其家目录一起删除,类似 userdel -r
			state		设置用户状态,创建(present)或删除(absent)
			shell		设置用户的SHELL环境 
			comment		设置用户的说明信息
		
		实验:
			[root@localhost ~]# ansible all -m user -a "uid=5002 name=a2 comment='testuser' state=present groups=mygrp shell=/bin/sh"
	
	c、copy模块
		选项:
		src	源地址,需要绝对路径。
				若指定目录时使用格式/abc,表示复制目录及目录内所有文件
				若指定目录时使用格式/abc/,表示复制目录内的所有文件
		content		源地址,用于将指定的文件内容,复制到远端主机的文件内
		dest		目标地址,用于定位远端主机上的文件,需要绝对路径
						若src指定的是目录,那么dest也必须是目录
		owner		设置复制到远端主机的文件的归属
		mode		设置复制到远端主机的文件的权限
		
		实验:
			[root@localhost ~]# ansible all -m copy -a "src=/etc/fstab dest=/tmp/fstab_1 mode=600"
			[root@localhost ~]# ansible all -m copy -a "src=/etc/pam.d dest=/tmp/"
			[root@localhost ~]# ansible all -m copy -a "src=/etc/pam.d/ dest=/tmp/"
			[root@localhost ~]# ansible all -m copy -a "content='hello,world\n' dest=/tmp/index.html"
			[root@localhost ~]# ansible all -m copy -a "content='hello,world\n' dest=/tmp/index1.html owner=a1 group=mygrp"

	d、fetch模块
		获取指定主机上的数据
		[root@localhost etc]# ansible 192.168.72.136 -m fetch -a "src=/etc/issue dest=/tmp/abc"

	e、command模块
		在远程主机上执行命令
		[root@localhost ~]# ansible all -m command -a "hostname"	服务机名
		[root@localhost ~]# ansible all -m command -a "chdir=/var/tmp mkdir abcd"

远程创建目录

[root@localhost ~]# ansible all -m command -a "/sbin/shutdown -h now"

被监控端关

f、shell模块

支持特殊符号,如<、>、|、;、&等,是增强版的command模块

[root@localhost ~]# ansible all -m shell -a "echo '123' | passwd --stdin a1"

[root@localhost ~]# ansible all -m shell -a "ps aux | grep [s]sh"

	g、yum模块
		使用yum进行软件包的安装、升级、删除等操作			
		选项:
			name						指定软件名
			state 	installed/removed		安装/卸载软件

		[root@localhost ~]# ansible all -m yum -a "name=vsftpd state=installed"

	h、其它模块
		service、crond、mount等

6、模块状态(state)
	作用:定义指定模块所处于的目标状态(文件,要么安装要么没安装)
	特点:操作必须是幂等的(多次出现的状态必须相等)

手动 --> 标准化 --> 工具化 --> 自动化 (DevOps) --> 智能化

工具化:

操作系统安装:PXE、cobbler等

操作系统配置:ansible、fabric、puppet、saltstack、chef、cfengine等

应用程序部署:ansible、fabric等

任务执行:ansible、fabric等

ansible基于SSH连接被管控主机,借助各模块对被管控主机进行管理和配置

copy、file、fetch、yum、service、group、user、crond、command、shell、script、ping等等

ansible的任务执行模式:

ad-hoc模式(点对点模式)

使用单个模块,执行单条命令

playbook模式(剧本模式)

使用多个任务的集合完成一组功能

ansible命令格式:

ansible 主机列表 -m 模块名称 -a 模块参数 -f FORKS -C

YAML格式,扩展名 .yaml .yml

提供以play为元素的列表,这种文件就是playbook

play的内容即task list(任务列表)

一、PLAYBOOK概述

1、作用:

将多个play整合在一个文件中,让其按照事先编排的机制执行预定义的动作

2、核心元素

hosts 关联到的主机

task 任务

variables 变量

template 模板

handlers和notify 由特定的条件触发的操作,满足条件方才执行,否则不执行

tags 标签,选择playbook中的部分代码

roles 角色,可将变量、文件、模板等通过include进行加载调用

3、基础组件
	hosts		必须事先定义在主机清单中 
	remote_user	通过SUDO方式在远程主机上执行任务
	task			按次序在指定的所有主机上执行,通常需要指定name(任务名称),若未指定,则

		动作:模块参数
		模块:模块参数	

4、配置playbook:
	测试:

ansible-playbook --syntax-check 1.yaml 检查语法有没有错

ansible-playbook --check #检测可能会发生的改变,不真正执行

ansible-playbook --list-hosts #列出所有运行任务的主机

运行:

[root@localhost ~]# ansible-playbook 1.yaml

---
   		- hosts: all
     		remote_user: root
     		tasks:
             		- name: install vsftpd
               		   yum:  name=vsftpd state=installed
             		- name: copy config file
               		   copy: src=/root/vsftpd.conf dest=/etc/vsftpd/vsftpd.conf
               		   notify: restart vsftpd
             		- name: start vsftpd
               		   service: name=vsftpd state=started enabled=yes
     		handlers:
             		- name: restart vsftpd
               		  service: name=vsftpd state=restarted enabled=yes
     		#       - hosts: 192.168.59.136

     		#       - hosts: 192.168.59.137

	handlers和notify通常一起使用:
		接收到任务时,发送通知
			notify: handlers任务名
		handlers(任务),在特定条件下被触发		

5、YAML文件语法:
	
	全局:
		a、以---开头,声明yaml文件类型,也可以不写
		b、#做为注释符,可以注释整行,也可以注释部分行
		c、YAML中的字符串通常不加任何引号,即使包含了特殊字符。(变量除外)
		d、布尔值的类型:
			模块的参数(ansible):
				yes/on/true/1		真
				no/off/false/0		假
			非模块的参数(YAML,不区分大小写)
				yes/on/true/1		真
				no/off/false/0		假
			通常情况:
				模块参数的布尔值:yes/no
				非模块参数的布尔值:True/False 
	列表:
		使用 - 作为列表项 
		圈定一个范围,范围内的项都属于该列表

	换行:
		在"key"后使用大于号 (两行是一个命令)
		在"key"后使用 |		(下面所有都是一条命令)
		多层缩进

	参数传递:
		a、直接定义在模块名后,如service: name=vsftpd state=restarted enabled=yes

		b、写成字典型(KV,key-value,键值),如:
			                  yum:  
                   					name=vsftpd 
                    					state=installed
		c、使用内置属性args,如:
              				yum:  
               				args:
                    					name=vsftpd
                    					state=installed

	playbook和play的关系:
		每个playbook可以包含多个play
		每个play最少包含tasks和hosts选项
		tasks中可以通过模块设置一系列的动作

			playbook:[play1,play2,play3......]
			play:[hosts,tasks,vars,remote_users......]
			tasks:[module1,module2,module3......]

一、变量管理

1、内置变量

默认变量:gathering facts

查看被管控端信息:ansible 192.168.59.137 -m setup

查看指定变量信息:

[root@localhost playbook]# ansible 192.168.59.137 -m setup -a "filter=ansible_env"

[root@localhost playbook]# ansible all -m setup -a "filter=ansible_memfree_mb"

	引用变量:{{ ansible_env }} 
	常见的信息类型:
		ansible_env			环境相关配置信息
		ansible_all_ipv4_address		仅显示IPV4相关配置信息
		ansible_distribution			查看操作系统发行版本
		ansible_distribution_version		查看操作系统发行版本版本号
		ansible_kernel			查看内核版本
		ansible_ens33			查看网卡配置信息
		ansible_mem*			查看内存相关信息
		ansible_mounts			查看挂载相关信息
		ansible_hostname			查看主机名相关信息

2、ansible-playbook命令行中的自定义变量
	-e EXTRA_VARS, --extra-vars EXTRA_VARS
	通过命令行传递变量的值,提高playbook的灵活性和适配性。
	
3、host inventory  主机清单
	通过主机清单可以实现主机分组,组名用[ ]限定
	支持通配的功能,如node[1:9].hr.com

	inventory参数
		ansible_ssh_host			将要连接的远端主机地址
		ansible_ssh_port			SSH的端口号
		ansible_ssh_user			默认的SSH用户名
		ansible_ssh_pass			默认的SSH密码
		ansible_sftp_extra_args		添加额外参数给sftp命令
		ansible_ssh_extra_args		添加额外参数给ssh命令
		ansible_scp_extra_args		添加额外参数给scp命令

4、用户自定义变量
	a、向同组主机传递相同的变量
		[webserv]		#主机变量
			192.168.59.136 http_port=8080
		[webserv:vars]	#主机组变量
			http_port=8000
		[all:vars]		#全局变量
			http_port=9000
		
		优先级:主机变量 > 主机组变量 > 全局变量
		范围:   全局变量 > 主机组变量 > 主机变量
	b、向不同主机传递不同的变量
		通过命令行传递参数	  -e  cmdvar="command_line_variables_test"
		通过剧本内部定义	  vars:
		通过主机清单定义	  http_port=8080

二、模板

包含了模板语法的文本文件

jinja2(模板引擎)

WEB(HTML) -->PHP(内嵌)
TEMPLATE(纯文本)--> JINJA2(内嵌,python)

字面量:
	字符串:使用单引号或双引号
	数字:整数、浮点数
	列表:[ item1,item2......itemN ]  元素的值可被修改
	元组:( item1,item2......itemN )  元素的值不可被修改
	字典:{ key1:value1,key2:value2,......} 
	布尔:true/false
算术运算符:
	+  -  *  /  %  //  **  
比较操作:
	==   !=  >  >=  <  <=
逻辑运算:
	and   or   not 

发布网站:
1、查看主机信息

一、条件测试

关键字:when

作用:条件测试返回 真 时,则执行该区域的命令

二、循环

迭代机制

item		变量
with_item		取值列表
- 1
- 2
- 3

三、角色

1、目录列表:

files:存储由copy或script等模块调用的文件

templates:存储模板文件的目录

tasks:至少应该包含一个main.yml的文件

handlers:至少应该包含一个main.yml的文件

vars:至少应该包含一个main.yml的文件

meta:至少应该包含一个main.yml的文件,定义当前角色的特殊定义及依赖关系。

default:设置默认变量时,使用该目录中的main.yml文件

2、默认路径
	roles_path    = /etc/ansible/roles
	
3、创建角色
	[root@node1 playbook]# mkdir -pv /etc/ansible/roles/nginx/{files,templates,tasks,vars,handlers,meta,default}

4、创建剧本
	---
	             - 	hosts: webserv
     		       	remote_user: root
      			roles:
      			- nginx

四、标签

tags

五、优化

为ansible添加缓存

redis    nosql数据库   key-values   KV存储

六、redis配置

数据类型:
	string 字符串  hash 散列类型  list 双向队列  set 集合类型 zset 有序集合

一、容器概述

1、LXC

全称:linux container

2、虚拟化类型:

结构:

硬件虚拟化:物理硬件本身提供虚拟化的支持,如CPU vt-x amd-v

软件虚拟化:通过软件方式实现虚拟化中关键指令的转换,如JVM

设计:

主机虚拟化:

TYPE I : 原生架构

			TYPE II:寄居架构

		容器虚拟化:

	其它:
		平台虚拟化
		应用程序虚拟化
		内存虚拟化
		桌面虚拟化
		...
3、虚拟化
	两级调度
		host os内核功能
		guest os内核功能
	
		hypervisor的调度
	调度产生额外开销
		
4、容器环境
	多个用户空间共享一个内核空间
	通过一个用户空间(一般是第一个)提供特权管理
	管理每个用户空间所能使用的资源边界,从而实现隔离

5、容器技术
	1979,Unix chroot
	2000,FreeBSD jails
	2001,Linux VServer	
		security context
		virtual private server  VPS
	2004,containers
		zones
	2005,OpenVZ
	2006,process containers
		control groups,CGroups
	2008,LinuXContainers 
		CGroups和namespace 
		直接运行在普通Linux内核上
	2011,warden
	2013,LMCTFY 
	2013,Docker
	2014,Rocket
	2015,windows container

6、资源隔离
	隔离内容				命名空间
	主机名/域名				UTS
	根文件系统				MOUNT
	进程编号				PID		
	进程通信				IPC		
	用户和组				USER
	网络设备、端口、协议	NET
	
7、资源调度
	可压缩资源:资源不足时,按照权重分配资源,如CPU
	不可压缩资源:资源不足时,无法继续申请,如内存

	可压缩资源:
		a、为用户空间设定资源权重
			CPU  1:2:1
				用户空间1:25%
				用户空间2:50%
				用户空间3:25%
		b、为用户空间绑定CPU核心

	不可压缩资源:
		关闭程序,释放资源 

		通过Control Groups实现控制
8、CGroups
	blkio			BLOCK IO,限制块设备的IO速率
	cpuset		限制任务能运行在哪些CPU核心上
	cpuacct		生成CGroups中任务使用CPU的报告
	CPU			限制调度器分配的CPU时间
	devices		允许或拒绝CGroups中任务对设备的访问
	freezer		挂起或重启CGroups中的任务
	memory		限制CGroups中内存的使用量
	net_prio		设置网络接口报文的优先级
	pref_event	识别任务的CGroups成员,用于性能分析

9、LXC	容器
	lxc-create	(常见容器)	快速创建用户空间
	Template(模板)			创建用户空间并运行后,自动实现安装过程
	
10、docker
	镜像技术		

	每个用户空间运行单类进程
		
	分层构建、联合挂载

		AUFS	联合文件系统的实现方式
		
		rw	可读可写,用户能直接修改其中的内容
		ro	只读,用户不能通过aufs的接口对文件进行写入操作,只能读取其内容
		rr	real read only,真实只读
	
		特点:
			通常第一个目录可读可写,其余皆为只读
			对可读目录内容做出修改时,其结果会保存到可写目录中,不会影响只读目录
			
		参数:
			none:aufs不会进行任何数据同步的检查,性能相对较高,但可能出现数据不一致的情况
			reval:aufs会检查底层的文件是否出现改动,若有改动,则将改动的内容更新到挂载点,产生额外的性能损耗
			notify:通过inotify监听底层的文件变化,基于事件驱动,减少性能损耗  

		分层构建:
			顺序执行的多条指令,会生成不同分层,累加写入到文件中,形成一个image文件 

Docker之父 solomon hykes(所罗门 海克思)

Docker hub 国际的

阿里云是国内的

相关推荐
Red Red12 分钟前
网安基础知识|IDS入侵检测系统|IPS入侵防御系统|堡垒机|VPN|EDR|CC防御|云安全-VDC/VPC|安全服务
网络·笔记·学习·安全·web安全
海岛日记13 分钟前
centos一键卸载docker脚本
linux·docker·centos
AttackingLin1 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
Natural_yz2 小时前
大数据学习17之Spark-Core
大数据·学习·spark
qq_172805592 小时前
RUST学习教程-安装教程
开发语言·学习·rust·安装
学Linux的语莫2 小时前
Ansible使用简介和基础使用
linux·运维·服务器·nginx·云计算·ansible
一只小小汤圆2 小时前
opencascade源码学习之BRepOffsetAPI包 -BRepOffsetAPI_DraftAngle
c++·学习·opencascade
踏雪Vernon2 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
虾球xz2 小时前
游戏引擎学习第20天
前端·学习·游戏引擎