linux2

rsync 备份 scp : 只能全量备份 sync 同步: async 异步: 将数据先放到缓存,再同步,周期一般30s

rsync 可以保存目录和文件系统 可以保存权限,文件属性 支持验证

rsync语法 man rsync -帮助 -v 详细模式 -a 归档,递归模式 -r 递归拷贝目录 -l 保留软链接 -p 保留原有权限 -t 保留原有时间 -g 保留属组权限 -o 保留属主权限 -D 支持b,cs,p类型文件 -R 保留相对路径 -H 保留硬链接 -A 保留acl策略 -e 指定要执行的远程shell命令 -E 保留可执行权限 -X 保留扩展属性信息

rsync命令使用 rsync -av /dir1 /dir2/ -目录拷贝 rsync -avR /dir1 /dir2/ -目录拷贝dir1, rsync -avR 10.0.0.2:/backup/app/ /dir1 -这时本地拷贝目录如下:dir1/backup

rsync -av /dir1/ /dir2/ -文件拷贝,不覆盖 rsync -av --delete /dir1/ /dir2/ -会覆盖同名文件

rsync -av /dir1 10.0.0.2:/backup

---rsync 免密登录

需求:jumper-server有root用户,拷贝本地的/dir1目录里的所有内容到app-server上的pos家目录

rsync -av /dir/ pos@10.0.0.1:/home/pos

步骤: 1.在jumper-server上的root用户生成一对秘钥 2.拷贝到app-server上的pos用户的家目录(~/.ssh/xxx) 3.测试验证

ssh-keygen ssh-copy-id -i pos@10.0.0.1

--rsync 作为后台程序使用

启动 端口873 配置文件 /etc/rsyncd.conf

rsync --daemon 如果没有rsyncd.conf会报错

---定义模块实现免密拷贝 vi /etc/rsyncd.conf [app1] path = /app/java_projecct log file = /var/log/rsync.log :wq

定义好模式以后 rsync -av 10.0.0.1:: -查看现有模块 rsync -av 10.0.0.1::app1 /backup/ -就能实现免密

rsync -av rsync://10,0,0,1/app1 /backup/

rsync -av 10.0.0.1:/app1/app/java_project /backup/ -按照这种实现同样拷贝,但要求输密码

写一个脚本文件1.txt ,

#!/bin/bash rsync -av rsync://10.0.0.1/app1 /backup/ :wq

chmod +x 1.txt

写入定时任务cronie which crontab

crontab -e 03 01 * /root/1.sh &>/dev/nulcrol -&>/dev/null 表示结果不管对错都不显示

crontab -l -查看

which rsyc -在哪个目录 rpm -qa |grep rsync 可见有xinetd.d 依赖服务

独立服务 有自已的启动脚本 /etc/init.d/xxx service xxx start 如sshd dhcp ftp dns httpd.. xinetd

依赖服务 没有独立的启动脚本 依赖于xinetd服务

rysnc telnet

-------------iptable 安全体系 底层硬件 买质量合格的设备 基础环境 版本合适,基本系统优化 应用环境 软件版本,配置参数 业务环境 项目和软件这间的配置,部门间的规范执行 运营维护 功能迭代,网站维护

安全措施 角色定位 安全措施 系统安装,软件安装,系统优化,网络配置 应用环境 软件安装,防火墙,安全插件,软件集成 业务环境 代码研发,代码管理,配置管理,测试管理, 运营维护 监控方案,数据分析方案开发模型,风险评估

--防火墙基础 数据传输 封装+port+ip+mac 内部处理 -数据包封装-转发-数据包解封 外部传输 -数据包封装-发出去-接收-解封

--防火墙功能 分层管控
数据链路层 mac 网络层 ip报文首部source ip,destination ip,trotoccal 传输层 tcp,udp报文首部 source port,destination port 应用层 数据内容

数据包过滤 a:数据包过来 prerouting b:本机片理 INPUT c:本机转发 forward d:本机响应 output e:数据包出去 postrouting

三种数据场景 机接受 本机转发 本机响应

-- 本机处理数据包 a+b 本机转发 a+c+e 本机响应 d+e

a:prouting b:input c:forward(转发) d:output e:postrouting

---iptables和firewall区别 iptables 是命令集全,对不同场景进行管理,2-4层 netfilter 内核空间,与iptables组成防火墙

centos7或以后用firewalls

tables安使和用用 -L 列出所有 -n 以数字列出 -v 显示列多 --line-numbers 将编号也列出 -S 打印出所有规则

查看 iptables -vnL INPUT--line-numbers

备份 iptables-save iptables-save > iptables.rules

清除 iptables -vnL INPUT--line-numbers -查看 iptables -D INPUT 4 -删除input第四条 -z 计算器 -X 自定链的删除 -F 所有链中的规则 iptables -Z INPUT -删除所有的input规则 iptables -F -清除所有链规则
重启服务可恢复-f清除的规则 iptables-restore < iptables.rules 导入备份

iptables -P INPUT DROP -拒绝input规则--重启服务不行

更改链默认规则: iptables -p INPUT ACCEPT -恢复拒绝

target动作 accept 允许 drop 禁用 reject 拒绝

自定义规则 iptables -A INPUT -p icmp --icmp-sype 8 -j DROP -禁止ping

iptable [-t 表] -子命令 【链名】【匹配条件】【参数】

默认动作 man iptables 扩展动作 man iptables-extensions

规则 实践

增加: iptables -A INPUT -s 10.0.0.5 -j DROP -追加 iptables -I INPUT 2 -S 10.0.0.5 -j DROP -插入 ,第2个位置

删除: iptables -D INPUT 3 iptables -D INPUT -s 10.0.0.5 -j DROP

iptables -L -n -v 查看

修改: iptables -R INPUT 1 -s 192.168.1.5 j accept

五链五表

链基础 prerouting, inp ut, forward, output,postrouting

表: 将不同的链组合在一起,实现不同业务场景下的功能 不同表中可以存在相同的链,这些链针对的对象不同 五表 security mac INPUT OUTPUT FORWARD

filter 数据包过滤 INPUT OUTPUT FORWARD

nat 网络地址转换 INPUT OUTPUT FREOUTING POSTROUTING

mangle 数据包拆修封,自定义 INPUT OUTPUT FORWARD PREROUTING POSTROUTING

raw 特殊的nat表 PREROUTING OUTPUT

iptables -t nat(表名) -vnl -表查看 -不加表名,默认使用filter iptable -t nat -A INPUT -s 192.169.1.5 -j ACCPT

filter input/output/forward

清空,重置 man iptables systemctl restart iptables iptables -F iptables -vnL

--表链关系 链 -存放规则 表 -存放链

链的优先级,表的优先级 security > raw > mangle > nat > filter

--------- lvs 安装 yum install ipvsadxm

ipvs帮助命令 ipvs -h

集群命令 查看,地址,方法,等 -L 或 -Ln ipvsadm -L
ls proc/net/ip_vs -等同于上 ipvsadm -Ln --rate -大量的查询

增加集群 -A 增加 -t 指定主机地址

ipvsadmin -A -t 192.168.1.xxx:80 -端口必须写

编辑集群 ipvsadm -E -t service_address:ort [-s scheduler] ipvsadm -E -t 192.168.1.xxx:80 -s rr

删除集群 ipvsadm -D -t 192.168.1.xxx:80

--RS主机命令 ipvsadm -Ln -查看 ipvsadm -h -帮助 ipvsadm -A -t 192.168.1.10:80 -增加一个集群 ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.10 -增加主机 ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.11 ipvsadm -a -t 192.168.1.10:80 -r 192.168.1.12:999 -m -使用非默认端口,需要用-m指定nat模式, 修改端口仅限于-m(nat)模型 192.168.1.12:999 -i -使用-i tunnel模式

编辑 ipvsadm -e -t 192.168.1.10:80 -r 192.168.1.10 -m -修改模式

删除 ipvsadm -d -t 192.168.1.10:80 -r 192.168.1.10 ipvsadm -Ln

总结
主机的增删改查 -a,-e,-d

修改的时候,一定要保证lvs地址和rs地址都是正确的 修改主机地址是不可能成功的,因为它相当于要创建一个新的RS,-a

--规则命令 保存规则 ipvsadm-save -不解析主机名和端口 ipvsadm-save -n -以数字形式显示和保存-n ipvsadm -Sn

ipvsadm-save > non-ipvsadm -不解析为数字 ipvsadm-save -n > non-ipvsadm -解析为数字 diff non-ipvsadm n-ipvsadm -对比以上两种 注:保存的时候,规则中的ip和主机名解析相关,端口和协议相关

规则清空 ipvsadm -C -清空 ipvsadm -Ln

导入规则 ipvsadm-restore < non-ipvsadm -导入失败 ipvsadm-restore < n-ipvsadm -导入成功

--规则服务 重启服务,手写规则会清空, 所以需要先保存重启是载入 rpm -ql ipvsadm -可见ipvsadm.service路径 cat /usr/lib/systemd/systemd/system/ipvsadm.service 注:第一次重启由于/etc/sysconfig/ipvsadm不存在,服务启动不了,第一次启动之前先使用ipvsadm-save -n 将所有的规则以标准的形式保存到/etc/sysconfig/ipvsadm

第一次启动不能成功,找不到/etc/sysconfig/ipvsadm systemctl status ipvsadm 解决: touch /etc/sysconfig/ipvsadm systemctl start ipvsadm -这时启动了,但规则没有了,需要手动导入 ipvsadm-restore < n-ipvsadm systemctl restart ipvsadm -正常启动 systemctl enable/disable ipvsadm -设置开机启动

总结 lvs组成: 高度器 后端服务池 共享存储

lvs功能: nat dr tunnel fullnat

lvs结构 主机术语: vs|Ds ,RS ip术语: vip|DIP , RIP

软件组成: 内核空间: ipvs 用户空间: ipvsadm

集群命令 增删改 -A,-D,-E; 主机地址,必须加端口号

主机命令 增删改 -a,-d,-e; 主机模式:-g(默认)-m(nat),-i(tunnel)

规则命令 保存 ipvsadm-save -n 载入 ipvsadm-restore -保存的时候一定要加-n,避免导入规则的时候,主机名解析失败

---- nat 实践 单网卡双ip ifconfig eth0:0 192.168.0.1 netmask 255.255.255.0 up ip address add 192.168.0.2/24 dev eth0:1 ip address

取消虚拟网卡ip ipconfig eth0:0 down ip address del 192.168.0.2/24 dev eth0:1

实践: ifconfig -可查看到有网卡eth0:,ip:192.168.8.14/24 ifconfig eth0:0 192.168.88.11 up -创建一个网卡别名eth0:0 , up启用/down禁用,这样8和88两个网段就能通讯了

开启网络信息转换的功能:两种方法 方法一:cat /proc/sys/net/ipv4/ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward

方法二:vim /sysctl.conf net.ipv4.ip_forward= 1 注:0禁用,1开启

小结: 网络设备 二层设备:同一网段,交换机 三层设备:跨网段的主机通信,路由器

基础环境 单主机双网络环境 单主机双网卡:单网卡+别名 数据转发功能: /proc/sys/net/ipv4/ip_forward = 1 nat环境: SNAT+DNAT 的效果 源地址和目标地址都会发生转换

模型简介 用户发起的数据包cip到 - lvs主机的外网地址vip 请求的数据包: dnat的效果 -d是目标 收到的数据包: snat的效果 -s是源 外网 cip 和 vip 内网 dip 和 rip 内网发出去,必须设置网关 数据包的出和入,都需要经过lvs调度器

--- nat 实践 案例需求: 主机角色 ip 角色 网卡设备 安装软件 lvs-client 192.168.8.200 cip eth0-nat 无 lvs-server 192.168.8.14 vip eth0-nat ipvsadm 172.16.10.14 dip eth1
lvs-rs1 172.16.10.15 rip1 eth0 http lvs-rs2 172.16.10.16 rip2 eth0 http

server增加一个网卡: cp ifcfg-eth0 ifcfg-eth1 vim ifcfg-eth1 name 改为 eth1 ip改为172.16.10.14,网关和dns 删除 ,因为该网卡不连接外网

server开启nat功能 cat /proc/sys/net/ipv4/ip_forward -要等于1

配置lvs主机 ipvsadm -Ln -查看集群是空的 ipvsadm -A -t 192.168.8.14:80 ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m ipvsadm -Ln

client主机上测试: curl 192.168.8.14 -返回rs1,http网页 curl 192.168.8.14 -返回rs2,http网页 curl 192.168.8.14 -返回rs1,http网页 curl 192.168.8.14 -返回rs2,http网页

查看rs1主机日志: tail /var/log/httpd/access_log -可见访问的主机192.168.8.200

实验完成 小结: 1.确保网络正确 2.单机双网卡的配置以及 ip 数据转发的功能要开启 3.lvs集群配置; 先创建lvs信群服务,再给服务增加主机 4.测试的时候要用curl方式,不要用ping.因为ping是走snmp协议(三层协议),而lvs转发是基于port(四层协议)的

----- lvs 原理详解 抓取分析数据包 server上安装tcpdump yum install tcpdump -y tcpdump -i eth0 port 80 查看内容: 192.168.8.200 > 192.168.8.14,tcp三次握手的信息,下面是数据包:8.200>8.14,8.14>8.200;下面是tcp四次断开的信息

rs2上安装tcpdump yum install tcpdump -y tcpdump -i eth0 port 80 查看内容,数据包:8.200>10.15;10.15>8.200

数据包过来: dnat vip -> rip 数据包发回: snat rip -> vip

--- 在以上基础加一个路由的解决方案 cip-vip-dip-route-rip route: eth0:172.16.20.2 网关172.16.20.14 eth1:172.16.10.14 打开nat功能 cat /proc/sys/net/ipv4/ip_forward -要等于1

server ip:172.16.10.14 改为 172.16.20.14 网关设置为:route/eth0:172.16.20.2

--- 案例2 cip-vip-dip -rs1(http),rs2(https+http),rs3(https) 沿用第一个案例加一台主机rs3,同时rs2,rs3使用https的形式

rs2 https服务部署
-http服务安装好以后,会自动生成证书的文件,目录在 cd /etc/pki/tla、certa/ ls -显示内容:ca-bundle.crt ca-bundle.trust.crt make-dummy-cert Makefile renew-dummy-cert ; 只要有出现Makefile文件就能使用make命令进行创建证书

创建私有证书 make itcast.crt -生成证书itcast,下面按照提示填信息 enter pass phrase:(输密码): 123456 确认密码:123456 输认证密码:123456 country name...:CN state or province name...(省份):BeiJing locality name...(城市 ):BeiJing organization name(公司名称)...:ITCAST email(邮箱)...:123@163.com

完成信息填写以后会生成两个文件, certs]#ls -显示:itcast.key,itcast.crt certs]#mv itcast.key /etc/pki/tls/private/ -把.key(私钥),放到指定目录

配置https站点 yum install mod_ssl -y vim /etc/httpd/conf.d/ssl.conf SSLCertificateFile /etc/pki/tls/certs/itcast.crt SSLCertificateKeyFile /etc/pki/tls/private/itcast.key

重启服务 systemctl restart httpd 输入密码确认

部署好了之后,访问该http就能用https://

netstat -tnulp -查看443端口

curl -k https://172.16.10.16 -返回主页内容

rs3上安装tcpdump yum install httpd mod_ssl -y echo 'hellow rs3' > /var/www/html/index.html systemctl start httpd netstat -tnulp curl -k https://172.16.10.17

server 机配置 ipvsadm -A -t 192.168.14:80 ipvsadm -A -t 192.168.8.14:443 ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m ipvsadm -a -t 192.168.8.14:443 -r 172.16.10.16:443 -m ipvsadm -a -t 192.168.8.14:443 -r 172.16.10.17:443 -m ipvsadm -Ln

总结: 网络环境: 单机双网卡 单卡双ip 数据转发功能必须开启 ip_forward

nat简介 流程 cip-vip-rip 特点: 数据流入 是 dnat 数据流出 是 snat 后端主机的出网口:网关

------ 调度基础 代理: 正向代理 反向代理

会话: cookie -敏感信息保存在客户端 session -敏感信息保存在服务端

hash -数据保存一块空间中

调度分类: 内置策略 扩展策略

lvs内置策略
13种

静态方法: 轮询 -平均 rr 权重 -优先权重高 wrr,fo hash: sh,dh,mh dh, 根据源地址 sh, 根据目标地址 mh 根据主机优先级

动态方法: 最少连接 LC,WLC,LBLC,LBLCR 其他方法 OVF,SED,NQ

着重记住: rr wrr sh dh lc wlc

------ WRR实践: 权重分配模式 需求 以之前的案例,撤销https的集群,将所有rs加入到http的集群,实现用户请求转发到三台主机的访问比例是1:2:3的效果

分析: 1.重建lvs策略 清空集群策略 建立http类型的集群策略 三台主机以nat模式加入到http的lvs服务,使用-w参数设置权限 2.测试结果

ipvsadm -C -清空ipvsadm ipvsadm -A -t 192.168.8.14:80 -s wrr -默认是wlc,-s 表示指定策略 ipvsadm -Ln

ipvsadm -a 192.168.8.14:80 -r 172.16.10.15 -m -w 1 ipvsadm -a 192.168.8.14:80 -r 172.16.10.16 -m -w 2 ipvsadm -a 192.168.8.14:80 -r 172.16.10.17 -m -w 3 -w表示权重weight ipvsadm -Ln -可见集群为wrr,创建的主机forward为Masq 权重weight为1,2,3 验证:
for i in {1..6};do curl 192.168.8.14;done; -可见访问比例为1,2,3

----- SH 实践 需求: 重建http的集群,实现基于用户的地址转发到同一台rs主机 分析: 重建http集群的策略 所有rs主机以nat模式加入到lvs服务,wg

ipvsadm -C ipvsadm -A -t 192.168.8.14:80 -s sh ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.15 -m ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.16 -m ipvsadm -a -t 192.168.8.14:80 -r 172.16.10.17 -m ipvsadm -Ln -可见集群为sh,主机forward为Masq,权重weight为1,1,1

验证:
for i in {1..6};do curl 192.168.8.14;done; -可见访问同一台主机

---- DR实践 学习目标: 了解 DR模型的前置知识 记忆 DR模型的核心原理 应用 DR模型的场景实践 记忆 DR模型的实践技巧

前置知识: arp缓存表 交换机工作原理 地址冲突

arp缓存表 address resolution protocol 地址解析协议 arp 是将ip地址解析为mac地址 rar 是将mac地址解析为ip

交换机工作原理: 同网段中主机的通信机制 接口和mac关联关系,快速找到对端主机,加快数据传输

地址冲突 内核参数 禁发广播 arp_annonce 2 禁止响应 arp_ignore 1

dr实践 cip-router-switch-lvs-rs1,rs2 网络环境设置 网卡,网关,地址冲突 web主机设置 软件源 http服务 lvs集群设置

cip设置 ip:192.168.8.200 gateway:92.168.8.14(rout网关)

router

server vi eth0 ip172.16.8.15/24 gateway:172.16.10.14 设置别名 ifconfig eth0:0 172.16.10.100/32 up

核心的创建的命令 ipvsadm -C ipvsadm -A -t 172.16.10.100:80 ipvsadm -a -t 172.16.10.100:80 -r 172.16.10.15 -g ipvsadm -a -t 172.16.10.100:80 -r 172.16.10.15 -g

rs1 hostnamectl host-name abc exec /bin/bash 重名拿出生效 ip:172.16.8.16 gateway:172.16.10.14

  • *网卡内核参数的修改 ls /proc/sys/net/ipv4/conf/ cat /proc/sys/net/ipv4/conf/all/arp_ignore -0 cat /proc/sys/net/ipv4/conf/all/arp_amounce -0 cat /proc/sys/net/ipv4/conf/all/io/ar_ignore -0 cat /proc/sys/net/ipv4/conf/all/arp_ia -0 echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore -设置为1 echo 1 > /proc/sys/net/ipv4/conf/io/arp_ignore -设置为1 echo 2 > /proc/sys/net/ipv4/conf/all/arp_amounce -设置为2 echo 2 > /proc/sys/net/ipv4/conf/io/arp_ignore -设置为2

ifconfig io 172.16.10.100/32 up -如果设置在eth上会冲突

------tunnel 隧道 是一种跨多路由的实现直接数据 传输的一种数据 传输方式 特点: 是将原始数据包封装到一个虚拟的ip隧道数据包内部 三种技术: ipip gre sit

---- TUN 隧道实践 rs1 - lvs-router - rs2 rip:172.16.10.15 eth0:172.16.10.14 172.16.20.16 tip:192.168.2.1 eth1:172.16.20.14 192.168.1.1 gw:172.16.10.2 172.16.20.2

要点: 开启隧道,需要加载隧道模块,ipip或ip_gre 增加|关闭路由:ip route add |del 目标主机|目标网络/掩码(via网关) 清空路由表:ip route flush 启用|禁用设备: ip link set device up|down

lvs-router: router双网卡,无网关 cat /proc/sys/net/ipv4/ip_forward =1 rout -n -查看路由信息

rs1 modprobe ipip modprobe ip_gre -加载系统模块 lsmod | grep ip_gre ip tunnel add tun0 mode gre remote 172.16.10.16 local 172.16.10.15 ttl 255 ip link set tun0 up ifconfig

ip addr add 192.168.1.1 peer 192.168.2.1 dev tun0 ip route add 192.168.2.0/24 dev tun0

rs2 同样 ip tunnel add tun0 mode gre remote 172.16.10.15 local 172.16.20.16 ttl 255 ip link set tun0 up ifconfig

ip addr add 192.168.2.1peer 192.168.1.1 dev tun0 ip route add 192.168.1.0/24 dev tun0 route add -net 192.168.1.0/24 dev tun0 route -n

----- 案例 tunnel模型 实践 需求 : lvs集群效果的tun模型实现负载均衡 分析: 单网络场景 lvs-rs中间是隧道网络 隧道网络中的数据包格式不是标准的,需要关闭隧道数据传输时个的数据检测 rp_filter

rs主机 的 tunnl配置 modprobe ipip -加载隧道模块 modinfo ipip -lsmod |grep ipip 内核参数的修改,防止ip冲突
echo '0' > /proc/sys/net/ipv4/ip_forward echo '1' > /proc/sys/net/ipv4/conf/tunl0/arp_ignore echo '2' > /proc/sys/net/ipv4/conf/tunl0/arp_announce echo '1' > /proc/sys/net/ipv4/conf/all/arp_ignore echo '2' > /proc/sys/net/ipv4/conf/all/arp_announce echo '1' > /proc/sys/net/ipv4/conf/tunl0/rp_filter echo '1' > /proc/sys/net/ipv4/conf/all/rp_filter ifconfig tunl0 182.168.8.100/32 up

lvs-server服务主机的配置: ipvsadm -A -t 192.168.8.100:80 ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.15 -i ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.16 -i ppvsadm -Ln -可见主机模式为tunl

-------- 集群 集群分类: 高扩展 共同支撑,容易单点故障 高可用 克隆或复制的形式双机部署,核心业务 高性能 高可用和高扩展的基础优化

高可用指标: 评判方法: 网络可用性,恢复能力

场景分类:
小场景,时间可用性A=MTBF/(MTBF+MTTR) 需要大量统计 中场景 A=服务正常时间、总时间 无需大量统计 大场景 合计可用性 A=成功处理数量/请求总量

可用性分类:n个9

恢复能力分类 数据场景 rpo 数据恢复能力 -最大的丢失数据阶段 服务场景 rto 业务恢复能力 -应用服务从故障到开始恢复的时间隔

高可用性: 主备模式 active/passive模式,主节点故障切换到备用 双主模式 两个相反的主备叠加 集群模式 主节点故障,会通过策略从多个备用主机中选一个临时主

常见术语 vip 附加在主节点上 master 主节点 slave 备节点

关键技术 时间同步 心跳检测 检测彼此状态的机制 vrrp

---- keepalived 是c语言写的一个开源项目,本质是一个路由软件 负载均衡 来源于内核中的ipvs增强和封装 高可用 可以独立使用

keepalived 软件结构图 内核空间 用户空间 -keepalive主要工作部分

工作流程 负载均衡的工作流程 : 借助于内核中的ipvs来实现负载均衡效果 高可用的工作流程 : 将物理路由器整合在一个路由器池中以统一的接口对外管理

--keepalive中的lvs

lvs 项目简介 linxu虚拟服务 整合大量空闲主机,实现资源的高效使用 高扩展集群场景,负载均衡--ip 架构简介 前段负载均衡层 ls ipvsadm 中间web服务器池 各种服务器 共享存储层 存储数据,推荐用分布式

核心功能 负载均衡 内核中的ipvs 转发模型 高效dr,最广nat,数据中心tun,更大网络fullnat 高度策略 13种,rr,wrr,lc wlc,sh,dh

VRRP 场景需求 主机配备的网关失效了怎么办 1.增加多个物理路由器 2.主机配置默认路由 问题: 表态路由故障,可能出现的问题 1.线路选择问题 2.网络中断

解决方法: 使用VRRP 将批量的物理路由器整合在一起,以一个统一的虚拟路vip由对外提供服务,物理路由器基于内部的机制,决定优先级,选定master路由器,虚拟路由器接受的数据包基于master路由发送,master故障则选举,临时路由器

------ 软件 部署 实践 学习目标 应用 keepalived环境部署 应用 keepalived基本配置 应用 keepalived负载均衡配置

实验环境: centos7.5 主机 主机名 安装软件 虚拟网络模型 192.168.8.14 kpmaster keepalived nginx nat 192.168.8.15 kpslave keepalived nginx nat

master hostnamectl host-name kpmaster exeac /bin/bash 安装keepalived和nginx,设置nginx首页: ip 8.14; gw:8.2; dns1:8.2 yum cleal all yum makecache fast yum install keepalived -y keepalived --h -查看帮助 keepalived -v
yum install nginx -y echo 'keepalived master' > /usr/share/nginx/html/index.html -设置首页的内容 systemctl start nginx netstat -tnulp curl localhost

keepalived 配置 rpm -ql keepalived -查看相关文件,主要的有: /etc/keepalived /etc/keepalived/keepalived.conf /etc/sysconfig/keepalived /usr/bin/genhash /usr/lib/systemd/system/keepalived.service /usr/libexec/keepalived /usr/sbin/keepalived

-virtual_server 相当于lvs 主要配置了解 state 主机角色定位,master,backup interface 指定在哪个网卡上绑定vip virtual_router_id 指定VIP唯一标识,此配置必须一致 priority 被vrrp协议来判断哪个为router_id为主路由,值越大,越优先 authentication 多个路由之间通信的认证 virtual_ipaddress 指定vip的地址,可以是多个 配置文件主要由三部分组成: 全局配置段 router_id -必须 VRRP配置段 state, interace,virtual_router_id,priority,virtual_ipaddress -必须 虚拟主机配置段

vim /etc/keepalived/keepalived.conf smtp_server 127.0.0.1 router_id kpmaster virtual_ipaddress {192.168.8.100} :wq

ip addr 服务启动之前只有一个ip,master启动后eth0有两个ip,一个是vip,而slave主机没有vip systemcl start keepalived curl 192.168.8.14 -显示可访问到nginx的主页

slave hostnamectl host-name kpslave exeac /bin/bash 安装keepalived和nginx,设置nginx首页 ip:8.15; gw:8.2; dns1 8.2 yum cleal all yum makecache fast yum install keepalived -y yum install nginx -y echo 'keepalived slave' > /usr/share/nginx/html/index.html -设置首页的内容 systemctl start nginx netstat -tnulp curl localhost

vim /etc/keepalived/keepalived.conf smtp_server 127.0.0.1 router_id kpslave state BACKUP virtual_ipaddress {192.168.8.100}

实验总结: router_id 必须唯一,一般采用主机名 state 必须配置,必须是MASTER和BACKUP VIRTUAL_ROUTER_ID 主从必须一致 priority 用于选主 virtual_ipaddress 设定web访问的vip 查看效果 systemctl status keepalive tail /var/log/messages ip addr

注意: vrrp_strict 配置文件中的这条指今默认会产生iptable拒绝访问规则,可将其删除

---故障演练 设置新窗口 监控日志 tail -f /var/log/messages -master tail -f /var/log/messages -slave

systemctl stop keepalived -master主机服务关闭 -master日志,显示关闭服务,slave显切换为主,并且使用vip curl 192.168.8.100 -显示可访问slave的nginx主页

systemctl start keepalived -master主机服务开启 -查看slave日志,显示收到优先级为100的指令,而自身80,所以切换到backup state,并且移除vip

systemctl stop nginx -关闭master上的nginx服务 curl 192.168.8.100 -访问不到

小结: 负载均衡层 即前端,vip,转发到后端 应用响应层 即后端,处理转发过来的请求,与vip没关系

实验 使用keepalive实现lvs的负载均衡效果-DR kpmaster,kpalave-rs1,rs2 分析: 基础网络: 全部单网卡-nat模型 ip地址配置 lvs的DR环境 nginx服务配置 地址冲突配置 lvs主机DR模式 测试 keepalived的负载均衡效果

sr1,sr2修改地地址为16,17,都安装ngix,都设置冲突配置 kpmaster 安装lvs

配置详解 地址冲突配置 echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce ifconfig lo 192.168.8.100/32 up

lvs临时测试 测完停用 ipvsadm -A -t 192.168.8.100:80 ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.16 ipvsadm -a -t 192.168.8.100:80 -r 192.168.8.17

kpmaster,kpslave 的主从设置 参照 上一例

kpmaster配置 【vrrp】 virtual_ipaddress { 192.168.8.100 dev eth0 label eth0:0 } -vip附加在eth0网卡上,以eth0:0存在 最后位置添加 virtual_server 192.168.8.100 80{ delay_loop 2 lb_algo rr lb_kind DR protocol TCP real_server 192.168.16 80{ } real_server 192.168.17 80{ } } -增加一个集群,两个主机

kpslave配置 配置完全与kpmaster一样

测试: 开启监控日志 启动kpmaster,kpslave 添加一个客户端访问测试 curl 192.168.8.100 轮询正常 kpmaster 服务关掉,服务启动测

总结 keepalive 集成lvs功能

--------- keepalive 配置详解 man /etc/keepalive/keepalive.conf 全局 配置段 VRRP配置段

集群 分类: 高扩展

高可用 指标:网站可靠性,恢复能力

高性能 方式:主备模式,双主模式,集群模式

----------- ansible-2.7.8 -----入门
配置自动化产品: ansible -无主无从,ssh连接 saltstack
puppet

工作原理: 使用格式: ansible ip -m 模块 -a "参数"

安装 yum -y install epel-release -安装yum源 yum installansible -y

查看 rpm -qa | grep ansible ansible

安装epel-release

--实现多主机这间免密登陆 ssh-keygen -t rsa -f /root/.ssh/id_rsa -N '' ssh-copy-id 192.168.216.20 -同步到指定主机

定义主机清单 /etc/ansible/

vim /etc/ansible/hosts 192.168.216.20 -直接在主机清单文件中写入ip地址

方法二 [webgroup] 192.168.216.20

[webgroup] web1

ping模块使用 ping ansible ip -m 模块 ansible 192.168.216.20 -m ping

--使用ansible cron 实现配置多主机 时间同步 cron

ntpdate time1.aliyun.com -用本机的时间同步

ansible 192.168.216.20 -m cron -a 'name="test cron1" job="ntpdate time1.aliyun.com" minute=0 hour=*/1' -表示每隔1小时,同步一次

crontab -l -查看有没有设置成功

-- 使用ansible copy 模块实现多主机配置文件同步 copy 1.准备本地域名解析文件

2.copy模块应用

ansible 192.168.216.20 -m copy -a "src=/etc/hosts dest=/etc/hosts"

cat /etc/hosts -查看结果

----ansible入门结束

项目基础 调研阶段-设计阶段-开发阶段-测试阶段-运营阶段

调研:方案调研,方案分析,最优方案 设计:需求文档,项目里程 开发:项目开发,bug修复,功能更新 测试:测试用例,功能测试,性能测试 运维:项目部署,项目更新,监控馈

平台环境
虚拟软件-物理主机-虚拟主机-云主机-x

虚拟环境-laaS环境-Paas环境-SaaS环境-x

虚拟环境:所有的从底层硬件资源-应用,全部把控 IaaS: 把底层交到别人管理 PaaS: 只关心项目的部署 SaaS: 只管用别人提供好的业务,如游戏号 XaaS: 其它

项目环境 定位

项目管理 管理方式: 手工阶段: 上下架-操作系统-内核基本调优-网络环境-dns-应用环境-lnmp 自动化阶段:流程精简-脚本实现-执行脚本-脚本工具 封装阶段:完整环境封装-部分环境封装-拆分部分封装 智能阶段: 新技术

管理工具 ansible saltstack puppet chef fabric chef

工具模式 推模式:控制主机daemon(清单列表) - 远程主机 拉模式:控制主机daemon - 远程主机agent 应用模式: 应用层以上环境管理 拓展: 所有的自动化工具都有定制的功能

ansible 快速入门 ansible是一个开源软件,基于python,ssh

功能特点: 基础属性:开发,部署,安全 功能属性 进阶属性

劣势: 由于基于ssh方式来通信,受限较多,性能损耗大

准备工作: centos7 vmware配置 nat 创建宿主机 关闭防火墙 网卡设置为 eth0 net.ifnames=0 biosdevname=0 安装系统 关闭防火墙 启用网卡 系统基本配置 networkmanager 防火墙服务 selinux 软件源 设置主机名,ip,时间同步

vim /etc/hosts 192.168.8.14 master.ansible.com master 192.168.8.15 node1.ansible.com node1 192.168.8.16 node2.ansible.com node2

yum install ntpdate -y 同步时间 date ntpdate timel.aliyun.com whereis ntpdate echo '/10 * '/usr/sbin/ntpdate time1.aliyun.com &>/dev/null >> /var/spoo1/cron/root

yum update -更新yum源 yum install ansible -y ansible --version

rpm -ql ansible | more

-------------------企业架构之lnmp

JS
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。