企业实战(3)-主从实现基于Keepalived高可用集群网站架构
企业实战:逐步实现企业各种情景下的需求
企业情景三:
网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经通过集群LVS架构可做到随时拓展,后端节点已经通过集群技术保障了可用性,但对于前端负载均衡器来说,是个比较大的安全隐患,因为当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,因此,负载均衡器的可用性也显得至关重要,那么怎么来解决负载均衡器的可用性问题呢?
项目三:主从实现基于Keepalived高可用集群网站架构
实现keepalived企业级高可用基于LVS-DR模式的应用实战:
一、环境准备:
两台centos系统做DR、一主一从,两台实现过基于LNMP的电子商务网站
二、安装步骤:
1、两台服务器都使用yum 方式安装keepalived服务
2、iptables -F && setenforing 清空防火墙策略,关闭selinux
实现前分配各个角色
机器名称 | IP配置 | 服务角色 | 备注 |
---|---|---|---|
lvs-server-master | VIP:172.17.252.110 DIP:172.17.250.223 | 主负载均衡器 | 开启路由功能 配置keepalived |
lvs-server-backup | VIP:172.17.252.110 DIP:172.17.251.37 | 从负载均衡器 | 开启路由功能 配置keepalived |
rs01 | RIP:172.17.252.87 | 后端服务器 | 网关指向DIP(桥接) |
rs02 | RIP:172.17.250.45 | 后端服务器 | 网关指向DIP(桥接) |
三、配置基于DR模式的LVS负载均衡集群:
主(master): 1、修改keepalived主(lvs-server-master)配置文件实现virtual_instance vrrp_instance VI_1 { state MASTER #状态情况 interface eth1 #接口 virtual_router_id 51 priority 100 #权重 advert_int 1 authentication { auth_type PASS auth_pass magedu } virtual_ipaddress { 172.17.252.110 #VIP } } 2、修改keepalived主(lvs-server-backup)配置文件实现virtual_server virtual_server VIP 端口 { delay_loop 6 ld_algo rr lb_kind DR protocol TCP real_server 172.17.252.87 80 { #RIP weight 1 TCP_CHECK { connect_timeout 3 } } real_server 172.17.250.45 80 { #RIP weight 1 TCP_CHECK { connect_timeout 3 } } 从(back-up): 1、修改keepalived从(lvs-server-backup)配置文件实现virtual_instance vrrp_instance VI_1 { state BACKUP #状态情况 interface eth1 #接口 virtual_router_id 51 priority 98 #权重,注意从要比主的权重小 advert_int 1 authentication { auth_type PASS auth_pass grr02 } virtual_ipaddress { 172.17.252.110 } } 2、修改keepalived从(lvs-server-backup)配置文件实现virtual_server virtual_server VIP 端口 { delay_loop 6 ld_algo rr lb_kind DR #LVS-DR模式 protocol TCP real_server 172.17.252.87 80 { weight 1 TCP_CHECK { connect_timeout 3 } } real_server 172.17.250.45 80 { weight 1 TCP_CHECK { connect_timeout 3 } }
企业应用
(1)实现keeaplived故障通知机制
在企业中,高可用服务,是保证整个系统稳定性的重要前提,确保高可用服务能正常工作和运转,也是非常重要的工作。除了服务上线前的充分测试之外,也需要确保对高可用服务的监控机制,keepalived 自身具备监控和通知机制,可在发生主从切换、故障转移时,通过自定义命令或者脚本,实现通知功能,从而让管理员在第一时间得知系统运行状态,确保整个服务的稳定性和可用性。
可在配置文件中,在instance配置中,通过keepalived 通知功能notify,可实现定制化脚本功能,如下所示:
notify_backup "/etc/keepalived/notify.sh backup" notify_master "/etc/keepalived/notify.sh master" notify_fault "/etc/keepalived/notify.sh fault" ``` 脚本示范:
vim /etc/keepalived/notify.shbr/>#!/bin/bash
contact='root@localhost'
notify() {
mailsubject="$(hostname) to be $1: vip floating"
mailbody="$(date +'%F %H:%M:%S'): vrrp transition, $(hostname) changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
exit 0
;;
backup)
notify backup
exit 0
;;
fault)
notify fault
exit 0
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
(2)实现keeaplived自定义脚本功能 在配置文件中,可实现以下配置,定义一个脚本,并在对应的实例instance中调用,之后就可通过手动建立down 文件,使得keepalived 实例减少权重,实现主从切换,常用于在线修改keepalived 配置文件时使用 脚本示范: ```vrrp_script chk_down { script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0 " interval 2 # check every 2 seconds weight -5 } ``` 对应实例中调用
track_script { chk_down }
在配置文件中,也可实现以下配置,定义一个脚本,并在对应的实例中调用,也可以用于检测服务是否有异常,异常的话进行切换。 脚本示范:
vrrp_script chk_sshd {
script "killall -0 sshd" # cheaper than pidof
interval 2 # check every 2 seconds
weight -4 # default prio: -4 if KO
fall 2 # require 2 failures for KO
rise 2 # require 2 successes for OK
}
track_script { chk_sshd
}
主从实现完成,若想要实现主主方式,可以理解为互为主从,一个server端配置为主从,另一server端也配置为主从(注意IP的变换以及权重值) 企业实战系列,逐步了解,逐步提升,不足之处烦请各位大佬指出(抱拳)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Kubernetes(K8S)集群管理Docker容器(部署篇)
今天这篇文章教给大家如何快速部署一套Kubernetes集群。K8S集群部署有几种方式:kubeadm、minikube和二进制包。前两者属于自动部署,简化部署操作,并且minikube只是单机测试,而kubeadm还是beta版,强烈推荐初学者使用二进制包部署,因为自动部署屏蔽了很多细节,使得对各个模块感知很少,非常不利用学习。 所以,这篇文章也是使用二进制包部署Kubernetes集群。 本章目录 一、架构拓扑图 二、环境规划 角色 IP 组件 master 192.168.0.211 etcdkube-apiserverkube-controller-managerkube-scheduler node01 192.168.0.212 kubeletkube-proxydocker node02 192.168.0.213 kubeletkube-proxydocker 环境说明: 操作系统:Ubuntu16.04 or CentOS7 Kubernetes版本:v1.8.3 Docker版本:v17.09-ce 均采用当前最新稳定版本。 关闭selinux。 三、部署集群 3....
- 下一篇
spring rest 容易被忽视的后端服务 chunked 性能问题
spring boot 容易被忽视的后端服务 chunked 性能问题 标签(空格分隔): springboot springmvc chunked 背景 spring boot 创建的默认 spring mvc 项目 集成 JAX-RS 规范框架 Jersey 背景 在之前的一次性能压测的时候我们发现一个细节问题,我们使用 spring boot 创建的 web rest 项目,使用默认 spring mvc 作为 web rest 框架。 这在使用上没有太大问题,但是有一个影响性能的细节问题被发现了,说实话这个问题很难被发现。 spring boot 创建的默认 spring mvc 项目 我们来看一个简单的 demo,我使用 IDEA 创建一个 spring boot 项目,创建过程中没有什么特别的选项需要调整,一路 next 。然后我们创建一个简单的 controller 。 package springboot.demo.controller; import org.springframework.web.bind.annotation.PathVariable; impor...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Mario游戏-低调大师作品
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- SpringBoot2整合Thymeleaf,官方推荐html解决方案