LVS - DR模式+Keepalived实现高可用

LVS - DR模式+Keepalived实现高可用(HAC)

前言

本文重点在于keepalived的实现原理,后面的Keepalived加LVS实现高可用的搭建实验能更加深刻的理解Keepalived的工作流程,如有遗漏之处,欢迎指正批评,谢谢。

基础理论概述

LVS - DR 模式概述

详细介绍与搭建见集群化知识整理与LVS - DR 模式集群搭建实验。

Keepalived实现原理

1. Keepalived案列分析

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

2. Keepalived工具概述

  • 转为LVS和HA设计的一款健康检查工具
  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Cheaking)
  • 官方网站 http://www.keepalived.org

3. 原理解析

  • Keepalived采用VRRP热备协议实现Linux服务器的多机热备功能
  • VRRP,虚拟路由冗余协议,是针对路由器的一种备份解决方案。
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务。
  • 每个热备组内同一时刻只有一台主路由器提供服务,其他路由器处于冗余状态。
  • 若当前在线等的路由器失败,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

实验步骤

实验目的:掌握搭建LVS - DR + Keepalived搭建流程

实验准备:4台C6标准虚拟机(selinux已关)

实验规划:

服务器角色 简称 IP地址
负载均衡调度器1 D1 192.168.10.10
负载均衡调度器2 D2 192.168.10.11
真实服务器1 RS1 192.168.10.12
真实服务器2 RS2 192.168.10.13

实验拓扑图

LVS - DR模式+Keepalived实现高可用_第1张图片

一、配置真实服务器

关闭网卡守护服务,此服务会与 network服务冲突。

service NetworkManager stop
chkconfig NetworkManager off

配置回环子接口

cd /etc/sysconfig/network-scripts/
cp -a ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0

修改网卡名称、IP地址、子网掩码。

DEVICE=lo:0
IPADDR=192.168.10.100
NETMASK=255.255.255.255

保存网卡信息,修改内核参数,声明arp行为。

vim /etc/sysctl.conf

#LVS_DR lo ARP
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

保存退出,刷新内核参数,启动回环网卡。

sysctl -p
ifup ifcfg-lo:0

添加路由规则,并使其开机自启。

route add -host 192.168.10.100 dev lo:0
route -n
echo "/sbin/route add -host 192.168.10.100 dev lo:0" >> /etc/rc.local

LVS - DR模式+Keepalived实现高可用_第2张图片

配置wed服务器,填写内容至网页文件并启动httpd服务。

yum install -y httpd
echo "123" >> /var/www/html/index.html
service httpd restart
curl localhost

真实服务器配置如上,不同真实服务器最好配置不同网页内容方便区分。

二、配置负载均衡调度器

关闭网卡守护服务,此服务会与 network服务冲突。

service NetworkManager stop
chkconfig NetworkManager off

配置负载集群访问IP(漂移IP)

cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0

修改网卡名称与IP地址,删除uuid与mac地址。

LVS - DR模式+Keepalived实现高可用_第3张图片

启动该网卡

ifup eth0:0
ip  a

LVS - DR模式+Keepalived实现高可用_第4张图片

修改内核参数,关闭网卡重定向功能,刷新内核参数。

vim /etc/sysctl.conf

#LVS_DR
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

sysctl -p

加载LVS模块,下载命令行管理工具。

modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

添加调度规则,保存调度规则。

ipvsadm -A -t 192.168.10.100:80 -s rr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.12:80 -g
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.13:80 -g
service ipvsadm save
chkconfig ipvsadm on
ipvsadm -Ln --stats

LVS - DR模式+Keepalived实现高可用_第5张图片

浏览器开启无痕模式进行访问测试

LVS - DR模式+Keepalived实现高可用_第6张图片

点击刷新

LVS - DR模式+Keepalived实现高可用_第7张图片

返回调度器查看出站入站数据包

ipvsadm -Ln --stats

LVS - DR模式+Keepalived实现高可用_第8张图片

负载均衡调度器搭建完毕。

三、配置keepalived

1.配置负载调度器1

在配置好的负载调度器上挂载镜像文件,将软件包移至指定位置。

cd
mkdir /mnt/iso
mount -o loop Keepalived.iso /mnt/iso/
cp -a /mnt/iso/* .

负载调度器1编译安装keepalived,负载调度器1将keepalived软件包传输至负载调度器2。

yum -y install kernel-devel openssl-devel popt-devel gcc*

tar -xf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-642.el6.x86_64/
make && make install

#将软件包传输至负载调度器2
cd
scp -r keepalived-1.2.2.tar.gz [email protected]:/root

编辑keepalived主配置文件

vim /etc/keepalived/keepalived.conf

编辑global_defs区域,只保留以下信息,该信息为主机名。

global_defs {
     
	router_id R1 #同一主从环境下主机名不能相同
} 

编辑vrrp_instance VI_1区域

vrrp_instance VI_1 {
     
    state MASTER         #设置节点状态
    interface eth0:0     #指定心跳监测网卡
    virtual_router_id 10 #设置组号
    priority 150         #优先值(权重)
    advert_int 1         #监测心跳间隔时间
    authentication {
     
        auth_type PASS   #密码加密方案
        auth_pass 1111	 #设定密码
    }
    virtual_ipaddress {
     
        192.168.10.100   #指定集群IP
    }
}

LVS - DR模式+Keepalived实现高可用_第9张图片

编辑virtual_server区域,只保留以下区域信息。

virtual_server 192.168.10.100 80 {
     
    delay_loop 1 # 健康检查间隔,检测后台真实服务器
    lb_algo rr   # 使用轮询调度算法
    lb_kind DR   # 指定群集模式
    protocol TCP # 指定使用协议

    real_server 192.168.10.12 80 {
      # 真实服务器区域
        weight 1 			 	 # 权重
        TCP_CHECK {
     				 # TCP监测区域
        	connect_port 80  	 # 监听端口
            connect_timeout 3 	 # 监测时间间隔
            nb_get_retry 3		 # 重启次数
            delay_before_retry 4 # 重启延时	
	}
		}
	 real_server 192.168.10.13 80 {
      # 真实服务器区域
        weight 1
        TCP_CHECK {
     
        	connect_port 80
            connect_timeout 3
            nb_get_retry 3
        }
    }
}

LVS - DR模式+Keepalived实现高可用_第10张图片

启动keepalived服务,查看

/etc/init.d/keepalived start
ip addr show

LVS - DR模式+Keepalived实现高可用_第11张图片

2.配置负载调度器2

关闭网卡守护服务,此服务会与 network服务冲突。

service NetworkManager stop
chkconfig NetworkManager off

负载调度器2也编译安装keepalived

yum -y install kernel-devel openssl-devel popt-devel gcc*

tar -xf keepalived-1.2.2.tar.gz
cd keepalived-1.2.2
./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-642.el6.x86_64/
make && make install

配置网卡

cd /etc/sysconfig/network-scripts/
cp -a ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0

修改网卡名称与IP地址,删除uuid与mac地址。

LVS - DR模式+Keepalived实现高可用_第12张图片

修改内核参数,关闭网卡重定向功能,刷新内核参数。

vim /etc/sysctl.conf

#LVS_DR
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

sysctl -p

启动网卡前,修改网卡启动脚本,否则网卡将无法正常启动。

vim /etc/sysconfig/network-scripts/ifup-eth

将247-251行注释

保存退出,启动网卡并查看状态。

ifup eth0:0
ifconfig

LVS - DR模式+Keepalived实现高可用_第13张图片

下载命令行管理工具

yum -y install ipvsadm

从负载调度器1处拉取keepalived配置至指定目录,编辑主配置文件。

scp [email protected]:/etc/keepalived/keepalived.conf /etc/keepalived/
vim /etc/keepalived/keepalived.conf

修改下图指定区域即可

LVS - DR模式+Keepalived实现高可用_第14张图片

保存退出,启动keepalived,查看当前调度规则。

/etc/init.d/keepalived start
ipvsadm -Ln --stats 

LVS - DR模式+Keepalived实现高可用_第15张图片

keepalived配置完毕,准备测试实验。

四、访问测试

1.模拟负载调度器宕机

将负载调度器1的网卡停止,模拟故障。

浏览器开启无痕模式进行访问。

LVS - DR模式+Keepalived实现高可用_第16张图片

负载调度器2查看出站入站数据

ipvsadm -Ln --stats 

LVS - DR模式+Keepalived实现高可用_第17张图片

负载调度器1宕机后,负载调度器2成功接替。

重新启动负载调度器1,浏览器刷新访问。再次查看负载调度器2出站入站数据。

LVS - DR模式+Keepalived实现高可用_第18张图片

无增长,负载调度器1查看出站入站数据。

LVS - DR模式+Keepalived实现高可用_第19张图片

负载调度器1再次接替。

2.模拟真实服务器宕机

任意一台停止apache服务

service httpd stop

返回负载调度器1查看

ipvsadm -Ln --stats

LVS - DR模式+Keepalived实现高可用_第20张图片

自动将真实服务器1踢出集群,再次启动真实服务器1。

service httpd start

LVS - DR模式+Keepalived实现高可用_第21张图片

启动后又将真实服务器1加入集群,LVS - DR模式+Keepalived实现高可用实验成功。

本文于2020年11月15日由Vonmerlot整理成文。

你可能感兴趣的:(linux集群化,linux,keepalived,运维,高可用,服务器)