网站建设及域名,企业用的邮箱是什么邮箱,太原做网站的公司,用文本文件做网站目录 一.简介二.案例1.实现思路2.配置文件修改3.实现效果故障转移机制 一.简介
以提高应用系统的可靠性#xff0c;尽可能地减少中断时间为目标#xff0c;确保服务的连续性#xff0c;达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集… 目录 一.简介二.案例1.实现思路2.配置文件修改3.实现效果故障转移机制 一.简介
以提高应用系统的可靠性尽可能地减少中断时间为目标确保服务的连续性达到高可用的容错效果。例如“故障切换”、“双机热备”、“多机热备”等都属于高可用集群技术。HA的工作方式包括双工和主从两种模式双工即所有节点同时上线而主从只有主节点在线提供服务当主节点出现问题后备接替出故障的主节点为用户提供服务
集群实现的方式 在企业中一般通过软件、硬件两种方式来实现集群
企业中常用的开源集群软件有Nginx、LVS、Haproxy、Keepalived、Heartbeat等
企业中常用的商业集群硬件有F5、Netscaler、Radware、A10等
二.案例
1.实现思路 2.配置文件修改
主机上配置
#修改Nginx1的配置文件
vi /usr/local/nginx/conf/nginx.conf
upstream myserver {server 10.10.100.222:8080;server 10.10.100.222:8081;
}server {listen 80;server_name 10.10.100.222;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://myserver;}#启动主节点上的tomcat/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/startup.sh#Nginx1上安装keepalivedyum install -y keepalived#配置keepalived的配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.loc#邮件服务器通知地址暂不配置默认即可smtp_server 192.168.200.1#邮件服务器超时时间暂不配置默认即可smtp_connect_timeout 30#当前虚拟机的IP地址router_id 10.10.100.222
}vrrp_script Monitor_Nginx {script /etc/keepalived/nginx_check.sh #检测脚本执行的路径interval 2 #检测脚本执行的间隔weight 2 #检测脚本执行的权重
}vrrp_instance VI_1 {state MASTER #标识这个机器是MASTER还是BACKUPinterface ens192 #当前机器的网卡名称 virtual_router_id 51 #虚拟路由的编号主备必须一致priority 100 #主、备机取不同的优先级主机值较大备份机值较小advert_int 1 #VRRP Multicast广播周期秒数authentication {auth_type PASS #VRRP认证方式auth_pass 1111 #密码}track_script {Monitor_Nginx #调用Nginx进程检测脚本}virtual_ipaddress {10.10.100.198 #虚拟IP地址}
}#编写脚本
#!/bin/bashnginxpidps -C nginx --no-header |wc -lif [ $nginxpid -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 1nginxpidps -C nginx --no-header |wc -lif [ $nginxpid -eq 0 ];thensystemctl stop keepalivedfifi脚本功能说明统计nginx进程数量如果进程数量的值等于0说明nginx挂了那么执行/usr/local/nginx/sbin/nginx去启动分发器等待1秒后再次检查进程数量如果进程数量的值还是等于0则执行systemctl stop keepalived停止keepalived服务。这样就停止发组播释放VIP而备用服务器就开始接手工作了。 备机上配置
#安装nginx
#修改配置文件
vi /usr/local/nginx/conf/nginx.conf
upstream myserver {server 10.10.100.222:8080;server 10.10.100.222:8081;
}server {listen 80;server_name 10.10.100.222;#charset koi8-r;#access_log logs/host.access.log main;location / {proxy_pass http://myserver;}#启动nginx服务
/usr/local/nginx/sbin/nginx一定要注意router_id、state、interface的值
#安装keepalived
yum install -y keepalived#修改keepalived的配置文件
vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.loc#邮件服务器通知地址暂不配置默认即可smtp_server 192.168.200.1#邮件服务器超时时间暂不配置默认即可smtp_connect_timeout 30#当前虚拟机的IP地址router_id 10.10.100.221
}vrrp_script Monitor_Nginx {script /etc/keepalived/nginx_check.sh #检测脚本执行的路径interval 2 #检测脚本执行的间隔weight 2 #检测脚本执行的权重
}vrrp_instance VI_1 {state BACKUP #标识这个机器是MASTER还是BACKUPinterface ens192 #当前机器的网卡名称 virtual_router_id 51 #虚拟路由的编号主备必须一致priority 90 #主、备机取不同的优先级主机值较大备份机值较小advert_int 1 #VRRP Multicast广播周期秒数authentication {auth_type PASS #VRRP认证方式auth_pass 1111 #密码}track_script {Monitor_Nginx #调用Nginx进程检测脚本}virtual_ipaddress {10.10.100.198 #虚拟IP地址}
}#编辑脚本
#!/bin/bashnginxpidps -C nginx --no-header |wc -lif [ $nginxpid -eq 0 ];then/usr/local/nginx/sbin/nginxsleep 1nginxpidps -C nginx --no-header |wc -lif [ $nginxpid -eq 0 ];thensystemctl stop keepalivedfifi#启动keepalived服务3.实现效果
222221198机器都能访问到内容
查看网络100.198虚拟ip在主服务器上
当主机出现故障主机上的的keepalived的服务不在了备机开始工作 查看网络
故障转移机制
keepalived高可用服务之间故障切换转移是通过VRRP的来实现的在keepalived服务正常工作时住Master节点会不断的向备节点发送组播的方式心跳包用于告诉备Backup节点自己还属于存活状态当Master节点发送故障时就无法发送心跳包消息备节点也就因此无法继续检测到来之Master的心跳了于是调用自身的接管程序接管主Master节点的IP资源及服务。而当主Master节点心跳恢复时备Backup节点又会释放主节点故障时自身接管的IP资源及服务恢复到原来的备用角色。