用瀑布流做的美食网站,单位网站建设公司,域名注册信息怎么查,短视频app开发软件企业架构双点服务器HA 学习目标和内容 1、能够描述高可用HA的作用 2、能够理解VIP的切换 3、能够描述keepalived作用 4、能够理解主master和备backup服务器关系 5、能够实现主备服务器高可用配置 6、能够实现模拟业务宕机服务切换 一、背景描述及其方案设计
1、业务背景描述 时…企业架构双点服务器HA 学习目标和内容 1、能够描述高可用HA的作用 2、能够理解VIP的切换 3、能够描述keepalived作用 4、能够理解主master和备backup服务器关系 5、能够实现主备服务器高可用配置 6、能够实现模拟业务宕机服务切换 一、背景描述及其方案设计
1、业务背景描述 时间2009.6-2010.9 发布产品类型互联网动态站点 商城 ⽤户数量 2000-4000⽤户量猛增 翻了4倍 PV 8000-5000024⼩时访问次数总和 QPS 50-100*每秒访问次数 DAU 200-400每⽇活跃⽤户数 随着用户量增多单台WEB服务器压力越来越大。虽然单台WEB服务器目前可以完成工作任务。但是如果一旦宕机用户就完全失去服务了用户体验特别不好。需要备用一台服务器进行使用主服务器宕机之后快速切换为备用服务器
2、模拟运维设计方案
在之前架构中先将数据库服务器单独迁移 针对web服务器单点故障升级为主备服务器架构 二、数据库服务器迁移
1、克隆复制虚拟机 server01 WEB服务器 master 192.168.17.102 server02 数据库服务器 192.168.17.100 server03 WEB服务器 backup 192.168.17.101 2、服务器基本配置
根据之前的服务器基本环境的要求进行配置
因为是克隆获取虚拟机所以只需要进行IP和MAC地址的修改即可。
#1、删除原有网卡mac地址记录信息
shell cd /etc/udev/rules.d
shell rm -rf 70-persistent-net.rules
#2、删除eth0里的mac地址项 HWADDR参数
#3、修改主机名称
shell sed -i s/server01/server02/ /etc/sysconfig/network;
#4、启动之后把hosts文件对应也做解析
##3、数据备份和迁移
①源数据库服务器导出数据
#源数据库是server01 在server01上操作
shell mysqldump -uroot -p --database tp5shop /root/tp5shop.sql
②导入数据到新数据库服务器
#因为数据库服务器克隆来的所有本身具有数据 可以删除了库模拟新机器重新导入
mysql drop database tp5shop;
#创建数据库并导入数据
mysql create database tp5shop;
mysql use tp5shop;
mysql source /root/tp5shop.sql;
③在server02 MySQL服务器中建立远程连接用户并授予权限
mysql grant all on tp5shop.* to tp5shop192.168.17.% identified by $Abc3721;
④修改项目数据库配置文件
shell vim /usr/local/nginx/html/tp5shop/application/database.php
修改参考示例
return [// 数据库类型type mysql,// 服务器地址hostname 192.168.17.100,// 数据库名database tp5shop,// 用户名username tp5shop,// 密码password $Abc3721,// 端口hostport 3306,
⑤访问页面查看业务使用情况
三、高可用服务搭建
1、HA高可用
高可用HAHigh Availability是分布式系统架构设计中必须考虑的因素之一它通常是指通过设计减少系统服务不可用的时间。假设系统一直能够提供服务我们说系统的可用性是100%。如果系统每运行100个时间单位会有1个时间单位无法提供服务我们说系统的可用性是99%。很多公司的高可用目标是4个9也就是99.99%这就意味着系统的年停机时间为0.876个小时。
描述通俗叫法可用性级别年度停机时间基本可用性2个999%87.6小时较高可用性3个999.9%8.8小时具有故障自动恢复能力的可用性4个999.99%53分钟极高可用性5个999.999%5分钟 实现高可用的核心点 ①冗余多台服务器 ②自动切换 备份服务器
冷备 服务器不启用域名不解析使用的时候再开启需要手动切换
热备 服务器在等待状态监控主服务器状态一旦主宕机备就接管自动切换
实现热备引入VIP的切换 通过VIP的方式切换主备服务器
①默认VIP绑定在主服务器master
②master不可用就切换VIP到备份服务器backup
③用户可以使用到连续性更好的服务通过VIP访问服务器
常用来单独实现高可用的软件
①keepalived
②heartbeat 较早 属于redhat HA工程的一部分
2、keepalived介绍
Keepalived软件起初是专为LVS负载均衡软件设计的用来管理并监控LVS集群系统中各个服务节点的状态后来又加入了可以实现高可用的VRRP功能。因此Keepalived除了能够管理LVS软件外还可以作为其他服务例如Nginx、Haproxy、MySQL等的高可用解决方案软件
3、keepalived组成和原理
Keepalived软件主要是通过VRRP协议实现高可用功能的。
VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协议的缩写VRRP出现的目的就是为了解决静态路由单点故障问题的它能够保证当个别节点宕机时整个网络可以不间断地运行。
虚拟路由冗余协议可以认为是实现路由器高可用的协议即将N台提供相同功能的路由器组成一个路由器组这个组里面有一个master和多个backupmaster上面有一个对外提供服务的vip该路由器所在局域网内其他机器的默认路由为该vipmaster会发组播当backup收不到vrrp包时就认为master宕掉了这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。 Keepalived的功能体系结构大致分两层用户空间user space和内核空间kernel space。
内核空间
主要包括IPVSIP虚拟服务器用于实现网络服务的负载均衡和NETLINK提供高级路由及其他相关的网络功能两个部份。
用户空间 WatchDog负载监控checkers和VRRP进程的状况 VRRP Stack负载均衡器之间的失败切换FailOver如果只用一个负载均衡器则VRRP不是必须的。 Checkers负责真实服务器的健康检查healthchecking是keepalived最主要的功能。换言之可以没有VRRP Stack但健康检查healthchecking是一定要有的。 IPVS wrapper用户发送设定的规则到内核ipvs代码 Netlink Reflector用来设定vrrp的vip地址等。 keepalived主要使用三个模块分别是core、check和vrrp。
core模块为keepalived的核心负责主进程的启动、维护以及全局配置文件的加载和解析。
check负责健康检查包括常见的各种检查方式。
vrrp模块是来实现VRRP协议的。
4、安装配置启动keepalived
master和backup都需要进行安装也就是server01和server03机器
#安装keepalived
shell yum -y install keepalived
主机名称服务器IPserver01192.168.17.102masterserver03192.168.17.101backup
keepalived需要使用的目录和文件
文件或者目录作用/etc/keepalived/keepalived.conf生效的配置文件/etc/init.d/keepalived服务器管理脚本/var/log/messages日志信息
配置keepalived
①备份主备服务器的配置文件
shell cd /etc/keepalived
shell cp keepalived.conf keepalived.conf_bak
②分别修改主备服务器配置文件
shell vim keepalived.conf
示例配置文件说明
! Configuration File for keepalived
#发送邮件的配置
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL
}
#vrrp协议的配置
vrrp_instance VI_1 {#工作模式state MASTER#监听的网卡interface eth0#虚拟路由id 需要和备服务器一致virtual_router_id 51#权重 优先级priority 100#vrrp包的发送周期 1sadvert_int 1#权限验证authentication {auth_type PASSauth_pass 1111}#需要绑定切换的VIPvirtual_ipaddress {192.168.200.16192.168.200.17192.168.200.18}
}
主服务器
! Configuration File for keepalived
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}#master默认只需要修改使用VIP即可virtual_ipaddress {192.168.17.200}
}
备服务器
! Configuration File for keepalived
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL
}
vrrp_instance VI_1 {#修改工作模式为备state BACKUPinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}#注意修改VIPvirtual_ipaddress {192.168.17.200}
}
③分别按照顺序启动主服务器和备服务器的keepalived
shell service keepalived start
④查看主备服务器的网卡信息
#需要通过ip a命令查看 分别在server01和server03查看
shell ip a
##5、模拟服务器不可用VIP切换
服务器整机不可用常见于服务器断网或者断电关机等。
方法一模拟主服务器断电关闭
#关闭主服务器 VIP所在服务器
shell poweroff
方法二模拟主服务器断网
#关闭VIP所在服务器的网卡 使其不能够联网
shell service network stop
通过以上实验检测发现当主服务器整机不可用时VIP会切换到备用服务器
四、实现服务HA
通过keepalived可以直接实现主服务器整机不可用实现VIP的切换。保证用户可以通过VIP进行访问服务。
但是实际情况下往往并不是服务器整机不可用只是对应的服务或者软件不可用。
比如说nginx提供的web服务nginx进程关闭
就需要检测当nginx不可用时就切换VIP
实现过程分析
VIP实际是由keepalived进行绑定的所以当nginx服务不可用时就关闭当前机器的keepalived即可释放VIP。进而绑定到其他备用服务器。
①编写服务检测脚本实现检测nginx是否可用不可用则关闭当前所在主机的keepalived
②在keepalived配置中调用检测服务脚本
1、Nginx服务可用检测脚本
主备服务器都要实现此脚本
①编写测试脚本 赋予执行权限
shell cd /etc/keepalived
shell vim check_nginx.sh
脚本内容
#!/bin/bash
nginx_statusps -C nginx --no-header | wc -l
if [ $nginx_status -eq 0 ];thenservice keepalived stop
fi
赋予脚本执行权限 方便之后其他软件调用执行
shell chmod x check_nginx.sh
②测试脚本可用性
启动nginx和keepalived
关闭nginx 执行脚本 查看keepalived是否也关闭
2、模拟宕机实现服务切换
在多台服务器中配置keepalived定时触发检测nginx的脚本模块
#在vrrp_instance外上面定义
vrrp_script check_nginx {#调用脚本地址script /etc/keepalived/check_nginx.sh#检测间隔时间interval 3
}
#在vrrp_instance里调用
track_script {#上线定义的名称check_nginx
}
##3、实现web服务器高可用
以上案例已经实现了服务不可用VIP切换到可用服务器。
现在需求用户的服务是连续不间断的故用户需要通过VIP进行访问
①解析域名到VIP
②模拟用户访问
五、keepalived的配置补充 脑裂裂脑vip出现在了多台机器上。网络不通畅禁用了数据包主备服务器没法通讯造成备服务器认为主服务器不可用绑定VIP主服务器VIP不会释放。 解决方案 ①双备或者多备模式 BACKUP 通过priority权重来区分谁的优先级更高 ②单播(定向广播)的方式 (一些特定环境禁用了组播方式) ③时间不同步 服务器时间校时 1、非抢占模式
①nopreempt
在主备服务器的配置文件vrrp_instance段中
②设置state工作模式为BACKUP 两个keepalived节点都启动后默认都是BACKUP状态双方在发送组播信息后会根据优先级来选举一个MASTER出来。由于两者都配置了nopreempt所以MASTER从故障中恢复后不会抢占vip。这样会避免VIP切换可能造成的服务延迟。
2、单播模式
一些特定环境下不允许发送组播造成备服务器无法收到vrrp包可能会造成脑裂现象。可以通过单播的方式解决。
单播示例配置注意此语法在keepalived1.2.11版本以上支持 unicast_src_ip 192.168.1.21##本地IP地址 unicast_peer { 192.168.1.22##对端IP地址此地址一定不能忘记 } 主服务器server01配置
#在vrrp_instace段中加入
#本地IP
unicast_src_ip 192.168.17.102
unicast_peer {#对象IP 发送vrrp包给备服务器192.168.17.101
}
备服务器server03配置
#在vrrp_instace段中加入
#本地IP
unicast_src_ip 192.168.17.101
unicast_peer {#对象IP 发送vrrp包给备服务器192.168.17.102
}
tcpdump抓vrrp包的方式
shell tcpdump vrrp -n