当前位置: 首页 > news >正文

centos7双机搭建_centos 7之keepalived双机热备理论+配置文件详解

一、keepalived工作原理及作用:

keepalived最初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检

查功能——判断LVS负载调度器、节点服务器的可用性,及时隔离并替换为新的服务器,当故

障主机回复后将其重新加入群集。单独部署LVS环境的话,调度器发生宕机的话,整个群集就

失效了,某一个web节点宕机后,客户端在访问时,总会碰上访问不到网页的情况,所以,将

keepalived和LVS结合起来,才可形成一个真正的高可用群集,当然,后端的共享存储也必须

搭建一个高可用的存储服务器,三者其中有一个满足不了,都不能称之为一个高可用的群集环

境。

keepalived官方网站: keepalived官网,在非LVS环境中,keepalived也可以作为热备软件

使用。

keepalived采用VRRP(虚拟路由冗余协议)热备份协议,以软件的方式实现Linux服务器的

多机热备。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组,通

过共用的虚拟IP(VIP)地址对外提供服务;每个热备份组内同一时刻只有一台主路由器提

供服务,其他路由器处于冗余状态,若当前在线的路由器失效,则其他路由器会自动接替

(优先级决定接替顺序)虚拟IP地址,以继续提供服务。

热备组内的每台路由器都可能成为主路由器,虚拟路由器的IP地址(VIP)可以在热备组内

路由器进行转移,所以也称为漂移IP地址。使用keepalived时,漂移地址的实现不需要手动

建立虚接口配置文件(如ens33:0),而是由keepalived根据配置文件自动管理。

基于VRRP的热备方式,keepalived可以用作服务器的故障切换,每个热备组可以有多台服

务器——最常用的是多机热备了。在这种多机热备方案中,故障切换主要针对虚拟IP地址的

漂移来实现。因此能适用于各种应用服务器(不管是Web、FTP、Mail、还是SSH、DNS....)。

二、keepalived双机热备配置详解:

通过下面简易的环境图,可以去全面的了解双机热备的配置及功能:

1、配置主服务器:

[root@lVS1 ~]# systemctl stop firewalld #关闭防火墙

[root@lVS1 ~]# yum -y install keepalived ipvsadm 安装所需工具

[root@lVS1 ~]# systemctl enable keepalived #设置开机自启动

[root@lVS1 ~]# cd /etc/keepalived/

[root@lVS1 keepalived]# cp keepalived.conf keepalived.conf.bak #备份配置文件

[root@lVS1 keepalived]# vim keepalived.conf #编辑配置文件

global_defs {

notification_email {

acassen@firewall.loc #启用邮件通知功能,这里设置收件人地址,可以配置多个

failover@firewall.loc

sysadmin@firewall.loc

}

notification_email_from Alexandre.Cassen@firewall.loc #发件人姓名、地址

smtp_server 192.168.200.1

smtp_connect_timeout 30

router_id LVS_DEVEL1 #本服务器的名称(在群集中必须唯一)。

.............. #省略部分内容

}

vrrp_instance VI_1 { #定义VRRP热备实例

state MASTER #热备状态,MASTER表示主服务器(注意大小写)

interface ens33 #承载VIP地址的物理接口

virtual_router_id 51 #虚拟路由器的ID号,每个热备组保持一致。

priority 100 #优先级0-100,数值越大越优先。

advert_int 1 #通告间隔秒数(心跳频率)。

authentication { #认证信息,每个热备组保持一致

auth_type PASS #认证类型

auth_pass 1111 #密码字串

}

virtual_ipaddress { #指定漂移地址,可以有多个

192.168.1.100

}

}

......................... #省略部分内容

确认上面配置无误后,然后启动keepalived服务,实际状态为MASTER的主服务器将为ens33接口自动添加VIP地址,通过ip命令可以查看(注意:ifconfig命令看不到)。

[root@lVS1 keepalived]# systemctl start keepalived #启动该服务

[root@lVS1 keepalived]# ip a show dev ens33 #查看ens33接口

2: ens33:

link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #可以看到VIP已经配置在ens33上。

valid_lft forever preferred_lft forever

inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute

valid_lft forever preferred_lft forever

2、配置备份服务器(LVS2):

在同一keepalived热备组内,所有服务器的keepalived配置文件基本相同,某些配置项也必

须相同,包括虚拟路由器的ID号、认证信息、漂移地址、心跳频率等,不同之处主要在于路

由器名称、热备状态、优先级。具体配置时需要注意以下几点:

服务器名称(route_id):建议为每个参与热备的服务器指定不同的名称。

热备状态(state):至少应有一台主服务器,将状态设置为MASTER;可以有多台备用的服务器,将状态设置为BACKUP。

优先级(priority):数值越大则取得VIP控制权的优先级就越高,因此主服务的优先级应设置为最高;其他备用服务器可依次递减,但不能相同,以免在争夺VIP控制权时发生冲突。

配置备用服务器时(可以有多台),可以直接将主服务器的keepa.conf文件复制过来,修改服务器名称、热备状态、优先级,这三项就可以了,哪怕是其中包含了一些web节点的配置,也不用修改,也不能修改。

[root@LVS2 ~]# systemctl stop firewalld #关闭防火墙

[root@LVS2 ~]# yum -y install keepalived ipvsadm #安装相关工具

[root@LVS2 ~]# scp root@192.168.1.1:/etc/keepalived/keepalived.conf /etc/keepalived/

#使用主服务器root用户将主服务器的keepalived配置文件复制过来。

root@192.168.1.1 s password: #输入主服务器root用户的密码

keepalived.conf 100% 3549 3.5MB/s 00:00

[root@LVS2 ~]# vim /etc/keepalived/keepalived.conf

global_defs {

...............

router_id LVS_DEVEL2 #修改这里的服务器名称

.....................

}

..............

vrrp_instance VI_1 {

state BACKUP #修改这里的状态,改为BACKUP

interface ens33 #若该服务器承载VIP的物理接口有变,则这里也要修改

virtual_router_id 51

priority 90 #修改优先级,要比主服务器低。

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.1.100

}

}

.................

#改动上述几行后,保存退出即可。

[root@LVS2 ~]# systemctl start keepalived #启动服务

[root@LVS2 ~]# systemctl enable keepalived #设置开机自启动

此时主服务器仍然在线,VIP地址实际上仍然由主服务器控制,其他服务器处于备份状态,因此在备用服务器中将不会为ens33接口添加VIP地址:

[root@LVS2 ~]# ip a show dev ens33 #查看ens33接口,不会看到VIP

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever

3、测试双机热备功能:

将主服务器关机,或停止keepalived服务,等待约15秒后,查看备份服务器的ens33网卡,会发现漂移地址已经转移过来了,说明双机热备功能生效。待主服务器开机后,漂移地址会自动转移回到主服务器上。

[root@localhost ~]# ip a show dev ens33 #主服务器关机后查看备份服务器的网卡信息

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #漂移地址已经转移过来了

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever

再将主服务器开机,会发现VIP已经转移回了主服务器,而备份服务器又查不到了VIP:

[root@LVS1 ~]# ip a show dev ens33 #在主服务器上进行查看

2: ens33:

link/ether 00:0c:29:77:2c:03 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.1/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.100/32 scope global ens33 #VIP地址在这里了

valid_lft forever preferred_lft forever

inet6 fe80::95f8:eeb7:2ed2:d13c/64 scope link noprefixroute

valid_lft forever preferred_lft forever

[root@LVS2 ~]# ip a show dev ens33 #在备份服务器上进行查看

2: ens33:

link/ether 00:0c:29:9a:09:98 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.2/24 brd 192.168.1.255 scope goute ens33

valid_lft forever preferred_lft forever

inet6 fe80::3050:1a9b:5956:5297/64 scope link noprefixroute

valid_lft forever preferred_lft forever

相关文章:

  • uni 获取本地文件_uni-app 接口 - 从本地相册选择图片或使用相机拍照
  • oracle 日期改字符格式_oracle中的日期格式及和字符转换
  • chrome切换前端模式_谷歌 Chrome 默认启用HTML5模式
  • payload sql注入_Web安全:SQL注入工具
  • java负数右移_Java中的左移时的负数问题
  • winapi属于底层开发吗_WinAPI简单入门
  • reflexil教程_教你使用 Reflexil 反编译.NET 转
  • dfs根目录_在活动目录中发布DFS 根目录
  • c# 遍历文件夹深度_C#遍历指定文件夹中的所有文件
  • stm32 通用bootloader_写了个通用的stm32串口bootloader
  • ios首次加载web_ios UIWebView 加载本地web 资源
  • rnss和rdss的应用_北斗RNSS/RDSS多模手持终端设计与实现
  • umi权限路由_Ant design pro v4-服务器菜单和路由权限控制
  • latex中表格怎么加标题_Latex中表格添加注释的方法
  • python云平台开发_AI 云平台 Python Flask 后端工程师 [全职]
  • HTTP中的ETag在移动客户端的应用
  • js ES6 求数组的交集,并集,还有差集
  • Next.js之基础概念(二)
  • React+TypeScript入门
  • react-native 安卓真机环境搭建
  • Solarized Scheme
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Zepto.js源码学习之二
  • Zsh 开发指南(第十四篇 文件读写)
  • 欢迎参加第二届中国游戏开发者大会
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 源码安装memcached和php memcache扩展
  • 06-01 点餐小程序前台界面搭建
  • 通过调用文摘列表API获取文摘
  • #Java第九次作业--输入输出流和文件操作
  • #QT(TCP网络编程-服务端)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (2020)Java后端开发----(面试题和笔试题)
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (简单) HDU 2612 Find a way,BFS。
  • (数据结构)顺序表的定义
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • *** 2003
  • .chm格式文件如何阅读
  • .gitignore文件—git忽略文件
  • .NET 8.0 中有哪些新的变化?
  • .net core 依赖注入的基本用发
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net MVC中使用angularJs刷新页面数据列表
  • .net wcf memory gates checking failed
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net6使用Sejil可视化日志
  • .NET中统一的存储过程调用方法(收藏)
  • .py文件应该怎样打开?