LVS+keepalived群集(双机热备效果测试)

1、Keepalived概述

1.1、为什么要用Keepalived

■ 企业应用中,单台服务器承担应用存在单点故障的危险
■ 单点故障一旦发生,企业服务将发生中断,造成极大的危害

1.2、Keepalived工具介绍

■ 专为LVS和HA设计的一款健康检查工具
● 支持故障自动切换(Failover)
● 支持节点健康状态检查(Health Checking)

1.3、Keepalived实现原理剖析

■ Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
■ VRRP (虚拟路由冗余协议) 是针对路由器的一种备份解决方案

● 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
● 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
● 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

■ Keepalived可实现多机热备,每个热备组可有多台服务器

■ 双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器

1.4、Keepalived安装与启动

■ 在LVS群集环境中应用时,也需用到ipvsadm管理工具

■ YUM安装Keepalived

■ 启用Keepalived服务

1.5、配置Keepalived master服务器

■ Keepalived配置目录位于F/etc/keepalived/

■ keepalived.conf是主配置文件
● global_defs {…}区段指定全局参数
● vrrp_instance 实例名称{…}区段指定VRRP热备参数
● 注释文字以"!”符号开头
● 目录samples,提供了许多配置样例作为参考

■ 常用配置选项
● router_id HA_TEST_R1:本路由器(服务器)的名称
● vrrp instance VI_1 :定义VRRP热备实例
● state MASTER:热备状态,MASTER表示主服务器
● interface ens33 :承载VIP地址的物理接口
●virtual_router_id 1 :虚拟路由器的ID号,每个热备组保持一致

■ 常用配置选项
● priority 100:优先级数值越大优先级越高
●advert_int 1:通告间隔秒数(心跳频率)
●auth_type PASS:认证类型
●auth_pass 123456:密码字串
●virtual_ipaddress { vip}:指定漂移地址(VIP),可以有多个

1.6、配置Keepalived slave服务器

■ Keepalived备份服务器的配置与master的配置有三个选项不同
● router_id: 设为自有名称
● state:设为BACKUP
● priority:值低于主服务器

■ 其他选项与master相同

1.7、Keepalived双机热备效果测试

■ 测试双机热备的效果
● 主、备机均启用Web服务,设置不同内容
● 先后禁用、启用主服务器的网卡

2、实例:使用Keepalived搭建双机热备测试

测试设备配置:
调度器两台(双机热备)
IP地址:192.168.74.10(主)
IP地址:192.168.74.20(备)
web服务器两台
IP地址:192.168.74.30(WEB1)
IP地址:192.168.74.40(WEB2)
NFS服务器
IP地址:192.168.74.50
客户端电脑一台
IP地址:192.168.74.60

在这里插入图片描述

2.1、进入NFS服务器查看服务是否安装,并开启

[root@nfs ~]# rpm -qa | grep nfs             #查看是否安装NFS
[root@nfs ~]#  rpm -qa | grep rpcbind        #查看是否安装rpcbind

在这里插入图片描述

[root@nfs ~]# systemctl start nfs       #开启NFS
[root@nfs ~]# systemctl start rpcbind   #开启rpcbind
[root@nfs ~]# systemctl status nfs      #查看NFS状态
[root@nfs ~]# systemctl status rpcbind   #查看rpcbind状态

在这里插入图片描述

2.2、创建挂载源目录并编辑查看共享情况

[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1>This is server1.</h1>" > /web1/index.html
[root@nfs ~]# echo "<h1>This is server2.</h1>" > /web2/index.html
[root@nfs ~]# vi /etc/exports

在这里插入图片描述

[root@nfs ~]# showmount -e    #查看共享状况

在这里插入图片描述

2.3、进入web1和web2安装apache服务,开启,并挂载

[root@web1 ~]# yum -y install httpd
[root@web2 ~]# yum -y install httpd
[root@web1 ~]# systemctl start httpd
[root@web1 ~]# netstat -napt | grep 80

在这里插入图片描述

[root@web2 ~]# systemctl start httpd
[root@web2 ~]# netstat -anpt | grep 80

在这里插入图片描述

[root@web1 ~]# mount 192.168.74.50:/web1 /var/www/html    #进行挂载
[root@web1 ~]# df -Th                                     #查看挂载

在这里插入图片描述

[root@web2 ~]# mount 192.168.74.50:/web2 /var/www/html
[root@web2 ~]# df -Th

在这里插入图片描述

2.4 、查看web服务器是否挂载成功

[root@web1 ~]# showmount -e 192.168.74.50

在这里插入图片描述

[root@web1 ~]# curl http://localhost       #本地访问

在这里插入图片描述

[root@web2 ~]# showmount -e 192.168.74.50

在这里插入图片描述

[root@web2 ~]# curl http://localhost

在这里插入图片描述

2.5、服务器上编辑脚本

[root@web1 ~]# vi web1.sh
#!/bin/bash
#lvs web1
ifconfig lo:0 192.168.74.100 broadcast 192.168.74.100 netmask 255.255.255.255 up
route add -host 192.168.74.100 dev lo:0
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p &> /dev/null
[root@web1 ~]# sh web1.sh
[root@web1 ~]# ifconfig
[root@web1 ~]# route -n

在这里插入图片描述

[root@web2 ~]# vi web2.sh
[root@web2 ~]# sh web2.sh
[root@web2 ~]# ifconfig
[root@web2 ~]# route -n

在这里插入图片描述

2.6、配置调度器

[root@lvs1 ~]# modprobe ip_vs
[root@lvs1 ~]# cat /proc/net/ip_vs

在这里插入图片描述

[root@lvs1 ~]# yum -y install ipvsadm
[root@lvs2 ~]# modprobe ip_vs                    #加载modprobe ip_vs模块
[root@lvs2 ~]# cat /proc/net/ip_vs
[root@lvs2 ~]# yum -y install ipvsadm

在这里插入图片描述

2.61、放入keepalived压缩包,安装编译工具与插件

[root@lvs1 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
[root@lvs2 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel
[root@lvs1 ~]# tar zxvf keepalived-2.0.13.tar.gz 
[root@lvs2 ~]# tar zxvf keepalived-2.0.13.tar.gz 
[root@lvs1 ~]# cd keepalived-2.0.13/
[root@lvs1 keepalived-2.0.13]# ls -lh

在这里插入图片描述

2.63、进行文件配置

[root@lvs1 keepalived-2.0.13]# ./configure --prefix=/   #配置
[root@lvs1 keepalived-2.0.13]# make && make install     #编译与安装
[root@lvs1 keepalived-2.0.13]# cd keepalived/
[root@lvs1 keepalived]# cd etc/init.d
[root@lvs1 init.d]# cp keepalived /etc/init.d/
[root@lvs1 ~]# systemctl enable keepalived.service   #设置开机自启动

2.64、编写脚本

[root@lvs1 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
     router_id lvs_01
}
vrrp_instance vi_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 110
    advert_int 1
    authentication {
          auth_type PASS
          auth_pass 6666
    }
     virtual_ipaddress {
         192.168.74.100
}
}
virtual_server 192.168.74.100 80 {
     delay_loop 6
     lb_algo rr
     lb_kind DR
     persistence_timeout 6
     protocol TCP
real_server 192.168.74.30 80 {
     weight 1
     TCP_CHECK {
         connect_port 80
         connect_timeout 3
         nb_get_retry 3
         delay_before_retry 3
      }
}
real_server 192.168.74.40 80 {
     weight 1
     TCP_CHECK {
         connect_port 80
         connect_timeout 3
         nb_get_retry 3
         delay_before_retry 3
      }
}

}
[root@lvs1 ~]# systemctl start keepalived.service  #启动服务
[root@lvs1 ~]# ipvsadm -Ln

在这里插入图片描述

[root@lvs2 ~]# cd keepalived-2.0.13/
[root@lvs2 keepalived-2.0.13]# ./configure --prefix=/
[root@lvs2 keepalived-2.0.13]# make && make install
[root@lvs2 keepalived-2.0.13]# cp keepalived/etc/init.d/keepalived /etc/init.d/
[root@lvs2 keepalived-2.0.13]# systemctl enable keepalived.service

2.7、免密登录web2复制脚本

[root@lvs1 ~]# ssh-keygen -t rsa
[root@lvs1 ~]# ssh-copy-id 192.168.74.20
[root@lvs1 ~]# scp /etc/keepalived/keepalived.conf  root@192.168.74.20:/etc/keepalived/
[root@lvs2 keepalived-2.0.13]# cd
[root@lvs2 ~]# vi /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
     router_id lvs_01           #本服务器名称
}
vrrp_instance vi_1 {            #定义VRRP热备实例
    state MASTER                #热备状态MASTER表示主服务器,backup表示从服务器
    interface ens33             #承载VIP地址的物理接口
    virtual_router_id 51        #虚拟路由器的ID号,每个热备组保持一致
    priority 110                #优先级,数值越大,优先级越高
    advert_int 1                #报告间隔秒数(心跳频率)
    authentication {            #热备认证信息,每个热备组保持一致
          auth_type PASS        #认证类型
          auth_pass 6666        #密码字符串
    }
     virtual_ipaddress {        #指定漂移地址VIP,可以有多个
         192.168.74.100
! Configuration File for keepalived
global_defs {
     router_id lvs_02
}
vrrp_instance vi_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 105
    advert_int 1
    authentication {
          auth_type PASS
          auth_pass 6666
    }
     virtual_ipaddress {
         192.168.74.100
}
}
virtual_server 192.168.74.100 80 {     #虚拟服务器地址,端口
     delay_loop 6                      #健康检查的间隔时间秒数         
     lb_algo rr                        #轮询rr调度算法
     lb_kind DR                        #直接路由群集群集工作模式
     persistence_timeout 6             #链接保持时间
     protocol TCP                      #应用服务器采用的TCP协议
real_server 192.168.74.30 80 {         #第一个web服务器节点的地址,端口
     weight 1                          #节点的权重
     TCP_CHECK {                       #健康检查方式
         connect_port 80               #检查的目标端口
         connect_timeout 3             #连接超时
         nb_get_retry 3                #重试次数
         delay_before_retry 3          #重试间隔
      }
}
real_server 192.168.74.40 80 {       #第二个web服务器节点的地址,端口
     weight 1
     TCP_CHECK {
         connect_port 80
         connect_timeout 3
         nb_get_retry 3
         delay_before_retry 3
      }
}

} 
[root@lvs2 ~]# systemctl start keepalived.service
[root@lvs2 ~]# systemctl status keepalived.service

在这里插入图片描述

2.8查看虚拟地址漂移

[root@lvs1 ~]# ip addr

在这里插入图片描述

[root@lvs2 ~]# ip addr

在这里插入图片描述

[root@lvs2 ~]# ipvsadm -Ln

在这里插入图片描述

2.9、查看主备LVS转换

[root@lvs1 ~]# systemctl stop keepalived.service    #断掉主LVS
[root@lvs2 ~]# tail -f /var/log/messages

在这里插入图片描述

[root@lvs2 ~]# ip addr

在这里插入图片描述

2.91、再次在LVS1上开启keepalived.service ,查看效果

[root@lvs1 ~]# systemctl start keepalived.service
[root@lvs1 ~]# ip addr

在这里插入图片描述

2.10、打开网页查看调度

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值