利用keepalived可以实现对linux服务器的高可用性,即主从备份,一台线上服务器出故障另外一台服务器顶替它,当出故障的服务器恢复时又自动转换成主服务器,顶替它的服务器再次转换为备胎,当主服务器宕机、主服务器网卡坏掉、甚至主服务器服务挂掉(要用脚本监控实现转换)都可以自动切换到从服务器,下面针对这三种故障进行模拟。

实验环境:2台rhel5.6,keepalived-1.1.20.tar.gz

实验过程:

本实验以web服务为例,两台linux都安装Apache服务。

配置yum源,做准备工作,因为本次模拟的是主从备份,所以除了keepalived配置文件有区别外其他配置均相同。在实验前,将selinux和防火墙都关掉。

主服务器配置:

[root@web1_master ~]# yum install gcc gcc-c++ openssl-devel httpd kernel-devel -y

[root@web1_master ~]# echo "master" > /var/www/html/index.html

[root@web1_master ~]# tar zxf keepalived-1.1.20.tar.gz

[root@web1_master ~]# cd keepalived-1.1.20/

#./configure --sysconf=/etc/ --with-kernel-dir=/usr/src/kernels/2.6.18-238.el5-i686/

#make &&make install

#cp /usr/local/sbin/keepalived /usr/sbin/

[root@web1_master ~]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

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_DEVEL

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.65.65

}

}

####将keepalived.conf配置文件修改成以上配置,即修改虚拟地址为192.168.65.65,这个虚拟地址是虚拟不存在的,用户在访问网页的时候访问的就是这个虚拟地址,本配置文件要注意修改服务器的主从状态、优先级、组id以及虚拟ip,还可以修改Email地址通知自己等。

# service keepalived start

# service httpd start

# chkconfig --add httpd

# chkconfig --add keepalived

# chkconfig httpd on

# chkconfig keepalived on

从服务器配置:

[root@web1_slave keepalived]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

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_DEVEL

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.65.65

}

}

#####从服务器keepalived.conf的主配置文件,优先级改为比主的优先级(100)小,这里是90.

# echo "slave" > /var/www/html/index.html

######其他配置内容和主服务器相同

当主服务器宕机或是网卡出问题,从服务器都会取代它变成主服务器

上图是当主服务器网卡重启时,在从服务器日志记录上显示从服务器先是切换成主服务器,后又切换成从服务器。

当web站点挂了时,还想让从服务器自动切换成主服务器就需要脚本来执行。

下面新建一个脚本,名叫check_httpd.sh ,其位置都放在主从服务器的/etc/keepalived/下面,(主从服务器使用相同的脚本,脚本放的位置也都相同,在keepalived.conf修改的地方、内容也都相同)

下面是check_httpd.sh 脚本的内容

[root@web1_master keepalived]# cat check_httpd.sh

#!/bin/bash

CHECK_TIME=2

check()

{

curl http://127.0.0.1/ >/dev/null 2>&1

ret=$?

if [ $ret -ne 0 ];then

return $ret;

fi

}

while [ $CHECK_TIME -ne 0 ]

do

let "CHECK_TIME -= 1"

check

HTTP_OK=$?

if [ $HTTP_OK -eq 0 ];then

exit 0

fi

if [ $HTTP_OK -ne 0 ] &&  [ $CHECK_TIME -eq 0 ]

then

exit 1

fi

done

修改主服务器keepalived.conf配置文件,结果如下:

[root@web1_master keepalived]# cat keepalived.conf

! Configuration File for keepalived

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_DEVEL

}

vrrp_script check_http {

script "/etc/keepalived/check_httpd.sh"

weight -5

interval 1

}

vrrp_instance VI_1 {

state MASTER

interface eth0

virtual_router_id 51

priority 100

advert_int 1

track_script {

check_http

}

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.65.65

}

}

修改从服务器keepalived.conf配置文件,结果如下:

[root@web1_slave keepalived]# cat keepalived.conf

! Configuration File for keepalived

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_DEVEL

}

vrrp_script check_http {

script "/etc/keepalived/check_httpd.sh"

weight -5

interval 1

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 51

priority 90

advert_int 1

track_script {

check_http

}

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.65.65

}

}

分别重启两台服务器的keepalived服务

#service keepalivedrestart

到这里,如果主服务器的web程序出现故障,则从服务器会在1秒钟后自动切换成主服务器,当主服务器恢复时,从服务器会自动切换成备胎,主服务器依然是主服务器。

至此,linux高可用性(HA_keepalived)配置完成。

linux 软件备份 主从,linux高可用(HA)keepalived 主从备份相关推荐

  1. 路由器snmp配置_基于keepalived配置数据库主从实现高可用

    基于keepalived配置数据库主从实现高可用 使用keepalived来监听端口,实现数据库的高可用.实现效果,其中一台数据库服务器突然出故障或关机时,应该不影响应用正常运行,等待服务器启动之后, ...

  2. Windows环境下安装HBase(Hadoop3.1.3、HBase2.2.5)与Linux环境下搭建HBase高可用集群

    Windows环境下安装HBase 下载HBase 官网: https://hbase.apache.org/downloads.html 不同版本集合:https://archive.apache. ...

  3. Hadoo集群--高可用HA配置(两台主机)

    目录 1 Hadoop HA架构详解 1.1 HDFS HA背景 1.2 HDFS HA架构 1.3 HDFS HA配置要素 1.4 HDFS HA配置参数 1.5 HDFS自动故障转移 1.6 YA ...

  4. Web应用的负载均衡、集群、高可用(HA)解决方案整理总结

    一.涉及到的几个组件 1.1.apache      -- 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支 ...

  5. 高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制)

    高性能高可用MySQL(主从同步,读写分离,分库分表,去中心化,虚拟IP,心跳机制) 视频地址:https://www.bilibili.com/video/BV1ry4y1v7Tr?p=8& ...

  6. 微服务治理 高可用 HA (High Availability) 的一些理解

    文章目录 微服务治理 高可用 HA (High Availability) 的一些理解 1.简介 2.Nginx 高可用 3.站点层的高可用 4.服务层 Service 的高可用 5.缓存层的高可用 ...

  7. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  8. web应用的负载均衡、集群、高可用(HA)解决方案

    web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...

  9. sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库

    原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...

  10. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案

    浅谈web应用的负载均衡.集群.高可用(HA)解决方案 转载于:https://www.cnblogs.com/hfultrastrong/p/7887420.html

最新文章

  1. expect实现自动登录
  2. delphi存取图片
  3. 人人都是 DBA(X)资源信息收集脚本汇编
  4. “你的手机上未安装应用程序”的解决方案
  5. 解决:未能将管道连接到虚拟机: 所有的管道范例都在使用中。
  6. keyProperty=“id“ 和useGeneratedKeys=“true“作用
  7. C++语言vector容器介绍和示例
  8. Saltstack之自定义grains
  9. 解决Access to Message Queuing system is denied.权限问题
  10. UNITY3d在移动设备上的一些优化实战(一)-概述
  11. 关于DSP数字信号处理技术
  12. SketchUp2020下载SketchUp2020下载安装SketchUp草图大师2020下载安装详细教程
  13. 真正靠谱免费的数据恢复软件哪个好用?
  14. VScode输入感叹号时,没有出现模板
  15. 浏览器提示代理服务器没有响应
  16. panda经典四道题期末考核分享
  17. Android 实现SKU选择通用方式
  18. [USACO1.3]虫洞wormhole
  19. AutoLeaders控制组—51单片机学习笔记(LED控制、独立按键、数码管)
  20. java计算机毕业设计高考报考指南网站源码+mysql数据库+系统+lw文档+部署

热门文章

  1. Java面试题- java变量命名
  2. 华擎、映泰主板的网络唤醒(WOL)实例
  3. 论文阅读《Defining Pseudorange Integrity – Overbounding》
  4. 怎样用cmd创建Windows计划任务
  5. java弹弓类游戏_Android cocos2d 弹弓游戏 Catapult 源代码
  6. OSS绑定自定义域名(基于阿里云)
  7. 步进电机控制与LCD显示L297与L298
  8. 信息论基础(包含最大熵模型)
  9. 4.1 Beamer海报
  10. Spring Security 详解与实操第一节 认证体系与密码安全