一、关于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 # 拒绝所有流量,远程连接会立即断开,只有本地能登陆
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-xvcproxy
【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 [email protected] #复制公钥到被管理主机
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模块 --被管理机上存放脚本 在管理上开始下发指令执行
8-9
Openstack学习
1、命令
nova list #列出所有虚拟机
nova flavor-list #列出所有的虚拟机规格
nova image-list #查看Nova镜像列表
neutron net-list #查看neutron网络
neutron agent-list #查看网络agent列表 如 DHCP agent linux bridge agent
OpenStack endpoint list #查看openstack所有服务的入口或终端节点
glance image list #查看Glance镜像仓库
openstack host list #查看openstack主节点以及计算节点以及服务
openstack user list #列出openstack用户
关于Nova
API 响应外部请求
Cert 身份认证
scheduler 用于云主机调度
Conductor 计算节点访问数据的中间件
Consoleauth 用于控制台的授权代理
NoVncproxy: VNC代理
关于调度 过滤满足复合的主机 计算权重 然后根据两步筛选出来可用的主机
nova计算节点: epel源 以及openstack liberty以及yum源
openstack nova计算节点服务
openstack neutron网络节点服务
openstack Cinder块存储模块
KVM Qemu管理工具
关于Glance镜像服务 镜像格式 AMI ISO QCOW2 VDI VHD VMDK
控制节点需要配置的服务:Mysql(MariaDB),rabbitMQ,APache Horizon keystone Glance Nova(cert API Scheduler Consoleauth Conductor Novncproxy) Neutron Cinder
计算节点 Nova(nova-computer,libvirt KVM) neutron(linuxBridge-Agent)
节点安装
需要关闭防火墙 selinux ntp同步时间
创建数据库 需要准备keystone glance nova neutron cinder Mysql库
关于KVM和XEN
nova computer通过libvirt管理KVM
通过XEN API去管理XEN
消息队列
生产者 发布应用消息的应用程序
队列 消息存储的缓存
消费者 接受消息的应用程序
RabbitMQ三大作用
异步处理 减少响应时间
应用解耦 系统之间互不影响
流量消费 加入MQ消息队列针对秒杀团购场景 环节高流量压垮应用
关于云桌面
双机脚本
双机状态 cluster-stat
双机日志 /etc/ha-log
场景:日常办公,影音播放,兴云课堂教学,大型图形设计,营业厅 不同的瘦终端
终端网管:管理瘦终端的
管理服务器和计算服务器
操作系统和数据库的版本要求
规划:
IP
主机名
管理服务器 磁盘 划分LUN 存放数据库数据文件 以及虚拟机镜像ISO文件
数据服务器 划分LUN和VG
多路径软件
网卡绑定做管理网
网卡绑定做业务网
要求:强密码 包含数据库
时区:北京时区 夏令时+1 当地的时区
没有AD域控:与VMC管理机同步时钟
有AD域控: 与AD域控服务器同步时钟
网络检查:ping检查是否丢包
IPMI接口检查 检查上下电
设置ZXVE主机超分比为400%
USB重定向
实现组播
上线前检查:主机检查 虚拟机检查 管理门户测试 用户门户测试(桌面用户登陆) 告警检查 性能监控 可靠性检查(双击倒换) 存储检查(重启能自动挂载磁阵)
升级后检查
日常巡检:设备面板告警,Mysql进程,tomcat进程,Uniportal界面访问,挂载的文件系统检查,双机状态检查
系统资源占用,虚拟机内部是否可写,日志大小,进程,告警,
网络检查:告警,Ping虚拟机,网段互通行,端口负荷
机房
温度 湿度 直流电源 交流电源
关于路由交换
接口配置带内IP 打开端口
带外管理IP
配置GRE隧道
光口 电口
静态IP
批创VLAN 命名
三个口access trunk hybrid