LVS+keepalived群集(双机热备效果测试) 您所在的位置:网站首页 双机集群的工作模式 LVS+keepalived群集(双机热备效果测试)

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

2023-12-21 19:14| 来源: 网络整理| 查看: 265

目录 1、Keepalived概述1.1、为什么要用Keepalived1.2、Keepalived工具介绍1.3、Keepalived实现原理剖析1.4、Keepalived安装与启动1.5、配置Keepalived master服务器1.6、配置Keepalived slave服务器1.7、Keepalived双机热备效果测试 2、实例:使用Keepalived搭建双机热备测试2.1、进入NFS服务器查看服务是否安装,并开启2.2、创建挂载源目录并编辑查看共享情况2.3、进入web1和web2安装apache服务,开启,并挂载2.4 、查看web服务器是否挂载成功2.5、服务器上编辑脚本2.6、配置调度器2.61、放入keepalived压缩包,安装编译工具与插件2.63、进行文件配置2.64、编写脚本 2.7、免密登录web2复制脚本2.8查看虚拟地址漂移2.9、查看主备LVS转换2.91、再次在LVS1上开启keepalived.service ,查看效果 2.10、打开网页查看调度

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 "This is server1." > /web1/index.html [root@nfs ~]# echo "This is server2." > /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 [email protected]:/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、打开网页查看调度

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有