一、关于firewalld
centos7默认的防火墙
- systemctl status firewalld.service
- firewall-cmd --get-default-zone # 查看默认区域
查看防火墙规则
firewall-cmd --list-all
查看防火墙是否放通某个端口
firewall-cmd --query-port=8080/tcp
开放端口或者服务
firewall-cmd --permanent --zone=public --add-port=80/tcp
要想使配置的端口号生效,必须重新载入 firewall-cmd --reload
端口转发 firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=134.175.167.56
firewall-cmd --panic-on # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
二、关于K8S原理
3-17
1、IAM权限策略 策略优先于权限
2、练习批创文件,来自notepad++,通过for循环创建文件,删除采用
查看文件,使用xargs将输出转为输入,一组10个删除
同样使用for循环,定位所有文件,执行$i删除循环,done结束循环
使用find + exec rm -rf {} \;格式删除 在find语句中可以嵌套name 或者type等字段定位
仍然使用find 不过删除直接采用--delete的方式 速度更快
shell
time 指令的用途,在于量测特定指令执行时所需消耗的时间及系统资源等资讯
rsync删除
创建空文件夹,使用空文件夹方式进行覆盖
rsync -av /root/empty /home/allan/test/
二、shell脚本的学习
包含if语句的,if--elif--else 以及[]判断,|| 和 && 以及== -eq等
3-18
1、升级内核文章 注意先修改ELB的权重值为0,然后
yum update kernel -y
当前内核版本3.10.0-1160.53.1.el7.x86_64
shutdown -r now
2、切换Yum源
先将原有的yum源重命名 mv
然后 wget 阿里的Centos7源 -O参数命名
yum clean all 清除原来的缓存
yum makecache 生成新的缓存
3、fdisk 和 parted
可以使用重定向文本输入的方式作为fdisk的输入
mklabel gpt
unit s
makepart 100% test 2048
p 查看
q
4、VPN和专线
VPN 是ipsec VPN
云专线,
物理连接,虚拟网关,虚拟接口
华为云侧自动下发路由 客户本地配置静态路由或者BGP路由
静态路由:ip route-static x.x.x.x 255.255.255.0 网关
包含本地BGP AS号
以及对端华为云侧的网段 AS号
对端网段peer以及加密方式simple/ciper 以及密码
发布本地网络以及掩码
VPN 实际上还是走的公网 北京四到上海一VPC打通VPN后,互ping时延30ms
华为云创建VPN网关,对端子网先随便写一个内网地址
北京四等到创建好之后,出来本端子网,然后就可以作为上海一区域的远端子网
等到上海一区域创建成功后,本端网关可以作为上海一的远端网关,点击修改
建立连接,不会主动去发起VPN,需要数据流触发,如互Ping 或者真实的数据流
3-22
一、服务器SSH加固
1、更换sshd端口号,改掉默认的22端口
二、开启防火墙加安全组规则
三、更换为秘钥登陆
控制台创建秘钥对 绑定给服务器
更改sshd配置文件 密码认证改为no
四、安全组规则 新加端口
五、定义hosts.allow 以及hosts.allow文件
hosts.allow文件 添加sshd:ALL
二、分布式架构演进
单体架构--应用和数据库服务器拆分--缓存/搜索的能力引入--数据库读写分离--数据库水平/垂直拆分--应用拆分--微服务化
单体架构:应有和服务器整体化部署 所有业务都在一个应用里实现
应用和数据库服务器拆分:横向扩展,将数据库服务单独部署
缓存/搜索能力引入: 引入缓存降低对数据库的访问,比如将用户信息表存入缓存
数据库读写分离:针对读写不一致的情况,进行读写分离重构,缓解数据库压力
数据库水平拆分:将交易数据从一张表拆分为10张表,并让这些表在不同的数据库 使用分布式数据库中间件
数据库垂直拆分:按照业务维度将原有数据库拆分成两个或多个,避免因为不同的业务相互影响
应用拆分: 从逻辑上对应用进行拆分 比如金融业务 拆分成存储业务和理财应用,保险应用
微服务化:拆分抽象独立服务独立部署 解耦应用和应用之间的绑定关系
三、IOE
IBM的小型机 Oracle数据库 EMC存储
IBM小型机性能强悍
Oracle高级功能多 但是软件授权成本高
EMC存储高端存储 单位存储成本高
F5 硬件负载均衡软件
禁用 ROOT
用户名和密码尽量复杂
修改 SSH 的默认 22 端口
安装 DenyHosts 防暴力破解软件
禁用密码登录,使用 RSA 公钥登录
Redis:
禁用公网 IP 监听,包括 0.0.0.0
使用密码限制访问 Redis
使用较低权限帐号运行 Redis
3-25
一、关于架构
高可用,是指7*24提供服务,任何一台机器挂了或者磁盘坏了,服务不终止,文件不丢失;
高可靠,是指正确的输入,得到正确的输出,读取a文件,不会得到b文件;
高性能,是指吞吐量很牛逼,每秒响应几十万请求;
可扩展,是指加机器,就能提升性能,就能存更多文件;
3-28
【1】openstack-nova-api.service nova-api是整个nova的入口,负责接受和响应终端用户有关虚拟机对云硬盘盘的请求。
【2】openstack-nova-consoleauth.service 守护进程,由用户的console控制台代理提供授权tokens,两种模式nova-novncproxy和nova-xvpnvcproxy
【3】openstack-nova-scheduler.service 负责调度虚拟机在哪个物理宿主机上部署,接受消息队列指令并执行。
【4】openstack-nova-conductor.service nova-conductor模式,介于nova-computer和database之间,设计目的在于消除直接nova-computer直接访问云数据库。
【5】openstack-novncproxy.service 守护进程,提供了VNC连接访问正在运行的实例的代表,基于novnc客户浏览器
【6】openstack-nova-compute.service 两个职责,其一,是守护进程,负责基于各种虚拟化技术Hypervisior实现创建和终止虚拟机;其二,整合了计算资源CPU,存储,网络三类资源部署管理虚拟机,实现计算能力的交付。
云单元架构
1、自包含性 业务功能涉及的服务和数据是单元内自包含的,每个单元都具备完成业务所需的计算和存储能力
2、松耦合性 单元之间只允许服务调用,不允许直接接访问数据库或其他存储,服务调用尽可能少
3、故障独立性 一个单元的故障不会影响其他单元,故障影响不会跨单元扩散
4、容灾性 单元之间相互备份,每个单元都保证在发生同城或者异地故障时候有可接管服务的单元
两地三中心
AZ1与AZ2可用区之间有负载均衡器
RDS之间有主备同步
数据之间有SDRS存储容灾服务 保证RPO为0
地域1与地域2之间通过智能DNS
云服务器备份---通过OBS跨region复制
RDS也通过跨region复制
region1和region2之间通过高速专线
用户访问流量:通过智能DNS服务可查询到生产中心和容灾中心的公网IP,正常时用户流量100%引流至生产中心,灾难时期用户流量100%切换至容灾中心;
Web/APP Server数据同步:web服务、应用服务服务器通过SDRS存储同步复制服务实现同步,RPO=0,RTO<15分钟。平时灾备中心计算资源不启动。
数据库同步:云上使用RDS数据库服务,进行跨AZ主备部署,跨AZ间数据同步。
容灾恢复切换:当生产中心发生故障时。RDS数据库自动切换至备库,应用层通过SDRS的一键容灾切换功能切换至容灾节点。并通过智能DNS服务将用户流量全部切换至容灾节点
容灾演练:通过SDRS提供的容灾演练功能进行一键演练。
3-29
云防火墙 应避免将重要网络区域部署在边界处,重要网络区域与其他网络区域之间应采取可靠的技术隔离手段
SSL证书 应采用校验技术或密码技术保证数据完整性和保密性
高防IP 应在关键网络节点处检测、防止或限制从外部发起的网络攻击行为
Web应用防火墙 应具有提供访问控制、边界防护、入侵防范等安全机制
堡垒机 应对用户进行身份鉴别、访问控制、运维审计
主机加密 应满足数据完整性和数据保密性的要求
主机安全 应能够检测到对重要节点进行入侵的行为,检测恶意代码感染及在虚拟机间蔓延的情况,并进行告警
漏洞扫描 应能发现已知漏洞,并在经过充分测试评估后,及时修补漏洞
数据库审计 应在网络边界、重要网络节点进行安全审计,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计
综合日志审计 应对分散在各个设备上的审计数据进行收集汇总和集中分析,并保证审计记录的留存时间符合法律法规要求
禁用IPV6 sysctl net.ipv6.conf.all.disable_ipv6=1
sysctl -p 加载内核文件使之生效
4-1
1、一台服务器可以绑定两个EIP 可以设置路由策略 如访问某网段路由通过扩展网卡访问
4-2
1、两个端口对应两个web界面,相当于两个域名,分别接入WAF即可 80不带端口,8001带端口生成的CNAME一致
4-6
1、业务逻辑 客户端---Nginx(负载均衡)--API网关--注册/认证/前端/管理后端集群--配置中心集群---数据库集群/缓存集群/kafka/MongoDB集群
管理后台包含搜索组件,微信支付,支付宝支付,链路分析,日志系统,监控告警,自动化组件,API接口测试
2、EOM End of Marketing 停止产品销售生产
EOS End of full support 停止产品支持服务
3、使用备份软件实现本地数据备份至OBS桶
爱数 通过配置华为云OBS的endpoint,以及桶名,访问秘钥等信息将本地数据备份上云
四、将域名迁移至华为云DNS进行解析
在华为云账号上创建公网域名,生成NS和SOA记录
解析记录从原DNS服务商导入(包含A记录,CNAME记录),
验证使用dig 域名 @权威DNS服务地址
修改原DNS服务商处的NS记录为华为云的NS,生效根据NS的TTL生存时间,最长为2天
五、托管静态网站
1、注册自定义域名www.example.com 准备index.html和error.html
2、注册域名
3、创建桶 属性公共读 标准存储
4、上传index.html以及error.html至桶的根目录
5、配置静态网站托管 托管index.html以及error.html文件至当前桶
6、绑定自定义域名,可选CDN
7、创建和配置域名托管 在公网DNS处加一条CNAME解析记录 指向example.obs.cn-north-1.myhuaweicloud.com(访问域名)
8、验证www.example.com以及www.example.com/test
6、Mysql配置远程登录 root用户
授予grant所有库.表的权限 To 'root'@'%' 设置密码
刷新权限 flush
注释my.cnf的配制文件里关于bind-address=127.0.0.0 取消仅本地登陆
重启Mysql
7、SQL SERVER备份
SSMS客户端具备备份全量的功能
4-7
1、docker存放在/var/lib/docker
2、docker拉取指定版本的镜像加版本号
4-13
正向代理:正向代理中的代理是代替客户端去访问服务器。如翻墙业务,就是通过代理节点去访问国外互联网
反向代理:反向代理中的代理是代替服务器去应对客户端的访问。 它根据客户端的请求,从后端的服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端
4-14
在控制台检查云服务器安全组是否放通了登录端口 3389入方向
检查云服务器防火墙配置是否正常 防火墙开启 要加3389 RDP协议的入站规则
检查云服务器远程桌面连接设置 允许所有版本的windows远程该电脑
检查云服务器是否开启Remote Desktop Services RDP在services里处于开启状态
检查云服务器远程桌面会话主机 会话主机在服务器管理器里安装
注册表里的port number没有被修改
SAP的全称为“Systems, Applications And Products In Data Processing” 即数据处理的系统、应用和产品。
SAP企业资源规划(ERP)
HANA(High-Performance Analytic Appliance)的含义为高性能分析设备,SAP HANA是一款支持企业预置型部署和云部署模式的内存计算平台,也可以说是一个软硬件结合体,它能够帮助企业加速业务流程,实现更智能的业务运营,并简化IT环境。
4-15
学习awk 和grep命令
优化Centos7 设置yum仓库 设置NTP同步 系统调优(删除不需要用户)设置/etc目录下文件的缺省值 设置密码长度要求 设置可su为root的用户
设置超时退出TMOUT=3600 设置history记录的时间,执行用户,保留数目开启防止IP欺骗 限制可以给at/cron的用户
设置motd issue警告 禁止root直连,增加可以允许的用户 修改sshd服务端口号
4-24
云服务器模拟RAID5
列出所有的数据盘 fdisk -l | grep /dev/vd | grep -v vda
安装mdadm工具 ---RAID管理工具
mdadm -Cv /dev/md0 -a yes -n 4 -l 5 /dev/vdb /dev/vdc /dev/vdd /dev/vde 做成RAID阵列名称 /dev/md0
-C 创建
-v 详细过程
-a yes 开启
-n number 参与阵列的磁盘数
-l 阵列级别 --level 可以填0 1 5 6 10
做好阵列RAID5之后
做文件系统ext4 xfs
创建空目录 挂载
检查挂载关系
写入到/etc/fstab
检查阵列 mdadm -D /dev/md0 -D --display
扩大阵列
mdadm --grow --size max /dev/md0 --grow 扩大 --size max 将容量扩大到最大
resize2fs -f /dev/md0 使扩容之生效
LVM
安装lvm2
fdisk -l | grep /dev/vd | grep -v vda
创建PV(物理卷)
创建VG(卷组)
创建逻辑卷 lvcreate -L 15GB -n lvdata1 vgdata
做文件系统
创建空文件夹 挂载
写入/etc/fstab
lvdisplay vgdisplay lvdisplay
扩展 生效
lvextend -L +4GB /dev/vgdata/lvdata1 resize2fs /dev/vgdata/lvdata1
删除LVM 删除/etc/fstab里的配置 取消挂载 依次remove lv vg pv
将磁盘恢复为云磁盘
parted 做成GPT分区格式
parted /dev/vdb
p
mklabel gpt
unit s
mkpart test(名字) 2048s 100%
p
q
做文件系统
创建文件夹 挂载
4-25
运维规范
● 服务灾备:多机器、多机房;
● 数据灾备:多备份、异地备份;
● 网络灾备:多线路、多设备;
原则
a、自动切换 好于 手动切换;
b、无状态 好于 有状态;
c、热备 好于 冷备;
d、多机房 好于 单机房。
范围
● 基础监控:CPU、内存、网络、IO;
● 应用监控:进程、端口;
● 业务监控:日志、业务埋点;
● 依赖监控:数据库、依赖接口...
原则
a、核心监控收敛成告警,并对告警进行分级,备注告警影响;
b、核心监控形成可排查问题的DashBoard;
c、告警的价值在于实时发现故障。
十、标准化规范
范围
● 主机名标准化;
● 日志存储标准化;
● 日志格式标准化;
● 域名使用标准化;
● 软件安装目录结构标准化;
● 服务及相关的组件使用命令标注化;
原则
a、主机名尽量能看出更多信息,比如服务、模块、机房等;
b、日志是排查问题的重要信息,一定要标准化,方便手工排查,更是为了以后用工具处理打下基础。
4-26
Mysql的层级架构
连接层 数据库的连接,验证
SQL层 解析查询,优化查询,执行查询
存储层 磁盘(InnoDB,MyISAM),内存memory,网络ndb
主从复制
master将改变记录到二进制日志(binary log)。
slave开启一个 I/O 线程,连接master,进行binlog dump process,从master的二进制日志中读取事件,然后写入本地的中继日志(relay log)内。如果已经同步好master的binlog事件,它将会睡眠并等待master产生新的事件。
slave开启一个 SQL 线程,SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。假设该线程与I/O线程保持一致,中继日志通常会位于OS的缓存中,所以中继日志的开销很小。
Nginx
工作模式
Nginx 采用的是多进程(单线程) & 多路IO复用模型。
多进程的工作模式
Nginx 在启动后,会有一个 master 进程和多个相互独立的 worker 进程。
接收来自外界的信号,向各worker进程发送信号,每个进程都有可能来处理这个连接。
master 进程能监控 worker 进程的运行状态,当 worker 进程退出后(异常情况下),会自动启动新的 worker 进程。
4-27
1、nc工具 安装netcat
nc -v -z ip port
nc -v -z 127.0.0.1 22 -v显示详情 -z仅显示连接状态
nc -v -z 127.0.0.1 80
Ncat: Version 7.70 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:80.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.
2、nmap工具 安装
nmap -sS -p 1-10000 127.0.0.1 # -sS 使用SYN连接,快速扫描 快速扫描1-10000端口 哪些端口开放 并显示协议
Starting Nmap 7.70 ( https://nmap.org ) at 2022-04-27 15:54 CST
Nmap scan report for VM-0-4-centos (127.0.0.1)
Host is up (0.0000060s latency).
Not shown: 9996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
5355/tcp open llmnr
Nmap done: 1 IP address (1 host up) scanned in 2.47 seconds
dig
dig +short huaxiacloud.com
dig @114.114.114.114 huaxiacloud.com 指定权威的DNS服务器去解析huaxiacloud.com域名
tcpdump -n -i eth0 'port 80' -s0 -w result.pcap
tcpdump -i eth1 udp # 协议过滤
tcpdump -i eth0 dst ${HOST} and port ${PORT} # 抓取特定目标ip和端口的包
4-28
1、跟login有关的
/etc/sudoers 普通用户赋权
/etc/shadow gary:$1$2Uu6yiEE$m4Pj3bKxVd9oLA74jj4F0/:18364:0:99999:7::: 第二列为*或者为!!无法进行登录操作
/etc/ssh/sshd_config 默认是开启状态“UsePAM yes”
4-29
windows系统10个命令
ping
ipconfig ipconfig /all ipconfig /flushdns ipconfig /release
arp -a
traceroute 追踪路径
route print 打印路由
nslookup 解析IP地址和域名
netstat
5-5
###########################
minikube命令学习
minikube start 启动minikube集群
kubectl get svc 获取集群svc信息
kubectl get node 获取node信息
kubectl cluster-info 获取集群版本信息,IP信息
kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 创建一个deploy(应用),默认单副本
kubectl get pods 获取pod信息
kubectl proxy 创建一个代理,它将通信转发到集群范围内的私有网络中
curl http://localhost:8001/version 现在打开一个新终端,您应该可以访问应用程序端点
kubectl scale deployment/kubernetes-bootcamp --replicas=3 伸缩应用副本到3个
kubectl get pods
kubectl scale deployments/kubernetes-bootcamp --replicas=2 缩减副本到2个
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2 滚动更新,将应用版本滚动更新至V2
kubectl rollout undo deployments/kubernetes-bootcamp 回退应用版本到V1
k8s使用流程
1、创建应用的yaml模板,--dry-run 设定镜像nginx 生成yaml文件 web.yaml
2、编辑yaml文件,设计标签,以及标签选择器
3、创建项目deploy,查看日志 logs
4、创建service,expose,服务名,负载名称,pod内端口,target-port 以及映射端口类型noePort
5、get 一下service 检查服务状态 提供了访问方式,域名:nodeport即可以访问,或者nodeportIp:port可以访问
6、升级服务 其实就是set image一个新的镜像
7、回滚版本,回滚到上一个版本(滚动更新策略 roll-update),也可以指定回滚的版本号
8、指定伸缩副本数字,可以伸缩扩大,也可以减少
9、删除svc,以及负载
mysql优化
表设计不合理---1、不符合三大范式要求 2、存在大表join查询
分表---1、竖直切割 2、水平切割
配置优化---1、/etc/my.cnf配置 最大连接数 开启查询缓存
偶发性访问高峰---1、缓存失效 2、业务活动
sql分析--1、慢查询慢语句 2、语句优化(索引,减少模糊查询,减少全表扫描)
存储过程---1、减少网络IO
读写分离--1、select和insert update delete分离
升级配置
docker
docker run -d --name mysql8 -p 13306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql 创建mysql8容器
docker exec -it $(docker ps -a -q | head -n 1) /bin/bash
docker ps | awk 'NR==3{print $1}'
免交互设置密码 echo "Cgsl@12345" | passwd --stdin allan
创建redis容器
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis --appendonly yes
redis-cli -h 127.0.0.1 -p 6379 # redis连接命令
5-6
redis
String(字符串)
Hash(哈希)HMSET runoob field1 "Hello" field2 "World" HGET runoob field1
List(列表)lpush runoob redis
Set(集合)
zset(sorted set:有序集合)
5-7
随机生成密码
命令 openssl rand -base64 15
mkpasswd -l 12 -C 2 -c 4 -d 4 -s 2 #随机生成密码 -l位数 -C大小 -c小写 -d数字 -s特殊字符
5-10
df -h | awk '$6~/\/$/ {print $NF, $(NF-1)}' #打印根分区使用率
free -m | awk '$1 ~/Mem:/{print $NF}' #打印可用内存
free -m | awk 'NR==2{printf "%.2f%%\t\t", $3*100/$2 }' #打印可用内存情况
ip addr | grep inet | grep -v "inet6" | grep -v "127.0.0.1" | grep -v "172.17.0.1" | awk '{ print $2; }' | tr '\n' '\t' | awk -F "[/]" '{print $1}' #打印IP地址
ifconfig eth0 | sed -n '2p' | awk '{print $2}'
ifconfig eth0 | awk 'NR==2{print $2}' 打印eth0的IP
cat /proc/cpuinfo | grep name | cut -d: -f2 | uniq #查看CPU name
hostname 或者 uname -n #查看主机名
cat /proc/cpuinfo | grep 'processor' | sort | uniq | wc -l #查看有几颗CPU
cat /etc/passwd | cut -f 1 -d : |xargs -I {} crontab -l -u {} #查看所有用户的定时任务
cat /proc/net/dev | grep en
nohup sar -u -o test 30 & #间隔30s采集cpu指标
使用bg 查看后台在运行的任务
使用jobs -l 查看任务详情
使用ps -ef | grep sar 查询任务详情
杀死进程 ps -ef | grep sar | grep -v grep | awk '{print $2}' | xargs kill -9
sar -u -o test 30 10 #间隔30s采集cpu指标 总共采集10次
5-11
RDS只读实例也有IP
RDS主备实例在对应VPC里自动有浮动IP以及占用的私网IP
5-12
SWR服务
界面生成临时登录指令 docker login -u cn-north-1@4VI815F7PKFGQYP6PDLK -p 82454d04b5c439f4545dc0106ace545e86115d3e3233daa6c1053041fbbad7db swr.cn-north-1.myhuaweicloud.com
镜像打tag 镜像名称:v1(版本)
然后push 到华为云仓库 镜像仓库地址/{组织}/{镜像名称}:{镜像版本}
组织 有授权的IAM账号 以及管理的镜像,镜像是支持多版本的
Harbor是VMware公司开源的企业级Docker Registry管理项目
Harbor提供与目标仓库同步的配制
CCE服务
1、secret 键值对 存放敏感信息 使用base64加密
创建secret后 在volume pod等资源中引用secret
2、configmap 键值对 可以引入一些配置文件 如redis_config bind_ip 127.0.0.1
创建configmap后,在volume pod等资源中引用
3、权限 可以选择集群(必选)--命名空间(可以指定单个命名空间或者全部)--用户组(IAM用户组)---权限(集群角色)
4、负载HPA策略--metrics-server(必须安装此插件)--可以基于CPU/内存使用率进行伸缩
策略名称--集群--命名空间--负载--实例范围(数量)--冷却时间--策略规则(如CPU大于90%)
节点伸缩依赖于autoscaler插件,只能伸缩DefalutPool池以外的节点池(需要新建节点池)
5、 守护进程集合 DaemonSet需要安装everest-csi-driver(对接存储) 以及icagent(对接监控以及AOM)
6、节点管理--节点名称--调度状态--所属节点池--规格--可分配资源(总CPU-已分配的CPU-系统预留的CPU)--IP地址(私网和公网)--节点来源(创建or 纳管)
单容器默认可用数据空间为10G 系统盘默认40G 数据盘默认100G
7、
5-17
1、mysql
create user 'allan'@'%' identified with mysql_native_password by 'Cgsl@456'; #创建一个远程登录的账户 'allan'@'%'
grant all privileges on *.* to 'allan'@'%' with grant option; #授予权限 所有库所有表的权限
ALTER user 'root'@'%' IDENTIFIED BY 'Cgsl@428'; #修改已有账户的登陆密码
FLUSH PRIVILEGES; #刷新下权限
select user from mysql.user; #列出所有账户
show grants for 'allan'@'%'; #查看单个账户的权限
select user,host,password_last_changed from user \G; #查看账户的Host,use,以及上次修改密码时间
5-18
查看磁盘IO性能
iostat -d -x -k 1 10
1 10表示,数据显示每隔1秒刷新一次,共显示10次
-c 只显示CPU行
-d 显示设备(磁盘)使用状态
-k 以千字节为单位显示磁盘输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标
r/s: 每秒完成的读 I/O 设备次数。
w/s: 每秒完成的写 I/O 设备次数。
sar -n DEV 1 5
使用-n选项可以对网络使用情况进行显示,-n后接关键词”DEV”可显示eth0、eth1等网卡的信息:
1 10 间隔1s 打印10次
5-19
6-2
1、K8S探针
三种探针: http-get tcp-socket exec
http-get 根据http返回码 2XX 3XX则容器是健康的
tcp-socket: 探测端口建立tcp socket连接
exec: 检查命令执行的返回值,如果正常返回 则容器是健康的
6-13
1、service
Kubernetes中的Service对象就是用来解决上述Pod访问问题的。Service有一个固定IP地址(在创建CCE集群时有一个服务网段的设置,这个网段专门用于给Service分配IP地址),Service将访问它的流量转发给Pod,具体转发给哪些Pod通过Label来选择,而且Service可以给这些Pod做负载均衡。
创建pod(pod内打标签)
创建service (标签选择器和pod关联)
这样创建好的service和pod就关联起来了
另外集群的时候,会默认要求安装CoreDNS插件,在kube-system命名空间下可以查看到CoreDNS的Pod。
kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-5c98db65d4-h6ls6 1/1 Running 0 11d
coredns-5c98db65d4-nt9kh 1/1 Running 0 11d
CoreDNS安装成功后会成为DNS服务器,当创建Service后,CoreDNS会将Service的名称与IP记录起来,这样Pod就可以通过向CoreDNS查询Service的名称获得Service的IP地址。
nginx.
前面说到有了Service后,无论Pod如何变化,Service都能够发现到Pod。
kubectl describe svc nginx
Name: nginx
Namespace: default
Labels:
Annotations:
Selector: app=nginx
Type: ClusterIP
IP: 10.98.190.85
Port: service0 8080/TCP
TargetPort: 80/TCP
Endpoints: 10.244.1.22:80,10.244.1.23:80,10.244.2.22:80
Session Affinity: None
Events:
kubectl get endpoints
NAME ENDPOINTS AGE
kubernetes 192.168.1.61:6443 11d
nginx 10.244.1.22:80,10.244.1.23:80,10.244.2.22:80 65m
列出的endpoints就是pod的IP
删除一个Pod 新建一个pod 这些信息会被service更新到endpoints里
除了记录Service和IP/端口对的关系,kube-proxy还会监控Service和Endpoint的变化,从而保证Pod重建后仍然能通过Service访问到Pod。
6-16
1、删除不必要的用户,以及用户组(games,halt)(lp adm)
2、关闭不需要启动的系统服务 如 auditd sendmail
3、采用秘钥登陆,或者设置强密码策略,以及密码有效期限制
4、合理使用su和sudo命令 限制超级管理员的密码知晓范围 使用sudo执行一些系统重启,服务重启命令
5、删除系统欢迎语信息 /etc/issue
6、合理使用shell历史命令记录功能
7、对重要文件加锁 如a i 只可追加 不可编辑
处理攻击的思路
1、查找攻击源,通过top netstat ps等命令 查看有无异常进程
2、分析可能引起入侵的途径以及原因 如系统漏洞 软件漏洞等
3、备份用户数据
4、重装系统
6-17
安装ansible
yum install epel-release -y #安装epel源
yum install ansible # 安装ansible
vim /etc/ansible/hosts #建立主机组
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.62 #复制公钥到被管理主机
ansible k8s -m ping #了解模块 ping模块
ansible k8s -m shell -a 'ls -l /newfile' #shell模块
ansible k8s -m command -a "ss -nltp" #command模块
ansible k8s -m shell -a 'cat /etc/passwd |grep "^root"'
ansible k8s -m copy -a 'src=/root/nginx-deployment.yaml dest=/newfile/' #copy模块
ansible k8s -m copy -a 'content="I am yake\n" dest=/newfile/name1 mode=666'
ansible k8s -m file -a 'path=/newfile/nginx-deployment.yaml state=absent' # file模块 删除文件
ansible k8s -m copy -a 'content="I am allan\n" backup=yes dest=/newfile/name1 mode=666' #覆盖并且对源文件进行备份
7、 ansible k8s -m cron -a 'name="df everyday" hour=10 job="df -lh >> /tmp/disk_total &> /dev/null" state=present'
#cron模块 --定时任务
8、ansible k8s -m yum -a 'name=htop state=present'
#yum模块 --安装软件
9、ansible k8s -m service -a 'name=crond state=restarted enabled=true'
#service模块 --服务管理
10、
user模块 --管理用户
11、group模块 --管理组
12、script模块 --被管理机上存放脚本 在管理上开始下发指令执行
7-4