个人日记

LVS NAT工作模式

今日分享
1. 在线虚拟画板 https://excalidraw.com/
2. 跨平台的开源的Aria2 GUI软件 。https://github.com/persepolisdm/persepolis
3. LVS NAT工作模式
实现原理:NAT模型其实就是一个多路的DNAT,客户端对VIP进行请求,Director通过事先指定好的调度算法计算出应该转发到那台RS上,并修改请求报文的目标地址为RIP,通过DIP送往RS。当RS响应客户端报文给CIP,在经过Director时,Director又会修改源地址为VIP并将响应报文发送给客户端,这段过程对于用户来说是透明的。
NAT特性:
1)RS和Director必须要在同一个IP网段中。
2)RS的网关必须指向DIP
3)可以实现端口映射
4)请求报文和响应报文都会经过Director
5)RS可以是任意OS
6)DIP和RIP只能是内网IP

nginx特性和功能

1. nginx USR1信号可以重载日志,可以在一定大小时将日志移动走,重置日志,即可完成日志分割。HUP信号对应reload。
2. grafana监控kubernetes  https://mp.weixin.qq.com/s/1hPGCA3gwT7QJ62ro26ZJg
3. nginx特性和功能
特性
模块化设计、较好的扩展性
高可靠性:一个master启动一或多个worker,每个worker响应多个请求
低内存消耗:10000个keepalive连接在Nginx中仅消耗2.5MB内存(官方数据)
支持热部署:不停机更新配置文件、更新日志文件、更新服务器程序版本
功能
静态web资源服务器,能够缓存打开的文件描述符
支持http/imap/pop3/smtp的反向代理;支持缓存、负载均衡
支持fastcgi(fpm)
模块化,非DSO机制,支持过滤器zip压缩,SSI以及图像大小调整
支持SSL

常见的几种网络故障案例分析与解决!

1. 常见的几种网络故障案例分析与解决!
https://mp.weixin.qq.com/s?__biz=MzIxMTEyOTM2Ng==&mid=2247492229&idx=1&sn=d9ce593d9d951ededc026f33d9ab6d8b&chksm=9758a7fca02f2eea9a0616883c459e310ebb5c576d9dad730605bb2888729d93c445caeb57a5&mpshare=1&scene=23&srcid=0112DRCKZll1lBD8t3kzRepw&sharer_sharetime=1610417414955&sharer_shareid=526a33875b341a963104be96ad05b723#rd

mysql

mysql读写分离

2. mysql读写分离

简介
Atlas是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础上,修改了大量bug,添加了很多功能特性。而且安装方便。配置的注释写的蛮详细的,都是中文。

主要功能
读写分离
从库负载均衡
IP过滤
自动分表
DBA可平滑上下线DB
自动摘除宕机的DB
下载地址:https://github.com/Qihoo360/Atlas

1.rpm安装
rpm -ivh Atlas-2.2.1.el6.x86_64.rpm
2.配置
cd /usr/local/mysql-proxy/conf
mv test.cnf test.cnf.bak

配置文件解读:
[mysql-proxy]   #模块名字
admin-username = user   #用来控制atlas的用户(不是mysql用户)
admin-password = pwd
proxy-backend-addresses = 10.0.0.160:3306    #后端提供写操作的节点
proxy-read-only-backend-addresses = 10.0.200:3306,10.0.0.120:3306  #提供读的节点
pwds = repl:3yb5jEku5h4=,mha:O2jBXONX098=   #这2个用户是后端数据库真实存在的

daemon = true  #后台运行

keepalive = true    #高可用检查节点的状态
event-threads = 8  #线程的个数(连接池)
log-level = message #日志记录的等级
log-path = /usr/local/mysql-proxy/log  #日志路径
sql-log=ON  #经过atlas路由的sql语句
proxy-address = 0.0.0.0:33060  #代理的地址和端口号
admin-address = 0.0.0.0:2345  #管理地址
charset=utf8    #字符编码
/usr/local/mysql-proxy/bin/mysql-proxyd test start #启动atlas

验证:netstat -lntup | grep proxy

tcp 0 0 0.0.0.0:2345 0.0.0.0:* LISTEN 7719/mysql-proxy
tcp 0 0 10.0.0.140:33060 0.0.0.0:* LISTEN 7719/mysql-proxy

测试:mysql -umha -p... -h 10.0.0.160(配合mha-vip使用) -P 端口33060

读的操作是2台slave服务器
写操作是1台master服务器
环境要求:
需要添加一个应用用户
grant update,insert on *.* to 'app'@'10.0.0.%' identified by '123.com'; #授权并创建用户 查看每个节点是否同步

在atlas中添加用户
 /usr/local/mysql-proxy/bin/encrypt llll  #使用此命令生成加密字符(不同用户间用,隔开)
tF5TeinkMj8=

重启mysql-proxy服务
/usr/local/mysql-proxy/bin/mysql-proxyd test start
验证:
mysql -uapp -plll -h10.0.0.160 -P33060
[hermit auto="1" loop="1" unexpand="0" fullheight="0"]netease_songs#:109998[/hermit]
每日分享:
检查 Linux 磁盘使用情况
https://linux.cn/article-14823-1.html
今日小技巧:
1)内存利用方面:
innodb_buffer_pool_size
这个是Innodb最重要的参数,和MyISAM的key_buffer_size有相似之处,但也是有差别的。
这个参数主要缓存innodb表的索引,数据,插入数据时的缓冲。
该参数分配内存的原则:
这个参数默认分配只有8M,可以说是非常小的一个值。
如果是一个专用DB服务器,那么他可以占到内存的70%-80%。
这个参数不能动态更改,所以分配需多考虑。分配过大,会使Swap占用过多,致使Mysql的查询特慢。
如果你的数据比较小,那么可分配是你的数据大小+10%左右做为这个参数的值。
例如:数据大小为50M,那么给这个值分配innodb_buffer_pool_size=64M
设置方法,在my.cnf文件里:
innodb_buffer_pool_size=4G

2)关于日志方面
innodb_log_file_size
作用:指定在一个日志组中,每个log的大小。
结合innodb_buffer_pool_size设置其大小,25%-100%。避免不需要的刷新。
注意:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。一般取256M可以兼顾性能和recovery的速度。
分配原则:几个日值成员大小加起来差不多和你的innodb_buffer_pool_size相等。上限为每个日值上限大小为4G.一般控制在几个Log文件相加大小在2G以内为佳。具体情况还需要看你的事务大小,数据大小为依据。
说明:这个值分配的大小和数据库的写入速度,事务大小,异常重启后的恢复有很大的关系。
设置方法:在my.cnf文件里:
innodb_log_file_size = 256M

innodb_log_files_in_group
作用:指定你有几个日值组。
分配原则: 一般我们可以用2-3个日值组。默认为两个。
设置方法:在my.cnf文件里:
innodb_log_files_in_group=3

innodb_log_buffer_size:
作用:事务在内存中的缓冲,也就是日志缓冲区的大小, 默认设置即可,具有大量事务的可以考虑设置为16M。
如果这个值增长过快,可以适当的增加innodb_log_buffer_size
另外如果你需要处理大理的TEXT,或是BLOB字段,可以考虑增加这个参数的值。
设置方法:在my.cnf文件里:
innodb_log_buffer_size=3M

3)文件IO分配,空间占用方面
innodb_file_per_table
作用:使每个Innodb的表,有自已独立的表空间。如删除文件后可以回收那部分空间。默认是关闭的,建议打开(innodb_file_per_table=1)
分配原则:只有使用不使用。但DB还需要有一个公共的表空间。
设置方法:在my.cnf文件里:
innodb_file_per_table=1

innodb_file_io_threads
作用:文件读写IO数,这个参数只在Windows上起作用。在Linux上只会等于4,默认即可!
设置方法:在my.cnf文件里:
innodb_file_io_threads=4

innodb_open_files
作用:限制Innodb能打开的表的数据。
分配原则:这个值默认是300。如果库里的表特别多的情况,可以适当增大为1000。innodb_open_files的大小对InnoDB效率的影响比较小。但是在InnoDBcrash的情况下,innodb_open_files设置过小会影响recovery的效率。所以用InnoDB的时候还是把innodb_open_files放大一些比较合适。
设置方法:在my.cnf文件里:
innodb_open_files=800

innodb_data_file_path
指定表数据和索引存储的空间,可以是一个或者多个文件。最后一个数据文件必须是自动扩充的,也只有最后一个文件允许自动扩充。这样,当空间用完后,自动扩充数据文件就会自动增长(以8MB为单位)以容纳额外的数据。
例如: innodb_data_file_path=/disk1/ibdata1:900M;/disk2/ibdata2:50M:autoextend 两个数据文件放在不同的磁盘上。数据首先放在ibdata1 中,当达到900M以后,数据就放在ibdata2中。
设置方法,在my.cnf文件里:
innodb_data_file_path =ibdata1:1G;ibdata2:1G;ibdata3:1G;ibdata4:1G;ibdata5:1G;ibdata6:1G:autoextend

innodb_data_home_dir
放置表空间数据的目录,默认在mysql的数据目录,设置到和MySQL安装文

修改网卡名称设置为ens0

1、文件追加:net.ifnames=0
[17:33:31 root@localhost ~]#vim /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto resume=UUID=b65aa78c-be4d-4c68-a276-c31aee04579a rhgb quiet net.ifnames=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
2、加载grup并重启
[17:44:26 root@localhost ~]#grub2-mkconfig /boot/grub2/grub.cfg ;reboot
3、由于网卡已重置需在本机重新配置IP地址

vim默认配置

1、在用户家目录配置:vim /root/.vimrc
""set nu
set si
set incsearch
set showcmd
imap <tab>  <c-n>
nmap <tab>  v> 

set wildmode=longest:list,full
inoremap ' ''<Esc>i
inoremap " ""<Esc>i
inoremap ( ()<Esc>i
inoremap [ []<Esc>i
inoremap { {}<Esc>i
inoremap < <><Esc>i

autocmd BufNewFile *.sh exec ":call AddTitleForShell()"
function  AddTitleForShell()
        call append(0,"#!/bin/bash")
        call append(1,"# **********************************************************")
        call append(2,"#")
        call append(3,"# * Author        : 张雪龙")
        call append(4,"# * Email         : 1024320609@qq.com")
        call append(5,"# * Create time   : ".strftime("%Y-%m-%d %H:%M"))
        call append(6,"# * Filename      : ".expand("%:t"))
        call append(7,"# * Description   : ")
        call append(8,"#")
        call append(9,"# **********************************************************")
endfunction

history

显示3条历史记录::history n
[21:46:01 root@localhost ~]#history 3
  993  vim /etc/default/grub 
  994  grub2-mkconfig /boot/grub2/grub.cfg ;reboot
  995  history 3

清除历史记录:history -c
[21:53:24 root@localhost ~]#history -c
[21:53:41 root@localhost ~]#history 
    1  history 
[21:53:47 root@localhost ~]#
临时修改历史列表为时间格式:HISTTIMEFORMAT
[21:56:27 root@localhost ~]#HISTTIMEFORMAT="%F %T"
[21:56:58 root@localhost ~]#history 
    1  2022-07-21 21:53:47history 
    2  2022-07-21 21:55:56echo $HISTIMEFORMAT
    3  2022-07-21 21:56:23HISTIMEFORMAT="%F %T"
    4  2022-07-21 21:56:27history 
    5  2022-07-21 21:56:58HISTTIMEFORMAT="%F %T"
    6  2022-07-21 21:57:02history 
永久修改历史列表格式
[22:18:51 root@localhost ~]#echo HISTTIMEFORMAT="%F %T" >> .bash_profile
history命令快捷方式使用
1、执行上一条命令
[22:20:32 root@localhost ~]#!!
vim .bash_profile 
[22:22:25 root@localhost ~]#!-1
vim .bash_profile 
向上键!

命令行扩展

1、家目录:~
    [23:10:16 root@localhost /]#cd ~
    [23:10:20 root@localhost ~]#
2、用户家目录:~username
	[23:10:20 root@localhost ~]#cd ~zxl
	[23:11:02 root@localhost zxl]#
3、以逗号为分割的字符串或系列:{}
	[23:11:02 root@localhost zxl]#echo {a,b,c,d}.txt
	a.txt b.txt c.txt d.txt
    [23:13:01 root@localhost zxl]#echo {a,b,c,d}/e.txt
    a/e.txt b/e.txt c/e.txt d/e.txt
    [23:14:37 root@localhost zxl]#echo {a..z}.txt
    a.txt b.txt c.txt d.txt e.txt f.txt g.txt h.txt i.txt j.txt k.txt l.txt m.txt n.txt 	o.txt p.txt q.txt r.txt s.txt t.txt u.txt v.txt w.txt x.txt y.txt z.txt
    [23:15:22 root@localhost zxl]#echo {1..10}.txt
    1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt

通配符glob

*:匹配任意长度字符
	[23:20:20 root@localhost data]#ls -l ./aa* 
    -rw-r--r-- 1 root root 0 7月  21 23:19 ./aaa.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 ./aab.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 ./aac.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 ./aad.txt
?:匹配任意一个单个字符
    [23:23:03 root@localhost data]#ls -l ./ada?
    ls: 无法访问'./ada?': 没有那个文件或目录
    [23:23:06 root@localhost data]#ls -l ./ada.tx?
    -rw-r--r-- 1 root root 0 7月  21 23:19 ./ada.txt
[]:匹配中括号指定集内任意单个字符
    [23:27:12 root@localhost data]#ls -l [a][abcdefg][a].txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 aaa.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 aba.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 aca.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 ada.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 aea.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 afa.txt
    -rw-r--r-- 1 root root 0 7月  21 23:19 aga.txt

变量引用和赋值

变量名=变量对应的值
    [23:29:46 root@localhost data]#name=zhangsan
    [23:31:53 root@localhost data]#echo $name
    zhangsan
删除自定义变量
unset 变量名
    [23:31:53 root@localhost data]#echo $name
    zhangsan
    [23:31:58 root@localhost data]#unset name
    [23:33:25 root@localhost data]#echo $name

变量名使用规则
1、只能包含字母数字和下划线,不能以数字开头
2、不能使用shell的命令和关键字作为变量,如if do done 等
3、变量内容如果为空,可使用双引号或单引号可以括号起来
4、转义字符(\)的使用,将一些特殊字符号显示为字面本身的符号,如enter键、$,\,',",空格符
5、如果变量没有赋值引用,其值为空,即为null
6、变量引用时,若变量名和其它字符相连时,需要用${变量名}

变量的分类

普通变量:作用域在当前shell中,不包括其子进程,所有的普通变量在shell进程终止时,会自动销毁
环境变量:作用域在当前进程和其子进程,需要关键字export或declare -x来声明,才可以成为环境变量
本地变量:作用域即可引用到的范围,比如函数,需要使用关键字local来声明才能成为本地变量
环境变量声明:export 变量名
[23:59:43 root@localhost data]#echo $BASHPID 
2063
[00:00:05 root@localhost data]#echo $NAME 
zhangxuelong
[00:00:19 root@localhost data]#bash
[00:00:24 root@localhost data]#echo $NAME 
zhangxuelong
[00:00:36 root@localhost data]#echo $BASHPID 
3451
注释:NAME变量在子进程传值不变
环境变量相关命令:
export
declare +x
env
只读变量名:只能只读不能修改变量
声明:readonly 变量名

常见的系统内置变量

UID:当前用户ID
HOME:当前用户的家目录
SHELL:当前使用的shell类型
BASHPID:当前BASH的进程编号即PID
HISTSIZE:记录命令历史数目
MALL:当前用户邮件信箱文件存储目录
PATH:执行文件的搜索路径。目录之间以冒号分隔,搜索路径是按路径目录顺序查询
LANG:系统使用的语言及编码字符集,可以用locale -a 可以查看系统支持的所有语系编码,如需永久生			  		效:/etc/locale.com文件
RANDOM:随机生成数字的变量,变量取值范围0-32767之间
PS1:命令提示符
OSTYPE:操作系统类型——linux-gnu
HOSTTYPE:主机类型——x86_64
MACHTYPE:主机类型——x86_64-redhat-linux-gnu

执行状态结果:$?

bash:执行后悔生成一个状态码,值范围:0-255,0表示执行成功,1-255表示前一个命令出现的各种错误
$?:
[00:21:31 root@localhost data]#echo aaaa
aaaa
[00:26:29 root@localhost data]#echo $?
0
[00:26:37 root@localhost data]#cp sad dsad
cp: 无法获取'sad' 的文件状态(stat): 没有那个文件或目录
[00:26:59 root@localhost data]#echo $?
1

一次执行多个命令

分号连接多条命令
格式:命令1;命令;2命令3
[00:27:02 root@localhost data]#echo sdasd;touch ddda.log;ehco nihaoya
sdasd
bash: ehco: 未找到命令...
相似命令是: 'echo'
[00:29:54 root@localhost data]#ls ddda.log 
ddda.log
小括号包含多个命令
格式:(命令1;命令2;命令3)
提示:()会开启子shell,所有()内执行,不会影响当前shell中的变量值
[00:33:01 root@localhost data]#name=aaa
[00:33:13 root@localhost data]#age=18
[00:33:28 root@localhost data]#echo $name;(age=20;echo $NAME $age)
aaa
20
[00:35:05 root@localhost data]#echo $name
aaa
花括号包含多个命令
格式:{命令1;命令2;命令3}
提示{}不会开启子shell,{}中的变量赋值会影响当前的shell中的变量值,{}和命令至少要一个空格,最后一个命令必须以";"或换行符结束
[00:35:05 root@localhost data]#echo $name
aaa
[00:39:57 root@localhost data]#{ echo $name;name=bbb;echo $name;}
aaa
bbb
[00:41:40 root@localhost data]#echo $name 
bbb

vim

格式:vim [option]...file...

选项[option]

+#:打开文件第几行
    [21:25:06 root@localhost ~]#vim + /etc/passwd
    [21:31:21 root@localhost ~]#vim +2 /etc/passwd
+/pattern(正则) 
	[21:34:40 root@localhost ~]#vim +/zxl  /etc/passwd
-b 	file 二进制文件打开
-d 	file file 比较多个文件,相当于 vimdiff
-m 	file 只读打开文件
-e	file 直接进入ex模式

三种主要模式和转换

1、命令或普通模式,默认模式,可以移动光标,剪切/粘贴文本
2、插入或编辑模式:用于修改文本
3、扩展命令或命令行模式:保存、退出等

命令模式转换插入模式

i:在光标所在出输入
I:光标所在行首输入
a:光标所在出后面输入
A:光标所在行末输入
o:当前光标所在行下方打开新一行输入
O:当前光标所在行上方打开新一行输入

扩展命令模式基本命令

w:写入磁盘文件
wq:写入并退出
x:写入并退出
X:加密
q:不保存,退出
q!:不保存,强制退出
r filename:读文件到当前文件中
w filename:当前文件内容写入另外一个文件
!command  执行命令
r!command 读取命令的输出

地址定界

格式
:start_pos,end_pos cmd
地址定界格式
#:	#具体第几行,例如:2  表示光标定位第二行
#,#:	#从左侧#表示起始行,到右侧#表示结尾行
#,+#:	从左侧#表示起始行,加上右侧#表示的行数,例如2,3 表示2到5行
.:	当前行
$:	最后一行
.,$-1:	当前行到最后一行减一
/pattern/:	从当前行向下查找,直到匹配pattern的第一行,即正则表达式

地址定界后跟一个编辑命令

d:删除
y:复制
w file:另存为指定文件
r file:在指定位置插入指定文件中的所有内容
t#:将当前指定的行复制到行后
m#:将当前指定的行移动到行后

查找并替换

格式:
s/要查找的内容/替换为的内容/修饰符
修饰符:
i:忽略大小写
g:全局替换,默认情况,每行只能替换一次出现
gc:全局替换,每次替换前提问

定制vim工作特性

配置文件:
/etc/vimrc	全局配置
~/.vimrc	个人配置
行号
显示:set number,简写:set nu
取消:set nonumber,简写:set nonu
忽略字符大小写
启用:set ignorecase 简写 set ic
不忽略:set noic
自动缩进
启用:set aotoindent,简写set ai
禁用:set noai
复制保留格式
启用:set paste
禁用:set nopaste
显示tab^|和换行符和$显示
启用:set list
禁用:set	nolist
高亮搜索
启用:set hlsearch
禁用:set	nohlsearch 简写:nohl
语法高亮
启用:syntax no
禁用:syntax off
文件格式
启用Windows格式:set fileformat=dos
启用Unix格式:set fileformat=unix
简写 set ff=dos|Unix
tab用空格替代
启用:set expandtab  默认8个空格代替tab
禁用:set noexpand
简写:set et
设置缩进宽度
向右缩进	命令模式>>
向左缩进	命令模式<<
设置缩进为4个字符:set shiftwidth=4
设置文本宽度
set textwidth=65  从左向右计数
set wrapmargin=15 从走向左计数
设置光标所在行的标识标识线
启用:set cursorline 简写 set cul
禁用:set nocursorline 
加密
启用:set key=password
禁用:set key=
set的帮助
:help option-list
:set or :set all
退出vim快捷键,必须在命令模式下操作
ZZ:保存退出
ZQ:不保存退出

删除命令
d:结合光标跳转字符,实习范围删除
d$:删除到行尾
d^:删除到非空行
dd:删除当前行
#dd:多行删除
D:等同于D$
粘贴命令
p(小写):
P(大写)
将文件的内容在当前终端运行一次,才能使用系统变量,要不然值为空
. /etc/os-release

[23:54:17 root@localhost ~]#cat /etc/os-release
NAME="CentOS Linux"
VERSION="8"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"

域名过期检测

每日分享:每日科普
检测域名到期脚本

检测域名到期的shell脚本:查询指定域名的过期时间,并在到期前一周,每天发一封提醒邮件
#!/bin/bash

mail_u=admin@admin.com
#当前日期时间戳,用于和域名的到期时间做比较
t1=`date +%s`

#检测whois命令是否存在,不存在则安装jwhois包
is_install_whois()
{
    which whois >/dev/null 2>/dev/null
    if [ $? -ne 0 ]
    then
    yum install -y epel-release
        yum install -y jwhois
    fi
}

notify()
{
    #e_d=`whois $1|grep 'Expiry Date'|awk '{print $4}'|cut -d 'T' -f 1`
    e_d=`whois $1|grep 'Expiration'|tail -1 |awk '{print $5}' |awk -F 'T' '{print $1}'`
    #如果e_d的值为空,则过滤关键词'Expiration Time'
    if [ -z "$e_d" ]
    then
        e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'`
    fi
    #将域名过期的日期转化为时间戳
    e_t=`date -d "$e_d" +%s`
    #计算一周一共有多少秒
    n=`echo "86400*7"|bc`
    e_t1=$[$e_t-$n]
    e_t2=$[$e_t+$n]
    if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ]
    then
        python mail.py  $mail_u "Domain $1 will  to be expired." "Domain $1 expire date is $e_d."
    fi
    if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ]
    then
        python mail.py $mail_u "Domain $1 has been expired" "Domain $1 expire date is $e_d." 
    fi
}

#检测上次运行的whois查询进程是否存在
#若存在,需要杀死进程,以免影响本次脚本执行
if pgrep whois &>/dev/null
then
    killall -9 whois
fi

is_install_whois

for d in aaa.com bbb.com  aaa.cn
do
    notify $d
done

批量给文件添加权限

function exce1(){
while [ "$1" ] ;do
	[ -f "$1" ]&&[[ "$1" =~ .*\.sh ]]&&chmod +x "$1"&&ll "$1"
	
	shift
done
}

测试IP地址连通性并输入文本

function test_ping(){

for i in {1..254} ;do

ping -c1 -W1 $1.$i &> /dev/null && (echo "$1.$i is up" | tee -a "$1".0.txt ; exit 1 ) || (echo "$1.$i is unreachable" | tee -a "$1".0.txt ; exit 1)

done
}

使用qq邮箱配置邮件服务

  • 软件安装

    yum -y install postfix mailx
    systemctl enable --now postfix
    
  • /etc/mail.rc

    set from=1024320609@qq.com #发送邮件账号,所用qq邮箱的账号
    set smtp=smtp.qq.com
    set smtp-auth-user=1024320609@qq.com #邮件发送身份验证账号,同上
    set smtp-auth-password=xxx  #qq邮箱IMAP/SMTP服务授权码,刚才获得的授权码
    set smtp-auth=login
    set ssl-verify=ignore
    
  • 发送邮件

    echo 'hello,this is my first mail' | mail -s 'hello' 1024320609@qq.com
    

    备注:-s 指定邮件标题,后面跟目标地址

ss网络命令

  • 软件安装

    
    
  • 查看开启的端口

    ss -ntl #查看主机监听的TCP端口
    ss -nul #查看主机监听的UDP端口
    ss -tlr #通过 -r 选项解析 IP 和端口号
    ss -tlp #使用 -p 选项查看监听端口的程序名称
    

MBR引导记录损坏修复

  • 模拟破坏MBR引导记录

    #查看MRB分区磁盘
    [11:39:03 root@rocky8 ~]#lsblk 
    NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0          11:0    1   10G  0 rom  
    nvme0n1     259:0    0  200G  0 disk 
    ├─nvme0n1p1 259:1    0    1G  0 part /boot
    ├─nvme0n1p2 259:2    0  100G  0 part /
    ├─nvme0n1p3 259:3    0    4G  0 part [SWAP]
    ├─nvme0n1p4 259:4    0    1K  0 part 
    └─nvme0n1p5 259:5    0   95G  0 part /data 
    #破坏主引导记录启动的第一个扇区前446个字节清零
    [11:41:07 root@rocky8 ~]#dd if=/dev/zero of=/dev/nvme0n1 bs=446 count=1
    1+0 records in
    1+0 records out
    446 bytes copied, 0.000906786 s, 492 kB/s
     
    [11:45:46 root@rocky8 ~]#hexdump -C -n 512  /dev/nvme0n1
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 04  |................|
    000001c0  01 04 83 fe c2 ff 00 08  00 00 00 00 20 00 00 fe  |............ ...|
    000001d0  c2 ff 83 fe c2 ff 00 08  20 00 00 00 80 0c 00 fe  |........ .......|
    000001e0  c2 ff 82 fe c2 ff 00 08  a0 0c 00 00 80 00 00 fe  |................|
    000001f0  c2 ff 05 fe c2 ff 00 08  20 0d 00 f8 df 0b 55 aa  |........ .....U.|
    00000200
    [11:46:46 root@rocky8 ~]#hexdump -C -n 512  /dev/nvme0n1
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 04  |................|
    000001c0  01 04 83 fe c2 ff 00 08  00 00 00 00 20 00 00 fe  |............ ...|
    000001d0  c2 ff 83 fe c2 ff 00 08  20 00 00 00 80 0c 00 fe  |........ .......|
    000001e0  c2 ff 82 fe c2 ff 00 08  a0 0c 00 00 80 00 00 fe  |................|
    000001f0  c2 ff 05 fe c2 ff 00 08  20 0d 00 f8 df 0b 55 aa  |........ .....U.|
    00000200
    #查看确认第一个扇区是否清零
    [11:47:08 root@rocky8 ~]#hexdump -C -n 512  /dev/nvme0n1 -v
    00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000060  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000070  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000080  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000090  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000d0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000000f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000100  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000110  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000120  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000130  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000150  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000160  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000170  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000180  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    00000190  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000001a0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    000001b0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 80 04  |................|
    000001c0  01 04 83 fe c2 ff 00 08  00 00 00 00 20 00 00 fe  |............ ...|
    000001d0  c2 ff 83 fe c2 ff 00 08  20 00 00 00 80 0c 00 fe  |........ .......|
    000001e0  c2 ff 82 fe c2 ff 00 08  a0 0c 00 00 80 00 00 fe  |................|
    000001f0  c2 ff 05 fe c2 ff 00 08  20 0d 00 f8 df 0b 55 aa  |........ .....U.|
    00000200
    
  • 使用光盘镜像启动修复MRB扇区

    image-20220813120421427

    image-20220813120449908

    image-20220813121609851

    image-20220813121743655

    chroot /mnt/sysroot
    grub2-install /dev/nvme0n1
    hexdump -C -n 512  /dev/nvme0n1 -v
    

redis配置

################################## INCLUDES ###################################
# include /path/to/local.conf #包含子配置文件
################################ GENERAL #####################################
daemonize yes #是否运行为守护进程
pidfile ar/run/redis.pid #pid文件位置
port 6379 #监听端口
tcp-backlog 511 #本地接收缓冲满了,缓存在tcp队列
bind 127.0.0.1 #指明监听的地址
# unixsocket /tmp/redis.sock #sock文件位置
# unixsocketperm 700 #sock文件权限
timeout 0 #客户端超时,0表示不超时
loglevel notice #指定日志级别,推荐级别大些
logfile ar/log/redis/redis.log #指定日志文件位置
# syslog-facility local0 #如果使用syslog接受日志,这里设置syslog设备
databases 16 #指定数据库数量
################################ 快照 ################################
# save "" #关闭save操作
save 900 1 #900秒内,一个键发生变化做一次sava
save 300 10 #300秒内,十个键发生变化做一次sava
save 60 10000 #60秒内,一万个键发生变化做一次sava
stop-writes-on-bgsave-error yes #在进行快照备份时,一旦检测到快照发生错误,是否停止
rdbcompression yes #是否对文件进行压缩
rdbchecksum yes #是否对rdb的镜像文件做校验码检测
dbfilename dump.rdb #指明db文件名
dir arb/redis/ #指明db文件目录
################################# 复制 #################################
# slaveof &lt;masterip&gt; &lt;masterport&gt; #指定redis主节点的ip地址和端口
# masterauth &lt;master-password&gt; #指定redis主节点密码(如果没有则不指定)
slave-serve-stale-data yes #当slave丢失master或者同步正在进行时,如果发生对slave的服务请求:设置为yes则slave正常提供服务,设置为no,则salve返回client错误
slave-read-only yes #设置从库只读
# repl-ping-slave-period 10 #slave发送pings到master的间隔时间
# repl-timeout 60 #IO超时时间
# repl-backlog-size 1mb #同步的backlog(主库连接从库的队列)大小
# repl-backlog-ttl 3600 #backlog生存时间
slave-priority 100 #slave优先级
# min-slaves-to-write 3 #设置slave小于几个master停止写入操作
# min-slaves-max-lag 10 #设置slave落后master指定秒,master停止写入操作
################################## 安全 ###################################
# requirepass foobared #设置redis连接密码
# rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52 #重命名CONFIG命令
# rename-command CONFIG "" #

使用xtrabackup备份恢复

1、下载安装xtrabackup
[root@node1 ~]# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.3.4/binary/redhat/6/x86_64/percona-xtrabackup-2.3.4-1.el6.x86_64.rpm
[root@node1 ~]# yum localinstall percona-xtrabackup-2.3.4-1.el6.x86_64.rpm #需要EPEL源
2、备份过程
[root@node1 ~]# mkdir /extrabackup #创建备份目录
[root@node1 ~]# innobackupex --user=root /extrabackup/ #备份数据
###################提示complete表示成功*********************

[root@node1 ~]# ls /extrabackup/ #看到备份目录
2016-04-27_07-30-48
3、准备一个完全备份
[root@node1 ~]# innobackupex --apply-log /extrabackup/2016-04-27_07-30-48/ #指定备份文件的目录

#一般情况下下面三行结尾代表成功*****************
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 369661462
160427 07:40:11 completed OK!

[root@node1 ~]# cd /extrabackup/2016-04-27_07-30-48/
[root@node1 2016-04-27_07-30-48]# ls -hl #查看备份文件
total 31M
-rw-r----- 1 root root 386 Apr 27 07:30 backup-my.cnf
drwx------ 2 root root 4.0K Apr 27 07:30 employees
-rw-r----- 1 root root 18M Apr 27 07:40 ibdata1
-rw-r--r-- 1 root root 5.0M Apr 27 07:40 ib_logfile0
-rw-r--r-- 1 root root 5.0M Apr 27 07:40 ib_logfile1
drwx------ 2 root root 4.0K Apr 27 07:30 mysql
drwx------ 2 root root 4.0K Apr 27 07:30 performance_schema
drwx------ 2 root root 4.0K Apr 27 07:30 test
-rw-r----- 1 root root 27 Apr 27 07:30 xtrabackup_binlog_info
-rw-r--r-- 1 root root 29 Apr 27 07:40 xtrabackup_binlog_pos_innodb
-rw-r----- 1 root root 117 Apr 27 07:40 xtrabackup_checkpoints
-rw-r----- 1 root root 470 Apr 27 07:30 xtrabackup_info
-rw-r----- 1 root root 2.0M Apr 27 07:40 xtrabackup_logfile
4、恢复数据
[root@node1 ~]# rm -rf /data/* #删除数据文件

***不用启动数据库也可以还原*************

[root@node1 ~]# innobackupex --copy-back /extrabackup/2016-04-27_07-30-48/ #恢复数据, 记清使用方法

#########我们这里是编译安装的mariadb所以需要做一些操作##########
[root@node1 data]# killall mysqld

[root@node1 ~]# chown -R mysql:mysql ./*
[root@node1 ~]# ll /data/ #数据恢复
total 28704
-rw-rw---- 1 mysql mysql 16384 Apr 27 07:43 aria_log.00000001
-rw-rw---- 1 mysql mysql 52 Apr 27 07:43 aria_log_control
-rw-rw---- 1 mysql mysql 18874368 Apr 27 07:43 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Apr 27 07:43 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Apr 27 07:43 ib_logfile1
-rw-rw---- 1 mysql mysql 264 Apr 27 07:43 mysql-bin.000001
-rw-rw---- 1 mysql mysql 19 Apr 27 07:43 mysql-bin.index
-rw-r----- 1 mysql mysql 2166 Apr 27 07:43 node1.anyisalin.com.err


[root@node1 data]# service mysqld restart
MySQL server PID file could not be found! [FAILED]
Starting MySQL.. [ OK ]

MariaDB [(none)]> SHOW DATABASES; #查看数据库, 已经恢复
+--------------------+
| Database |
+--------------------+
| information_schema |
| employees |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec

zabbix常用的监控架构平台

1、server-agentd模式:
这个是最简单的架构了,常用于监控主机比较少的情况下。
2、server-proxy-agentd模式:
这个常用于比较多的机器,使用proxy进行分布式监控,有效的减轻server端的压力。

刚刚小技巧发重复了,补发一个

今日小技巧:

LogStash由JRuby语言编写,基于消息(message-based)的简单架构,并运行在Java虚拟机(JVM)上。不同于分离的代理端(agent)或主机端(server),LogStash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。

LogStash的四大组件
Shipper:发送事件(events)至LogStash;通常,远程代理端(agent)只需要运行这个组件即可;
Broker and Indexer:接收并索引化事件;
Search and Storage:允许对事件进行搜索和存储;
Web Interface:基于Web的展示界面
正是由于以上组件在LogStash架构中可独立部署,才提供了更好的集群扩展性。

获取公网IP地址API

curl  http://ipinfo.io/ip/
curl http://ip.sb
curl -L http://tool.lu/ip
curl cip.cc

image-20220902015207752

vim - 在visudo时更改默认编辑器

只需设置VISUAL环境变量

export VISUAL=vim

将此添加到~/.bashrc,使它永久生效。

VISUAL="vim" ; export VISUAL
 
EDITOR="$VISUAL" ; export EDITOR

查看linux系统在线用户以及踢下线执行命令

  • 查看linux系统在线用户

    [23:21:02 root@rocky8_31 ~]#who
    root     tty1         2022-09-15 17:19
    root     pts/0        2022-09-16 23:16 (192.168.10.6)
    root     pts/1        2022-09-16 16:08 (192.168.100.1)
    root     pts/3        2022-09-16 17:07 (192.168.10.6)
    
  • 踢下线执行命令

    pkill -kill -t pts/0
    

systemctl命令


systemctl start + 服务名
systemctl restart + 服务名
systemctl stop + 服务名
systemctl status + 服务名
 systemctl is-active + 服务名 #查看服务是否已启动
 systemctl is-enabled + 服务名 #服务是否是开机启动
systemctl enable --now + 服务名  #开机启动及现在运行应用服务
systemctl disable --now + 服务名  #开机不启动及现在停止应用服务
systemctl show + 服务名	#检查服务的所有配置细节
systemctl cat + 服务名	#查看启动服务文件信息
systemctl set-default multi-user.target #设置开机启动系统运行级别
systemctl get-default	获取当前开机启动系统运行级别
systemctl list-unit-files --type service #查看所有服务状态
systemctl list-units --type service --all #查看所有服务状态
systemctl list-units #列出所有运行的单元
systemctl reload + 服务名 #重载服务
systemctl mask + 服务名	#屏蔽服务(不让服务启动)
systemctl unmask + 服务名	#显示服务
systemctl kill + 服务名 #使用systemctl命令杀死服务
systemctl list-dependencies + 服务名 #获取某个服务的依赖性列表
systemctl isolate runlevel3.target #启动运行等级3,即多用户模式(命令行)
systemctl isolate runlevel5.target #启动运行等级5,即图形模式

主机名配置

hostnamectl set-hostname rocky8_31 #永久修改主机名
hostname zxl #临时修改主机名,需重新登录命令窗口才能生效
hostname #查看主机名
[23:59:14 root@rocky8_31 ~]#hostnamectl #显示主机相关信息
   Static hostname: rocky8_31
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 0f381099f1f44c15951db3ef1b8901a5
           Boot ID: 9ee0fc31ad674b6489ead72588217b02
    Virtualization: vmware
  Operating System: Rocky Linux 8.5 (Green Obsidian)
       CPE OS Name: cpe:/o:rocky:rocky:8.5:GA
            Kernel: Linux 4.18.0-348.el8.0.2.x86_64
      Architecture: x86-64

系统日志详解

  • 相关日志说明

    /var/log/secure:系统安全日志,文本格式,应周期性分析
    /var/log/btmp:当前系统上,用户的失败尝试登录相关的日志信息,二进制格式,lastb命令进行
    查看
    /var/log/wtmp:当前系统上,用户正常登录系统的相关日志信息,二进制格式,last命令可以查看
    /var/log/lastlog:每一个用户最近一次的登录信息,二进制格式,lastlog命令可以查看
    /var/log/dmesg:CentOS7 之前版本系统引导过程中的日志信息,文本格式,开机后的硬件变化
    将不再记录,也可以通过专用命令dmesg查看,可持续记录硬件变化的情况
    /var/log/boot.log 系统服务启动的相关信息,文本格式
    /var/log/messages :系统中大部分的信息
    /var/log/anaconda : anaconda的日志
    
  • 查看登录信息

    #查看失败登录信息
    [03:46:58 root@rocky8_12 ~]#lastb
    zxl      ssh:notty    192.168.100.36   Sun Sep 18 03:43 - 03:43  (00:00)
    zxl      ssh:notty    192.168.100.36   Sun Sep 18 03:43 - 03:43  (00:00)
    root     ssh:notty    192.168.100.1    Wed Sep  7 16:15 - 16:15  (00:00)
    
    btmp begins Wed Sep  7 16:15:30 2022
    #查看登录成功信息
    [03:47:00 root@rocky8_12 ~]#last
    zxl      pts/1        192.168.100.36   Sun Sep 18 03:43   still logged in
    root     pts/0        192.168.100.1    Sun Sep 18 03:41   still logged in
    reboot   system boot  4.18.0-348.el8.0 Sun Sep 18 03:38   still running
    root     pts/0        192.168.100.1    Sun Sep 18 02:30 - crash  (01:08)
    reboot   system boot  4.18.0-348.el8.0 Sun Sep 18 02:27   still running
    reboot   system boot  4.18.0-348.el8.0 Sun Sep 18 00:39   still running
    root     pts/2        192.168.100.36   Sun Sep 18 00:20 - 00:21  (00:00)
    root     pts/2        192.168.100.36   Sun Sep 18 00:17 - 00:18  (00:01)
    root     pts/2        192.168.100.31   Sat Sep 17 23:56 - 23:56  (00:00)
    root     pts/2        192.168.100.31   Sat Sep 17 23:53 - 23:56  (00:03)
    root     pts/2        192.168.100.31   Sat Sep 17 23:49 - 23:53  (00:03)
    root     pts/2        192.168.100.31   Sat Sep 17 23:49 - 23:49  (00:00)
    root     pts/1        192.168.100.1    Sat Sep 17 23:46 - crash  (00:53)
    root     pts/0        192.168.100.1    Sat Sep 17 23:46 - crash  (00:53)
    reboot   system boot  4.18.0-348.el8.0 Sat Sep 17 23:45   still running
    root     pts/2        192.168.100.31   Sat Sep 17 23:27 - crash  (00:18)
    root     pts/1        192.168.10.6     Sat Sep 17 23:24 - crash  (00:21)
    root     pts/0        192.168.10.6     Sat Sep 17 23:21 - crash  (00:24)
    root     pts/0        192.168.10.6     Sat Sep 17 23:19 - 23:21  (00:01)
    root     pts/1        192.168.10.6     Sat Sep 17 23:18 - 23:24  (00:05)
    #所有用户最后一次登录信息
    [03:50:25 root@rocky8_12 ~]#lastlog
    Username         Port     From             Latest
    root             pts/0    192.168.100.1    Sun Sep 18 03:41:54 +0800 2022
    bin                                        **Never logged in**
    daemon                                     **Never logged in**
    adm                                        **Never logged in**
    lp                                         **Never logged in**
    sync                                       **Never logged in**
    shutdown                                   **Never logged in**
    halt                                       **Never logged in**
    mail                                       **Never logged in**
    operator                                   **Never logged in**
    games                                      **Never logged in**
    ftp                                        **Never logged in**
    nobody                                     **Never logged in**
    dbus                                       **Never logged in**
    systemd-coredump                           **Never logged in**
    systemd-resolve                            **Never logged in**
    tss                                        **Never logged in**
    polkitd                                    **Never logged in**
    geoclue                                    **Never logged in**
    rtkit                                      **Never logged in**
    pipewire                                   **Never logged in**
    pulse                                      **Never logged in**
    qemu                                       **Never logged in**
    clevis                                     **Never logged in**
    usbmuxd                                    **Never logged in**
    unbound                                    **Never logged in**
    gluster                                    **Never logged in**
    rpc                                        **Never logged in**
    avahi                                      **Never logged in**
    chrony                                     **Never logged in**
    setroubleshoot                             **Never logged in**
    saslauth                                   **Never logged in**
    libstoragemgmt                             **Never logged in**
    dnsmasq                                    **Never logged in**
    radvd                                      **Never logged in**
    sssd                                       **Never logged in**
    cockpit-ws                                 **Never logged in**
    cockpit-wsinstance                           **Never logged in**
    flatpak                                    **Never logged in**
    colord                                     **Never logged in**
    rpcuser                                    **Never logged in**
    gdm              tty1                      Fri Sep  9 08:41:55 +0800 2022
    gnome-initial-setup                           **Never logged in**
    tcpdump                                    **Never logged in**
    sshd                                       **Never logged in**
    zxl              pts/1    192.168.100.36   Sun Sep 18 03:43:23 +0800 2022
    named                                      **Never logged in**
    mysql                                      **Never logged in**
    apache                                     **Never logged in**
    
    #引导过程中的日志信息,文本格式,开机后的硬件变化
    [03:55:18 root@rocky8_12 ~]#dmesg |tail 
    [   10.862886] vmxnet3 0000:03:00.0 ens160: intr type 3, mode 0, 3 vectors allocated
    [   10.863537] vmxnet3 0000:03:00.0 ens160: NIC Link is Up 10000 Mbps
    [   12.971404] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
    [   13.015458] tun: Universal TUN/TAP device driver, 1.6
    [   13.016750] virbr0: port 1(virbr0-nic) entered blocking state
    [   13.016753] virbr0: port 1(virbr0-nic) entered disabled state
    [   13.020672] device virbr0-nic entered promiscuous mode
    [   14.166300] virbr0: port 1(virbr0-nic) entered blocking state
    [   14.166303] virbr0: port 1(virbr0-nic) entered listening state
    [   14.322500] virbr0: port 1(virbr0-nic) entered disabled state
    
    

    K8s Calico介绍

    Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在 Internet 中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。而在多数的虚拟化平台实现中,通常都使用二层隔离技术来实现容器的网络,这些二层的技术有一些弊端,比如需要依赖 VLAN、bridge 和隧道等技术,其中 bridge 带来了复杂性,vlan 隔离和 tunnel 隧道则消耗更多的资源并对物理环境有要求,随着网络规模的增大,整体会变得越加复杂。我们尝试把 Host 当作 Internet 中的路由器,同样使用 BGP 同步路由,并使用 iptables 来做安全访问策略,最终设计出了 Calico 方案。
    

locale语言设置

推荐使用UTF8编码,因为这是国际标准,能兼容任何语言的编码。在CentOS VPS下修改语言编码:

[10:50:01 root@rocky8_31 ~]#locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
You have new mail in /var/spool/mail/root

  • 临时修改编码
#产生编码文件
localedef -c -f UTF-8 -i zh_CN zh_CN.utf8
#更改当前的编码为zh_CN.utf8
export LC_ALL=zh_CN.utf8
  • 永久更改编码
echo 'LANG=zh_CN.UTF-8' > /etc/sysconfig/i18n

echo 'LC_ALL=zh_CN.UTF-8' >> /etc/sysconfig/i18n

K8s-Flannel网络工作原理

K8s-Flannel网络工作原理
Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。
默认的节点间数据通信方式是UDP转发。

数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
Flannel通过Etcd服务维护了一张节点间的路由表,详细记录了各节点子网网段 。
源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。

Tar分享

Tar
tar 最常用的压缩工具之一。

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

# tar -cf all.tar *.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar
这条命令是解出all.tar包中所有文件,-t是解开的意思

压缩

tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg

tar -czf jpg.tar.gz *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz

tar -cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2

tar -cZf jpg.tar.Z *.jpg   //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z

rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux

zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux

解压

tar -xvf file.tar //解压 tar包

tar -xzvf file.tar.gz //解压tar.gz

tar -xjvf file.tar.bz2   //解压 tar.bz2

tar -xZvf file.tar.Z   //解压tar.Z

unrar e file.rar //解压rar

unzip file.zip //解压zip

总结

1、*.tar 用 tar -xvf 解压

2、*.gz 用 gzip -d或者gunzip 解压

3、*.tar.gz和*.tgz 用 tar -xzf 解压

4、*.bz2 用 bzip2 -d或者用bunzip2 解压

5、*.tar.bz2用tar -xjf 解压

6、*.Z 用 uncompress 解压

7、*.tar.Z 用tar -xZf 解压

8、*.rar 用 unrar e解压

9、*.zip 用 unzip 解压

LVM 简介

### 今日分享

####LVM 简介


LVM是 Logical Volume Manager(逻辑卷管理)的简写。LVM将一个或多个硬盘或分区或raid在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。

#### LVM基本术语

- 物理卷(physical volume) 物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。

* 卷组(Volume Group):LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

  > PV必须加入VG
  >
* 逻辑卷(logical volume):LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

  > 从VG中划分
  >
* PE(physical extent):每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
* LE(logical extent):逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。

#### LVM常用命令

```bash
1、查看
pvdisplay
vgdisplay
lvdisplay
pvscan/pvs
vgscan/vgs
lvscan/lvs

2、创建
pvcreate /dev/xvdb4
vgcreate myVG /dev/xvdb4
lvcreate -l 100%FREE -n myLV myVG
lvcreate -l 100%free -n myLV myVG
lvcreate -L +120G -n myLV myVG

3、删除
lvremove /dev/myVG/myLV
vgremove /dev/myVG
pvremove /dev/xvdb4

4、增加 vg 大小
vgextend myVG /dev/xvdb5

5、减小 vg 大小
vgreduce myVG /dev/xvdb5

6、增加逻辑卷的大小
lvextend -l 100%FREE /dev/myVG/myLV
lvextend -L +120G  /dev/mapper/centos-root

7、减小逻辑卷的大小
lvreduce -L 1G /dev/myVG/myLV
lvreduce -l -256 /dev/myVG/myLV

8、调整卷大小,可增可减
lvresize -L 40G /dev/myVG/myLV

9、刷新挂载点
resize2fs /dev/myVG/myLV

10、链接目录
ln -sf /dev/myVG/myLV /home/hl

11、查看逻辑卷 id
blkid /dev/myVG/myLV

12、格式化逻辑卷
mkfs -t ext4 /dev/myVG/myLV

13、扩展xfs根目录卷
pvcreate /dev/sdb
vgextend cenots /dev/sdb
lvextend -l +100%FREE /dev/centos/root
xfs_growfs /dev/centos/root

14、将 home 目录空间扩展到根目录
umount /home/
lvremove /dev/mapper/centos-home
lvextend -L +120G  /dev/mapper/centos-root
# lvextend -l 100%FREE /dev/mapper/centos-root
xfs_growfs /dev/mapper/centos-root
lvcreate -L 47G -n home centos
mkfs.xfs /dev/mapper/centos-home
mount /dev/mapper/centos-home /home
```

在ubuntu下修改时区

  • 输入“timedatectl”命令检查当前是日期和时区设置。

    [16:15:47 root@zxl ~]#timedatectl
                          Local time: Thu 2022-10-27 16:21:03 CST
                      Universal time: Thu 2022-10-27 08:21:03 UTC
                            RTC time: Thu 2022-10-27 08:21:03
                           Time zone: Asia/Shanghai (CST, +0800)
           System clock synchronized: yes
    systemd-timesyncd.service active: yes
                     RTC in local TZ: no
    
  • 再输入以下命令搜索你的时区,例如搜索上海的时区。

  • [16:23:41 root@zxl ~]#timedatectl list-timezones|grep Asia/Shanghai
    Asia/Shanghai
    
  • 修改时区。

timedatectl set-timezone Asia/Shanghai
  • 最后可使用以下命令来验证修改好的时间时区
[08:14:51 root@zxl ~]#timedatectl set-timezone Asia/Shanghai
[16:15:38 root@zxl ~]#date -R
Thu, 27 Oct 2022 16:15:47 +0800
posted @ 2022-08-01 15:59  天梯的脚印  阅读(164)  评论(0)    收藏  举报