8月17日上课内容 第三章 LVS+Keepalived群集

本章结构

8月17日上课内容 第三章 LVS+Keepalived群集_第1张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第2张图片

Keepalived概述

8月17日上课内容 第三章 LVS+Keepalived群集_第3张图片

 8月17日上课内容 第三章 LVS+Keepalived群集_第4张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第5张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第6张图片

keepalived 概述

1.服务功能

故障自动切换

健康检查

节点服务器高可用 HA

keepalived工作原理

8月17日上课内容 第三章 LVS+Keepalived群集_第7张图片


Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题
在一个LVS服务集群中通常有主服务器 (MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟:1主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

8月17日上课内容 第三章 LVS+Keepalived群集_第8张图片

VRRP
通信原理
VRRP就是虚拟路由几余协议,它的出现就是为了解决静态路由的单点故障
VRRP 是通过一种竞选一种协议机制来将路由交个某台VRRP路由器
VRRP 用IP多播的方式(多播地址224.0.0.18) 实现高可用之间的通信工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管主节点的资源,备节点可以有多个,通过优先级来进行竞选,但一般keepalived系统运维工作时对
VRRP使用加密协议加密数据,但keepalived官方目前还是推荐用明文的方式认证类型和密码

先了解VRRP 通信原理 再去了解keepalived 工作原理

8月17日上课内容 第三章 LVS+Keepalived群集_第9张图片

keepalived主要模块及其作用

8月17日上课内容 第三章 LVS+Keepalived群集_第10张图片

Keepalived体系主要模块及其作用:

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。

vrrp模块: 是来实现VRRP协议的。

check模块:负责健康检查,常见的方式有端口检查及URI检查。

8月17日上课内容 第三章 LVS+Keepalived群集_第11张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第12张图片

部署keepalived高可用集群

原理图:

8月17日上课内容 第三章 LVS+Keepalived群集_第13张图片

主DR 服务器:ens33(192.168.10.14) ipvsadm 、keepalived(热备) 虚拟IP:192.168.10.180  网卡 ens33:0
备DR 服务器:ens33(192.168.10.15) ipvsadm 、keepalived
虚拟IP:192.168.10.180  网卡 ens33:0
Web 服务器1:ens33 192.168.10.16
lo:0(VIP)192.168.10.180
Web 服务器2:ens33 192.168.10.17
lo:0(VIP)192.168.10.180
vip:192.168.10.188         
客户端:192.168.10.100

---------------------LVS 部署-------------------------


1.配置负载调度器(主、备相同)  (192.168.10.14、192.168.10.15)


systemctl stop firewalld.service
setenforce 0

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

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {                        #定义全局参数
--10行--修改,邮件服务指向本地
    smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
    router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
    #vrrp_strict
}

vrrp_instance VI_1 {                #定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致    
    virtual_router_id 10
    #nopreempt        #如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1                    #通告间隔秒数(心跳频率)
    authentication {                #定义认证信息,每个热备组保持一致
        auth_type PASS                #认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {                #指定群集vip地址
        192.168.10.180
    }
}

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.10.188 80 {
    delay_loop 6                    #健康检查的间隔时间(秒)
    lb_algo rr                        #指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50            #连接保持时间(秒)
    protocol TCP                    #应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.10.16 80 {
        weight 1                    #节点的权重
--45行--删除,添加以下健康检查方式        
        TCP_CHECK {
            connect_port 80            #添加检查的目标端口
            connect_timeout 3        #添加连接超时(秒)
            nb_get_retry 3            #添加重试次数
            delay_before_retry 3    #添加重试间隔
        }
    }

    real_server 192.168.10.17 80 {        #添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
##删除后面多余的配置##
}


192.168.10.14和15都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

重启网卡 systemctl restart network
ifup  ens33:0 


systemctl start keepalived
ip addr                        #查看虚拟网卡vip


(2)启动 ipvsadm 服务
--192.168.10.14---

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.10.188:80 -s rr
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.16:80 -g
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.17:80 -g


ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.10.15---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

(3)调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

主:192.168.10.14

8月17日上课内容 第三章 LVS+Keepalived群集_第14张图片

 8月17日上课内容 第三章 LVS+Keepalived群集_第15张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第16张图片

 8月17日上课内容 第三章 LVS+Keepalived群集_第17张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第18张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第19张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第20张图片

配置虚拟网卡

8月17日上课内容 第三章 LVS+Keepalived群集_第21张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第22张图片

启动 ipvsadm 服务

8月17日上课内容 第三章 LVS+Keepalived群集_第23张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第24张图片

备服务器:192.168.10.15

8月17日上课内容 第三章 LVS+Keepalived群集_第25张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第26张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第27张图片

为了区分主备,这里需要把备的优先级改的比主服务器小

8月17日上课内容 第三章 LVS+Keepalived群集_第28张图片

配置网卡:

8月17日上课内容 第三章 LVS+Keepalived群集_第29张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第30张图片

配置ipvsdm

8月17日上课内容 第三章 LVS+Keepalived群集_第31张图片

 8月17日上课内容 第三章 LVS+Keepalived群集_第32张图片

调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf

这一步主备的配置一样

8月17日上课内容 第三章 LVS+Keepalived群集_第33张图片

查看一下有没有虚拟ip地址

8月17日上课内容 第三章 LVS+Keepalived群集_第34张图片

8月17日上课内容 第三章 LVS+Keepalived群集_第35张图片

启动keepalived

2.配置节点服务器


systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.10.16---
echo 'this is kgc web!' > /var/www/html/index.html

--192.168.10.17---
echo 'this is benet web!' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.180 dev lo:0

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

web1: 192.168.10.16

8月17日上课内容 第三章 LVS+Keepalived群集_第36张图片

web2:192.168.10.17

8月17日上课内容 第三章 LVS+Keepalived群集_第37张图片

 
3.测试验证

在客户端访问 http://192.168.10.180/ 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

访问:

 

访问结果如上,证明可以正常轮询,可以访问页面

关闭主,再看一下备那边的情况:

虚拟ip(vip)地址到了web2这边,完成了抢占,代理主的功能

8月17日上课内容 第三章 LVS+Keepalived群集_第38张图片

继续访问,发现依旧可以正常访问网页

重启web1,web1进行抢占,重新恢复成主

8月17日上课内容 第三章 LVS+Keepalived群集_第39张图片

web2的虚拟ip(vip)地址就没有了 

8月17日上课内容 第三章 LVS+Keepalived群集_第40张图片

可以正常访问

8月17日上课内容 第三章 LVS+Keepalived群集_第41张图片

注:vip地址只有在哪个服务器做主的时候,vip地址才会跳到哪边

也就是一旦主挂了,备顶上,数据流向就往备走了,备代理主的功能作为主服务器

内容汇总

8月17日上课内容 第三章 LVS+Keepalived群集_第42张图片

补充:脑裂问题如何解决(掌握,工作中用得到)

问题点:

1、ping不通 中间链路断掉

2、服务器宕机了 挂掉了

8月17日上课内容 第三章 LVS+Keepalived群集_第43张图片

解决方法:

方法1、加中继线路

方法2、用shell脚本判断

方法3、直接重启服务器

8月17日上课内容 第三章 LVS+Keepalived群集_第44张图片

你可能感兴趣的:(lvs)