文档章节

linux集群-keepalived介绍-用keepalived配置高可用集群

Z
 ZHENG-JY
发布于 09/05 21:41
字数 1299
阅读 9
收藏 10

linux集群介绍:

以功能划分:高可用和负载均衡

高可用集群:通常为两台服务器,一台工作,另外一台作为冗余。实现高可用的开源软件有:heartbeat、keepalived

负载均衡集群:一台服务器作为分发器,负责把用户的请求分发给后端的服务器处理,后端服务器数量至少为2 。实现负载均衡的开源软件有LVS、keepalived、haproxy、nginx,商业的有F5、Netscaler

 

keepalived介绍:

keepalived通过VRRP(Virtual Router Redundancy Protocl:虚拟路由冗余协议)来实现高可用(HA,又叫做双机热备)。

定义多台功能相同的机器组成小组,小组有1个master角色和N(N>=1)个backup角色,master以组播的形式向backup发送VRRP协议的数据包,当backup收不到VRRP数据包时,会认为master宕机了。此时根据各个backup的优先级来决定谁成为新的mater。

 Keepalived要有三个模块,分别是core、check和vrrp。其中core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析,check模块负责健康检查,vrrp模块是来实现VRRP协议的。

 

用keepalived配置高可用集群:

1.准备操作:

两台机器192.168.1.100(master) 和192.168.1.101(backup);均安装keepalived和nginx(nginx服务是实现高可用的实验对象):yum install -y keepalived nginx;并启动nginx服务;检查两台机器防火墙和selinux服务是否已关闭

 

2.master修改keepalived配置:

vim  /etc/keepalived/keepalived.conf                 #可将原有配置备份,全新添加以下内容:

global_defs {                 
notification_email {                           #出现问题时发送信息到该邮箱;可以不用定义
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {                        #检测nginx服务是否正常
script "/usr/local/sbin/check_ng.sh"           #定义脚本路径,该脚本需自己编写检测流程
interval 3                                     #检测时间间隔为3秒
}
vrrp_instance VI_1 {                           #定义master相关
state MASTER                                   #角色名称,此角色为master,若为backup,此处填BACKUP
interface ens33                                #通过该网卡发送vrrp报文
virtual_router_id 51                           #主备id需要一致
priority 100                                   #权重
advert_int 1
authentication {                               #定义认证相关
auth_type PASS                                 #密码形式
auth_pass aminglinux>com                       #密码为aminglinux>com
}
virtual_ipaddress {
192.168.1.2                                  #定义虚拟IP,该IP使用在工作节点上,主备定义一样
}
track_script {
chk_nginx                                      #加载检查脚本chk_nginx
}
}

 

3.master上编写检测nginx服务脚本:

vim /usr/local/sbin/check_ng.sh             #此路径和脚本名称在第2步定义的路径相应;添加以下内容:

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi

chmod 755 /usr/local/sbin/check_ng.sh                 #更改脚本权限

 

4.启动master的keepalived服务:

systemctl start keepalived                                     #启动服务;keepalived相关日志在/var/log/messages里面

 

5.backup修改keepalived配置:

vim  /etc/keepalived/keepalived.conf                 #可将原有配置备份,全新添加以下内容:

global_defs {
notification_email {
aming@aminglinux.com
}
notification_email_from root@aminglinux.com
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/usr/local/sbin/check_ng.sh"
interval 3
}
vrrp_instance VI_1 {
state BACKUP                   #角色名称为backup
interface ens33
virtual_router_id 51
priority 90                    #权重,比master低
advert_int 1
authentication {
auth_type PASS
auth_pass aminglinux>com
}
virtual_ipaddress {
192.168.2.100
}
track_script {
chk_nginx
}
}

 

6.backup上编写检测nginx服务脚本:

vim /usr/local/sbin/check_ng.sh             #与master检测脚本一样;添加以下内容:

#!/bin/bash
#时间变量,用于记录日志
d=`date --date today +%Y%m%d_%H:%M:%S`
#计算nginx进程数量
n=`ps -C nginx --no-heading|wc -l`
#如果进程为0,则启动nginx,并且再次检测nginx进程数量,
#如果还为0,说明nginx无法启动,此时需要关闭keepalived
if [ $n -eq "0" ]; then
/etc/init.d/nginx start
n2=`ps -C nginx --no-heading|wc -l`
if [ $n2 -eq "0" ]; then
echo "$d nginx down,keepalived will stop" >> /var/log/check_ng.log
systemctl stop keepalived
fi
fi

chmod 755 /usr/local/sbin/check_ng.sh                 #更改脚本权限

 

7.启动master的keepalived服务:

systemctl start keepalived                                     #启动服务;keepalived相关日志在/var/log/messages里面

 

8.简单测试:

测试1:手动关闭master上的nginx服务,看nginx服务能否自动开启。能则正常

测试2:master上添加iptables规则:iptables -I output -p vrrp -j DROP   ,看虚拟ip是否仍然在master上,或检查虚拟IP访问的nginx默认页面是否是master的。是则正常;注意测试后清除规则。

测试3:master上关闭keepalived服务,看虚拟ip是否更换到backup上,或检查虚拟IP访问的nginx默认页面是否是backup的。是则正常

测试4:master上启动keepalived服务,看虚拟ip是否更换到master上

© 著作权归作者所有

共有 人打赏支持
Z
粉丝 0
博文 72
码字总数 42215
作品 0
珠海
私信 提问
服务器状态监测 Keepalived

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Kee...

凯文加内特
2015/03/27
0
0
Linux集群:搭建高可用集群

一、集群介绍 根据功能划分为两大类:高可用和负载均衡; 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务; 实现高可用的开源软件...

BatmanLinux
10/24
0
0
Linux集群架构——keepalived高可用集群

Linux集群概述 根据功能划分为两大类:高可用和负载均衡 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 实现高可用的开源软件有:...

chencheng-linux
09/06
0
0
服务器集群之keepalived配置高可用(资料)

Linux集群概述 • 根据功能划分为两大类:高可用和负载均衡 • 高可用集群通常为两台服务器,一台工作,另外一台作为冗余,当提供服务的机器宕机,冗余将接替继续提供服务 • 实现高可用的开...

寰宇01
05/24
0
0
集群介绍、keepalived介绍、keepalived配置高可用集群

集群介绍 将多台服务器搭建成一个集群来运行应用程序,可以避免单点故障,还能提升服务器的承载能力 linux集群按功能可以划分为两大类:高可用和负载均衡。 高可用集群:通常是两条服务器,一...

黄昏残影
09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

node.js学习笔记之koa框架和简单爬虫练习

Koa -- 基于 Node.js 平台的下一代 web 开发框架 koa是由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。 使用 koa 编写 web 应用,可以免除重复繁琐的回调...

前端小攻略
3分钟前
0
0
JavaScript中的继承及实现代码

JS虽然不像是JAVA那种强类型的语言,但也有着与JAVA类型的继承属性,那么JS中的继承是如何实现的呢? 一、构造函数继承 在构造函数中,同样属于两个新创建的函数,也是不相等的 function Fn...

peakedness丶
24分钟前
1
0
记一次面试最常见的10个Redis"刁难"问题

导读:在程序员面试过程中Redis相关的知识是常被问到的话题。作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题。十分值得一读。 Redis在...

小刀爱编程
37分钟前
13
0
TiDB Lab 诞生记 | TiDB Hackathon 优秀项目分享

本文由红凤凰粉凤凰粉红凤凰队的成员主笔,他们的项目 TiDB Lab 在本届 TiDB Hackathon 2018 中获得了二等奖。TiDB Lab 为 TiDB 培训体系增加了一个可以动态观测 TiDB / TiKV / PD 细节的动画...

TiDB
50分钟前
4
0
当区块链遇到零知识证明

本文由云+社区发表 当区块链遇到零知识证明 什么是零知识证明 零知识证明的官方定义是能够在不向验证者任何有用的信息的情况下,使验证者相信某个论断是正确的。这个定义有点抽象,下面笔者举...

腾讯云加社区
59分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部