高可用集群企业级应用实战-keepalived

Keepalived的作用是检测服务器
的状态,如果有一台web服务器宕机
,或工作出现故障,Keepalived将检
测到,并将有故障的服务器从系统中
剔除,同时使用其他服务器代替该服
务器的工作,当服务器工作正常后
Keepalived自动将服务器加入到服务
器群中,这些工作全部自动完成,不
需要人工干涉,需要人工做的只是修
复故障的服务器。

Keepalived工作流程图:

工作流程图详解:

keepalived主要是模块是VRRP Stack和Cheackers,实现HA集群
中失败切换(Failover)功能。Keepalived通过VRRP功能能再结合LVS负载均
衡软件即可部署一个高性能的负载均衡集群系统。,Cheackers主要实现可
实现对服务器运行状态检测和故障隔离。,其中ipvs和realserver健康状态检
查通过配置文件配置就可以实现,而其他服务高可用则需要通过自己编写脚
本,然后配置keepalived调用来实现。
Keepalived运行有3个守护进程。父进程主要负责读取配置文件初始化
、监控2个子进程等;然后两个子进程,一个负责VRRP,另一个负责
Cheackers健康检查。其中父进程监控模块为WacthDog,工作实现:每个
子进程打开一个接受unix域套接字,父进程连接到那些unix域套接字并向子
进程发送周期性(5s)hello包。
上图是Keepalived的功能体系结构,大致分两层:用户空间(user space)
和内核空间(kernel space)。
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)
和NETLINK(提供高级路由及其他相关的网络功能)两个部份。

VRRP协议的相关介绍:

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)
可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以
由另一个备份路由器继续提供相同的服务。
VRRP根据优先级来确定虚拟路由器中每台路由器的角色(Master路由
器或Backup路由器)。VRRP优先级的取值范围为0到255(数值越大表明
优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃
Master位置时候使用,255则是系统保留给IP地址拥有者使用。优先级越高
,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争
Master时,比较接口IP地址大小。接口地址大者当选为Master。

实战演练:实现基于keepalived高可用基于LVS-DR模式的双主架构

一:环境准备:

四台centos虚拟机分别命名为:lvs-master、lvs-backup、realserver1、realserver2

都是双网卡模式:桥接和仅主机

lvs-master: vip1:172.17.250.11

dip:172.17.27.10

lvs-backup:vip2:172.17.250.12

dip:172.17.250.43

realserver1:rip:172.17.0.66

realserver2:rip:172.17.250.41

分别在lvs-master和lvs-backup上安装keepalived

清空防火墙策略:iptables -F,关闭selinux策略

二:配置相关文件

1、修改keepalived主(lvs-server-master)配置文件实现virtual_instance

vrrp_instance VI_1 {

state MASTER

interface ens33

virtual_router_id 90

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1015

}

virtual_ipaddress {

172.17.250.11

}

}

virtual_server 172.17.250.11 80 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.255

persistence_timeout 120

protocol TCP

real_server 172.17.0.66 80 {

weight 1

HTTP_GET {

url {

path /

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.17.250.41 80 {

weight 1

HTTP_GET {

url {

path /

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

vrrp_instance VI_2 {

state BACKUP

interface ens33

virtual_router_id 93

priority 98

advert_int 1

authentication {

auth_type PASS

auth_pass 1234

}

virtual_ipaddress {

172.17.250.12

}

}

virtual_server 172.17.250.12 443 {

delay_loop 6

lb_algo wrr

lb_kind DR

nat_mask 255.255.255.255

persistence_timeout 120

protocol TCP

real_server 172.17.0.66 443 {

weight 1

HTTP_GET {

url {

path /

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

real_server 172.17.250.41 443 {

weight 1

HTTP_GET {

url {

path /

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

2,lvs-backup与lvs-master配置文件大致相同,所以就只列出不同的地方,没列出的都是相同的代码

vrrp_instance VI_1 {

state MASTER

interface ens33

virtual_router_id 90

priority 98    ###由原来的100改为了98

advert_int 1

authentication {

auth_type PASS

auth_pass 1015

}

virtual_ipaddress {

172.17.250.11

}

}

vrrp_instance VI_2 {

state BACKUP

interface ens33

virtual_router_id 93

priority 100    ###由原来的98改为了100

advert_int 1

authentication {

auth_type PASS

auth_pass 1234

}

virtual_ipaddress {

172.17.250.12

}

}

3,realserver1和realserver2配置都一样

因为realserver使用了443端口,所以说需要进行加密所以应该打开nginx中的https server

cd /etc/pki/tls/certs

生成密钥和证书:make cert.pem

拷贝cert.pem到nginx配置文件中:

cp cert.pem /etc/nginx

cd /etc/nginx

创建一个密钥文件,并把cert.pem中的密钥拷到此文件中

vim cert.key

HTTPS server

server {

listen       443 ssl;

server_name  localhost;

root html;

ssl_certificate      cert.pem;     ###存放证书的文件

ssl_certificate_key  cert.key;    ####存放密钥的文件

ssl_session_cache    shared:SSL:1m;

ssl_session_timeout  5m;

ssl_ciphers  HIGH:!aNULL:!MD5;

ssl_prefer_server_ciphers  on;

location / {

index  index.html index.htm;

}

}

}

配置回环网卡:

ifconfig lo:0 172.17.250.11 broadcast 172.17.250.11 netmask 255.255.255.255 up

route add -host 172.17.250.11 lo:0

ifconfig lo:1 172.17.250.12 broadcast 172.17.250.12 netmask 255.255.255.255 up

route add -host 172.17.250.11 lo:0

忽略ip与mac不匹配的问题:

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

三:测试检验高可用的效果

1、配置完成后,观察两侧IP的是情况,看是否虚拟IP在主上配置成功

2、停掉主服务上的keepalived服务,看虚拟IP是否正常转移到从节点上

a,首先查看虚拟ip是否在lvs-master和lvs-backup上配置成功

ipvsadm -L -n

从图中可以看到vip1:172.17.250.11

vip2:172.17.250.12

b,关掉lvs-backup的keepalived服务

systemctl stop keepalived

查看vip2:172.17.250.12是否跑到了lvs-master主机上

图中看出lvs-backup上已经没有了vip2:172.17.250.12

而是出现在了lvs-master上

时间: 2024-10-07 06:33:09

高可用集群企业级应用实战-keepalived的相关文章

MySQL数据库——MHA高可用集群架构(实战!!!)

MHA 简介 (1)简介 目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用. (2)该软件由两部分组成 MHA Manager(管理节点)和MHA Node(数据节点)

高可用集群实验二:keepalived+lvs实现故障自迁移

一.承接上一篇文章,按上面拓扑做修改: 1.新增一台Director,eth1的IP 192.168.1.5 2.旧Director添加一起网卡eth0(IP 10.0.0.1/24)直连新Director的eth0(IP 10.0.0.2/24) 3.删除.旧Director的eth1:0 二.两台Director都进行以下操作: 1.关闭ipvsadm: chkconfig ipvsadm off service ipvsadm off 2..通过ssh-keygen互信 ssh-keyge

企业中MySQL高可用集群架构三部曲之MM+keepalived

各位老铁们,老张与大家又见面了.看到各位在博客里面给我的留言和访问量的情况,我很是欣慰,也谢谢大家对我的认可.我写这些博客,就是想把自己对于MySQL数据库的一些看法和自己平时的实战经验分享出来,我们可以一起探讨,共同进步.也保证今后只要一有空就更新博文,推出更多的干货. 我的学生经常对我说:"张老师,每次我遇到报错,有时还是会百度,但是最烦的是不知道百度哪篇帖子说的是正确的".其实这些呢,都是因为自己还没有对MySQL数据库核心知识的不熟悉,和对技术掌握的不牢固.平时下得功夫还是不到

Nginx+Keepalived高可用集群应用实践

Nginx+Keepalived高可用集群应用实践 1.Keepalived高可用软件 1.1 Keepalived服务的三个重要功能 1.1.1管理LVS负载均衡软件 早期的LVS软件,需要通过命令行或脚本实现管理,并且没有针对LVS节点的健康检查功能.为了解决LVS的这些使用不便问题,Keepalived诞生了,可以说,Keepalived软件起初是专为解决LVS的问题而诞生的.因此,Keepalived和LVS的感情很深,他们的关系如同夫妻一样,可以紧密地结合,愉快地工作.Keepaliv

基于Keepalived实现LVS双主高可用集群

前言 前面说过基于heartbeat的LVS高可用方案,今天带来另一种解决方案:基于Keepalived实现LVS双主高可用集群.什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生.本文将详细讲述Keepalived工作原理及高可用解决方案的实现. 相关介绍 Keepalived简介 Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余

18.1集群介绍 18.2 keepalived介绍18.3/18.4/18.5 用keepalived配置高可用集群

- 18.1 集群介绍 - 18.2 keepalived介绍 - 18.3/18.4/18.5 用keepalived配置高可用集群 - 扩展 - heartbeat和keepalived比较 http://blog.csdn.net/yunhua_lee/article/details/9788433  - DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945 - mysql+keepalived http://lizhenl

RHEL6搭建 keepalived (HA) 任意单故障节点的高可用集群

搭建 keepalived (HA) 任意单故障节点的高可用集群 实验拓扑图: 实验要求: 使用Keepalived实现web服务器的高可用 Web服务器IP地址分别为192.168.4.53和192.168.4.54 Web服务器53 为主服务器,Web服务器54为备服务器 Web服务器的VIP地址为192.168.4.251 客户端通过访问VIP地址访问Web页面 实验步骤: 实验准备 配置yum源 # service iptables stop            //关闭防火墙 # c

18.1-18.5 集群介绍,用keepalived配置高可用集群

18.1 集群介绍 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务大概意思是:高可用一般使用两台机器,功能,角色是一样的.当一台服务器宕机不能服务了,利用另外的服务器顶替. 实现高可用的开源软件有:heartbeat(不建议使用,切换通信速度慢,2010年停止更新,).keepalived(建议使用,有高可用和负载均衡的功能) 负载均衡集群,需要有一台服务器作为分发器,它负责把用户的请求分发给后端的服务

java架构师课程、性能调优、高并发、tomcat负载均衡、大型电商项目实战、高可用、高可扩展、数据库架构设计、Solr集群与应用、分布式实战、主从复制、高可用集群、大数据

15套Java架构师详情 * { font-family: "Microsoft YaHei" !important } h1 { background-color: #006; color: #FF0 } 15套java架构师.集群.高可用.高可扩展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布式项目实战视频教程 视频课程包含: 高级Java架构师包含:Spring boot.Spring  clo