Ubuntu20.04 每周一次的备份
太重要了,版本
crontab -e
0 0 * * 1 bash /back/xxx,sh
对容器数据库的备份 dump.sh
cd /back
DB_ID=$(docker ps -a | grep mariadb-server | awk '{print $1}')
docker exec ${DB_ID} mysqldump -uroot -p123456 --all-databases > $(date +%Y%m%d).sql
清理日志,尽量不要删除日志文件,鬼知道设置了什么权限。找个空文件给它重定向进去就算清除了。
cat /dev/null > /var/lib/docker/containers/abcd-json.log
查看当前目录下的各目录大小等。很实用
du -lh --max-depth=1
rabbitMQ 之 重要的事情 rabbitMQ因为日志问题导致出错的时候,清理日志后。 会出现一堆错误,这时候优先重启rabbitMQ等一段时间。 时间主要取决于你服务重启的时间是多久。
如果服务有问题了。 那就把服务相关的服务手动重启一下
一个良好的架构设计和运维保障措施,能为OpenStack云平台的稳定健康运行,产生不可估量的积极影响。
一个基本的物理基础设施IT环境,包括了电力设备、空调和防火设备、网络设备(如交换机、路由器、防火墙等)、存储设备和服务器等。
防火墙一定要在核心交换机外。 一般地,在OpenStack生产环境上,交换机端口应该做聚合(channel)。 也就是将2个或多个物理端口组合在一起成为一条逻辑的链路从而增加交换机和网络节点之间的带宽,将属于这几个端口的带宽合并,给端口提供一个几倍于独立端口的独享的高带宽。 Trunk是一种封装技术,它是一条点到点的链路,链路的两端可以都是交换机,也可以是交换机和路由器,还可以是主机和交换机或路由器。
服务器都应该做网卡Bond,来提供服务器网络的冗余、高可用和负载均衡的能力,根据实际需求,可以选择模式0或模式1。 在网络流量较大的场景下推荐使用bond 0; 在可靠性要求较高的场景下推荐使用bond 1
mode=0 bond 0 数据从不同网口发出,可能影响网络吞吐量; 如果bond的两个网口接到同一个交换机上,需要做配置聚合模式。 有无序的问题, 无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。
mode=1 bond 1 资源利用率低,在有 N 个slave网络接口的情况下,资源利用率为 1/N ;(主-备份策略) 无负载均衡能力。
如果是多于90台OpenStack节点规模的私有云或公有云环境,则推荐尽量都使用万兆网络。 一般都是千兆网络,因为涉及到机器的创建,镜像不同节点的调度,存储不同节点的调度,如果带宽太小,则需要增加各个环节的等待时长。
bond配置 ubuntu 20.04版本 和以前16的区别很大,16的用的是/etc/network/interfaces配置文件 在20.04中是无效的,必须修改/etc/netplan下的文件,每台机器的yaml文件可能不一样,但是是要是yaml文件都可以配置
network:
version: 2
ethernets:
eth1:
addresses: []
dhcp4: no
eth2:
addresses: []
dhcp4: no
bonds:
bond0:
addresses:
- 192.168.1.88/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 114.114.114.114
interfaces:
- eth1
- eth2
parameters:
mode: balance-alb
sudo netplan apply
1、mode=0(balance-rr)(平衡抡循环策略) 2、mode=1(active-backup)(主-备份策略) 3、mode=2(balance-xor)(平衡策略) 4、mode=3(broadcast)(广播策略) 5、mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合) 6、mode=5(balance-tlb)(适配器传输负载均衡) 7、mode=6(balance-alb)(适配器适应性负载均衡)
vim /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31"
echo 0 > /sys/kernel/mm/ksm/pages_shared
echo 0 > /sys/kernel/mm/ksm/pages_sharing
echo always > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo 0 > /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
这些配置对云主机 CPU 性能大概有7%左右的提升。
日常巡检命令 top -u root #手动指定用户,对他使用的进程进行查看 ps aux | sort -nrk 3,3 | head -n 5 #查看占用最多的前5个进程 ps -C containerd -o %cpu #可以指定进程名,返回他占用的CPU数据
%CPU
2.1
vmstat 是一个命令行实用程序,用于打印有关 CPU 活动、进程、块 IO、磁盘和分页的详细信息。 如果想使用 vmstat 命令以 2 秒的间隔监视系统资源,间隔 5 次。在这种情况下,请使用以下命令:
root@controller:/etc/default
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b 交换 空闲 缓冲 缓存 si so bi bo in cs us sy id wa st
1 0 0 157462496 34918292 28579348 0 0 3 9 0 0 1 1 98 0 0
0 0 0 157464176 34918292 28579372 0 0 0 188 7201 11580 1 0 99 0 0
3 0 0 157464928 34918292 28579456 0 0 0 897 7368 11982 1 0 99 0 0
0 0 0 157465216 34918292 28579516 0 0 4 248 8272 13991 1 0 99 0 0
2 0 0 157426816 34918292 28579636 0 0 0 2083 19218 50013 3 3 95 0 0
sar命令也可以实现同样的效果
root@controller:/etc/default
Linux 5.13.0-37-generic (controller) 2022年05月24日 _x86_64_ (48 CPU)
11时34分39秒 CPU %user %nice %system %iowait %steal %idle
11时34分42秒 all 2.04 0.00 1.73 0.00 0.00 96.24
11时34分45秒 all 2.90 0.00 1.22 0.00 0.00 95.88
11时34分48秒 all 3.50 0.00 1.27 0.00 0.00 95.22
平均时间: all 2.81 0.00 1.41 0.00 0.00 95.78
cat /proc/meminfo
total:内存总数
used:已使用的内存数
free:空闲的内存数
shared:当前已废弃不用
buffers:系统分配但未被使用的缓冲区
cached:系统分配但未被使用的缓存
vmstat也可以查看内存
存储问题 du == disk usage (磁盘使用量,占用的磁盘空间)
通常情况下,ls 显示的文件大小比du显示的磁盘占用空间小 原因: 比如文件系统的block是4K,一个13K的文件占用的空间是 13k/4k = 3.25 个block,一个block只能被一个文件占用,因此实际占用空间就是4个block,就是16K。
一个文件占用的磁盘空间和一个文件的大小是两码事情。占用空间取决于文件系统的块(block)的大小,linux一般默认是4k(4096) ,因此,一个大小为1个字节的文件,最小也要占用4k,如果你创建文件系统的时候制定块大小是16K,那么即便一个文件只有1个字节,占用空间也是16K。
如果一个分区上主要放大文件,那么block可以大一些,有利于减少磁盘碎片,如果主要放小文件,那么block设置小一下,否则太浪费磁盘空间。
网络问题 uniq -c 相当于分组统计并把统计数放在最前面 列出当前服务器每一进程运行的数量,倒序排列
ps -ef | awk -F ' ' '{print $8 " " $9}' |sort | uniq -c |sort -nr |head -20
对比httpd.conf中MaxClients的数字差距多少
netstat -an | grep ESTABLISHED | wc -l
统计httpd进程数
ps -ef|grep httpd|wc -l
netstat -an会打印系统当前网络链接状态,而grep -i “80”是用来提取与80端口有关的连接的,wc -l进行连接数统计。 最终返回的数字就是当前所有80端口的请求总数
netstat -nat|grep -i "80"|wc -l
netstat -an会打印系统当前网络链接状态,而grep ESTABLISHED 提取出已建立连接的信息。然后wc -l统计
netstat -na|grep ESTABLISHED|wc -l
查看详情
netstat -nat||grep ESTABLISHED|wc
输出每个ip的连接数,以及总的各个状态的连接数
netstat -n | awk '/^tcp/ {n=split($(NF-1),array,":");if(n<=2)++S[array[(1)]];else++S[array[(4)]];++s[$NF];++N} END {for(a in S){printf("%-20s %s\n", a, S[a]);++I}printf("%-20s %s\n","TOTAL_IP",I);for(a in s) printf("%-20s %s\n",a, s[a]);printf("%-20s %s\n","TOTAL_LINK",N);}'
查看TCP的连接状态
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n | awk '/^tcp/ {++state[$NF]}; END {for(key in state) print key,"\t",state[key]}'
netstat -n | awk '/^tcp/ {++arr[$NF]};END {for(k in arr) print k,"\t",arr[k]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn
netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c
netstat -ant|awk '/ip:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -n
netstat -ant|awk '/:80/{split($5,ip,":");++S[ip[1]]}END{for (a in S) print S[a],a}' |sort -rn|head -n 10
查找较多time_wait连接
netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
根据端口列出进程
netstat -ntlp | grep 80 | awk '{print $7}' | cut -d/ -f1
查找请求数前20个IP(常用于查找攻来源):
netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A[i],i}' |sort -rn|head -n20
查看连接数,和当前连接数
netstat -ant | grep $ip:80 | wc -l
netstat -ant | grep $ip:80 | grep EST | wc -l
linux当前的连接状态
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
连接状态
netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
小知识1 我的 openstack 日志问题导致了,rabbitMQ出错。 日志删除后,其他服务也出错。原因在于其他服务停的时间长了之后有Token失效了。 需要重启一下heat 和 horizon 和 keystone 如果有其他操作导致了调度机器比如说删除卡住了。先重启了heat和horizon ,然后再重启compute相关服务即可。 小知识2 有个机器一直在创建中,调度日志也没有。卷也没有。重启nova服务都不行。 右边有个强制删除,点击删除后。 显示找不到机器信息,然后就消失了。
|