欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

解析LVS和Keepalived协同合作群集部署

程序员文章站 2022-06-19 17:24:38
Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能———判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集中。...


前言

Keepalived起初是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换和健康检查功能———判断LVS负载调度器,节点服务器的可用性,及时隔离并替换为新的服务器,当故障主机恢复后将其重新加入群集中。


一 Keepalived

1.1 Keepalived运用分析

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

1.2 Keepalived工具介绍

专为LVS和HA设计的一款健康检查工具

作用:

支持故障自动切换(Failover)
支持节点健康状态检查(Health Checking)

1.3 Keepalived实现原理剖析

Keepalived采用VRRP热备份协议
实现Linux服务器的多机热备份功能

1.3.1 VRRP

VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案

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

解析LVS和Keepalived协同合作群集部署

1.4 Keepalived讲解

1.Keepalived可实现多机热备,每个热备组可有多台服务器
2.双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
3.实现基于Web服务的双机热备

解析LVS和Keepalived协同合作群集部署

1.5 Keepalived安装与启动

1.在LVS群集环境中应用时,也需用到ipvsadm管理工具
2.YUM安装Keepalived
3.启用Keepalived服务

1.6 配置Keepalived master服务器

1.Keepalived配置目录位于/etc/keepalived

2.keepalived.conf是主配置文件

global_defs{...}区段指定全局参数
vrrp_instance实例名称{...}区段指定VRRP热备参数)(组1,组2)
注释文字以“!”符号开头
目录samples,提供了许多配置样例作为参考

3.常用配置选项

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:通告间隔秒数(心跳频率)(1秒)
auth_type PASS:认证类型
auth_pass 123456:密码字串
virtaul_ipaddress{vip}:指定漂移地址(VIP),可以有多个

1.7 配置Keepalived slave服务器

1.Keepalived备份服务器的配置与master的配置有三个选项不同

router_id:设为自有名称
state:设为BACKUP
priority:值低于主服务器

2.其它选项与master相同

二 部署LVS和Keepalived协同合作群集

2.1 部署Keepalived显示双机热备效果

2.1.1 如何显示双机热备的效果

主,备机均启用Web服务,设置不同内容
先后禁用,启用主服务器的网卡(主服务器down,测试主备)
针对节点服务器同理进行操作

2.2 环境准备

2.2.1 设备明细

20.0.0.10 lvs1+keepalived  virtual-ip 20.0.0.200
20.0.0.11 lvs2+keepalived  virtual-ip 20.0.0.200
20.0.0.12 web1
20.0.0.13 web2
20.0.0.14 nfs
20.0.0.15 client

2.2.2 所有设备重命名

[root@server1 ~]# hostnamectl set-hostname lvs01
[root@server1 ~]# bash

[root@server2 ~]# hostnamectl set-hostname lvs02
[root@server2 ~]# bash

[root@client1 ~]#  hostnamectl set-hostname web1
[root@client1 ~]# bash

[root@server1 ~]#  hostnamectl set-hostname web2
[root@server1 ~]# bash

[root@localhost ~]# hostnamectl set-hostname nfs
[root@localhost ~]# bash

[root@server6 ~]# hostnamectl set-hostname client
[root@server6 ~]# bash

2.3 部署流程

2.3.1 在nfs存储服务器上

1.配置共享目录,并创建两个网页作为web1,web2的页面

[root@nfs ~]# mkdir /web1
[root@nfs ~]# mkdir /web2
[root@nfs ~]# echo "<h1>this is apple lvs1.</h1>" > /web1/index.html
[root@nfs ~]# echo "<h1>this is apple lvs2.</h1>" > /web2/index.html

2.查看软件是否安装

[root@nfs ~]# rpm -qa | grep nfs-utils
[root@nfs ~]# rpm -qa | grep rpcbind

3.配置文件

[root@nfs ~]# vi /etc/exports 
[root@nfs ~]# systemctl restart rpcbind    服务启动
[root@nfs ~]# systemctl restart nfs

/web1 20.0.0.12 (ro)
/web2 20.0.0.13 (ro)     

解析LVS和Keepalived协同合作群集部署
4.查看共享情况

[root@nfs ~]# showmount -e

解析LVS和Keepalived协同合作群集部署

2.3.2 在web1,web2节点服务器上

1.安装软件

[root@web1 ~]# yum -y install httpd
[root@web2 ~]# yum -y install httpd

2.挂载到nfs存储服务器上

[root@web1 ~]# mount 20.0.0.14:/web1 /var/www/html/
[root@web1 ~]# df -Th  查看挂载情况
[root@web1 ~]# systemctl start httpd   服务启动
[root@web1 ~]# curl http://localhost   测试网页

解析LVS和Keepalived协同合作群集部署
在web2上

[root@web2 ~]# mount 20.0.0.14:/web2 /var/www/html/
[root@web2 ~]# df -Th
[root@web2 ~]# systemctl start httpd
[root@web2 ~]# curl http://localhost

解析LVS和Keepalived协同合作群集部署

在wed1节点服务器上
配置脚本

[root@web1 ~]# vi web1.sh
[root@web1 ~]# sh web1.sh  脚本启动
[root@web1 ~]# ifconfig 查看虚拟接口
[root@web1 ~]# route -n    查看增加的路由

#!/bin/bash
# lvs web1                广播地址             子网掩码
ifconfig lo:0 20.0.0.200 broadcast 20.0.0.200 netmask 255.255.255.255 up    立即启用
route add -host 20.0.0.200 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   加载生效,并在屏幕中输出不显示

解析LVS和Keepalived协同合作群集部署
解析LVS和Keepalived协同合作群集部署

解析LVS和Keepalived协同合作群集部署
在web2上同理

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

解析LVS和Keepalived协同合作群集部署
解析LVS和Keepalived协同合作群集部署

解析LVS和Keepalived协同合作群集部署

2.3.3 在lvs1 主调度器

1.确认内核对LVS的支持,手动加载

[root@lvs01 ~]# modprobe ip_vs 对ip_vs的探测加载
[root@lvs01 ~]# cat /proc/net/ip_vs  查看基本信息
[root@lvs01 ~]# yum -y install ipvsadm   安装软件

解析LVS和Keepalived协同合作群集部署
先添加keepalived-2.0.13.tar.gz
开始配置keepalived
2.安装依赖包

[root@lvs01 ~]# yum -y install gcc gcc-c++ make popt-devel kernel-devel openssl-devel

解析LVS和Keepalived协同合作群集部署

3.解压缩软件

[root@lvs01 ~]# tar zxvf keepalived-2.0.13.tar.gz 
[root@lvs01 ~]# cd keepalived-2.0.13/  进入配置编译安装
[root@lvs01 keepalived-2.0.13]# ./configure --prefix=/    配置
[root@lvs01 keepalived-2.0.13]# make && make install   编译安装

[root@lvs01 keepalived-2.0.13]# ls -lh
[root@lvs01 keepalived-2.0.13]# cd keepalived/  
[root@lvs01 keepalived]# cd etc/init.d/
[root@lvs01 init.d]# cp keepalived /etc/init.d/  复制文件
[root@lvs01 init.d]# cd
[root@lvs01 ~]# systemctl enable keepalived.service     设置开机自启动

解析LVS和Keepalived协同合作群集部署

4.编辑配置文件

[root@lvs01 ~]# vi /etc/keepalived/keepalived.conf 
[root@lvs01 ~]# systemctl start keepalived.service  启动服务
[root@lvs01 ~]# ip addr  查看虚拟地址,存在主调度器上

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          优先级,数值越大越优先级越高,默认100
      advert_int 1          通告间隔秒数(心跳频率)
      authentication {      热备认证信息,每个热备组保持一致
           auth_type PASS   认证类型(密码认证)
           auth_pass 6666   密码字符串
 }
virtual_ipaddress {         指定漂移地址(VIP),虚拟地址,可以有多个
      20.0.0.200
}
}
virtual_server 20.0.0.200 80 {   虚拟服务器地址(VIP),端口
      lb_algo rr                 轮询(rr)调度算法
      lb_kind DR                 直接路由(DR)群集工作模式
      persistence_timeout 6      连接保持时间6秒
      protocol TCP               应用服务器采用的是TCP协议
real_server 20.0.0.12 80 {       第一个Web服务器节点的地址,端口(真实地址)
      weight 1                   节点的权重
      TCP_CHECK {                健康检查方式
          connect_port 80        检查的目标端口
          connect_timeout 3      连接超时(秒)
          nb_get_retry 3         重试次数
          delay_before_retry 3   重试间隔
   }
}
real_server 20.0.0.13 80 {       第二个Web服务器节点的地址,端口(真实地址)
      weight 1
      TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
   }
}
}

解析LVS和Keepalived协同合作群集部署
解析LVS和Keepalived协同合作群集部署

解析LVS和Keepalived协同合作群集部署

5.查看日志文件中的参数变化

[root@lvs01 ~]# vi /var/log/messages
[root@lvs01 ~]# tail -100 /var/log/messages
[root@lvs01 ~]# ipvsadm -Ln  查看后台调度情况

解析LVS和Keepalived协同合作群集部署
解析LVS和Keepalived协同合作群集部署

2.3.4 在lvs2备调度器上

完成基础配置安装

[root@lvs02 keepalived-2.0.13]# cd keepalived/
[root@lvs02 keepalived]# cd etc/init.d/
[root@lvs02 init.d]# ls -lh
[root@lvs02 init.d]# cp keepalived /etc/init.d/

解析LVS和Keepalived协同合作群集部署

在lvs1服务器上

6.免密

[root@lvs01 ~]# ssh-keygen -t rsa
[root@lvs01 ~]# ssh-copy-id 20.0.0.11

解析LVS和Keepalived协同合作群集部署
7.拷贝文件

[root@lvs01 ~]# scp /etc/keepalived/keepalived.conf root@20.0.0.11:/etc/keepalived/

解析LVS和Keepalived协同合作群集部署

2.3.3.1 解析:scp命令:远程完全复制

格式1:在客户机20.0.0.11上

scp root@20.0.0.12:/opt/a /root

拷贝用户名为root,ip地址为20.0.0.12设备上opt目录下a文件到本机root目录下

格式2:在服务器20.0.0.12上

scp /opt/b root@20.0.0.11:/root

拷贝本机上的opt目录下的b文件到用户名root,ip地址20.0.0.11设备上的root目录下

在lvs2 服务器上
1.编辑配置文件

[root@lvs02 ~]# vi /etc/keepalived/keepalived.conf 
修改参数
 router_id lvs_02   服务器名称
state BACKUP                         热备状态,从服务器
 priority 105                              优先级

[root@lvs02 ~]# systemctl start keepalived.service   启动服务
[root@lvs02 ~]# systemctl status keepalived.service   查看服务状态

解析LVS和Keepalived协同合作群集部署

解析LVS和Keepalived协同合作群集部署
2.查看地址信息

[root@lvs02 ~]# ip addr
发现无虚拟地址信息,主备调度器之间存在差异
[root@lvs02 ~]# ipvsadm -Ln   查看调度信息

解析LVS和Keepalived协同合作群集部署

2.4 部署检验

2.4.1 调度器工作情况

在lvs01上

[root@lvs01 ~]# ipvsadm -Ln  查看连接情况

在浏览器上
http://20.0.0.200

解析LVS和Keepalived协同合作群集部署

[root@lvs01 ~]# ipvsadm -Ln   查看连接情况
[root@lvs01 ~]# ipvsadm -Lnc  查看调度情况

解析LVS和Keepalived协同合作群集部署

在客户机client浏览器上
http://20.0.0.200
解析LVS和Keepalived协同合作群集部署

[root@lvs01 ~]# ipvsadm -Lnc
[root@lvs01 ~]# ipvsadm -Ln  查看连接情况

解析LVS和Keepalived协同合作群集部署
以上现象证明调度器正常工作

2.4.2 测试主备自动转换功能

当主出现问题,备是否会自动代替工作
在lvs01上

[root@lvs01 ~]# systemctl stop keepalived.service 关闭keepalived服务
[root@lvs01 ~]# ip addr  查看地址

发现虚拟地址消失

解析LVS和Keepalived协同合作群集部署
在lvs02上
查看日志文件

[root@lvs02 ~]# tail -f /var/log/messages
[root@lvs02 ~]# ip addr 查看地址信息

发现虚拟地址出现,备转换为主

解析LVS和Keepalived协同合作群集部署
再次在浏览器上
http://20.0.0.200
查看调度器是否正常工作
解析LVS和Keepalived协同合作群集部署

解析LVS和Keepalived协同合作群集部署

在lvs02上
查看调度情况

[root@lvs02 ~]# ipvsadm -Lnc

解析LVS和Keepalived协同合作群集部署

2.4.3 模拟Web2节点出现问题down后,调度情况

在web2上
关闭服务

[root@web2 ~]# systemctl stop httpd

在lvs02上
查看日志文件

[root@lvs02 ~]# tail -f /var/log/messages
[root@lvs02 ~]# ipvsadm -Ln  查看连接情况

解析LVS和Keepalived协同合作群集部署

再次在浏览器上
http://20.0.0.200
只会出现web1的页面
解析LVS和Keepalived协同合作群集部署
解析LVS和Keepalived协同合作群集部署
查看调度情况

[root@lvs02 ~]# ipvsadm -Lnc   

解析LVS和Keepalived协同合作群集部署

2.4.4 问题设备修复,重新上线

lvs01主调度问题恢复,重新上线

1.在lvs01上
服务重启

[root@lvs01 ~]# systemctl start keepalived.service 
[root@lvs01 ~]# ip addr 查看地址

解析LVS和Keepalived协同合作群集部署
2.web2节点恢复上线

在web2上

[root@web2 ~]# systemctl start httpd

3.查看lvs01上连接情况先后对比

[root@lvs01 ~]# ipvsadm -Ln

解析LVS和Keepalived协同合作群集部署


总结

通过以上的学习了解,对群集的结构,配置,原理又有了新的认识,掌握的新的知识。

本文地址:https://blog.csdn.net/weixin_50345481/article/details/110943268