其他分享
首页 > 其他分享> > LVS+Keepalived 高可用群集

LVS+Keepalived 高可用群集

作者:互联网

LVS+Keepalived 高可用群集

目录

keepalived工具介绍

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

判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup 节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。

Keepalived实现原理剖析

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

VRRP(虚拟路由冗余协议)

VRRP 相关术语

虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC (00-00-5e-00-01-VRID)
物理路由器:
master:主设备
backup:备用设备
priority:优先级
虚拟路由器的主备 是由priority:优先级决定的

VRRP工作过程

当Master设备出现故障后怎么办?

Master设备故障后恢复的时候会怎么样?

Keepalived案例讲解

Keeplived及其工作原理

Keepalived体系主要模块及其作用

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

LVS+Keepalived 高可用群集

结构图

主DR 服务器:192.168.239.10
备DR 服务器:192.168.239.50
Web 服务器1:192.168.239.20
Web 服务器2:192.168.239.30
vip:192.168.239.100
NFS服务器:192.168.239.40
客户端:192.168.239.200

配置nfs共享服务器(192.168.239.40)

#关闭防火墙关闭开机自启
systemctl disable --now firewalld
setenforce 0
#创建两个共享目录文件便于区分并添加权限
mkdir nfs
cd nfs/
mkdir geng  wang
chmod 777 geng/ wang/
echo "this is geng test">geng/index.html
echo "this is wang test">wang/index.html
#编辑配置文件设置共享策略
vim /etc/exports
/opt/nfs/geng 192.168.239.0/24(rw,sync,no_root_squash)
/opt/nfs/wang 192.168.239.0/24(rw,sync,no_root_squash)
#开启服务
systemctl start rpcbind
systemctl start nfs
systemctl enable nfs
#查看共享目录
showmount -e

配置两台节点web服务器(192.168.239.20、192.168.239.30 )

第一台节点服务器(192.168.239.20)

#关闭防火墙
systemctl disable --now firewalld
setenforce 0
#安装httpd服务
yum install -y httdp
#添加虚拟网卡承载vip地址
cd /etc/sysconfig/network-scripts/ #切换到网卡配置文件目录
cp ifcfg-lo ifcfg-lo:0  #复制原有网卡配置进行修改
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.239.100  #修改为vip地址
NETMASK=255.255.255.255  #修改子网掩码
ONBOOT=yes
ifup lo:0    #启动网卡
ifconfig     #查看活动网卡
#添加路由见虚拟网卡设置为路由
route add -host 192.168.239.100 dev lo:0
route -n   #查看
#将设置路由命令添加到开机执行配置文件内相当于开机自启并给配置文件添加执行权限
vim /etc/rc.d/rc.local
route add -host 192.168.239.100 dev lo:0
chmod +x /etc/rc.d/rc.local
#调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
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
#开启web服务
systemctl restart httpd
#查看nfs共享服务器共享策略
showmount -e 192.168.239.40
#将共享目录挂载到本地web服务器站点给目录
mount 192.168.239.40:/opt/nfs/geng /var/www/html/
df -h 

第二台节点服务器(192.168.239.30)

#关闭防火墙
systemctl disable --now firewalld
setenforce 0
#安装httpd服务
yum install -y httdp
#添加虚拟网卡承载vip地址
cd /etc/sysconfig/network-scripts/ #切换到网卡配置文件目录
cp ifcfg-lo ifcfg-lo:0  #复制原有网卡配置进行修改
vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.239.100  #修改为vip地址
NETMASK=255.255.255.255  #修改子网掩码
ONBOOT=yes
ifup lo:0    #启动网卡
ifconfig     #查看活动网卡
#添加路由见虚拟网卡设置为路由
route add -host 192.168.239.100 dev lo:0
route -n   #查看
#将设置路由命令添加到开机执行配置文件内相当于开机自启并给配置文件添加执行权限
vim /etc/rc.d/rc.local
route add -host 192.168.239.100 dev lo:0
chmod +x /etc/rc.d/rc.local
#调整 proc 响应参数
#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
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
#开启web服务
systemctl restart httpd
#查看nfs共享服务器共享策略
showmount -e 192.168.239.40
#将共享目录挂载到本地web服务器站点给目录
mount 192.168.239.40:/opt/nfs/wang /var/www/html/
df -h 

与第一台一致挂载文件不同

配置负载调度器(主:192.168.239.10)

#关闭防火墙
systemctl disable --now firewalld
setenforce 0

#安装keepalived和ipvsadm
yum install -y ipvsadm keepalived

#开启ip_vs并查看服务是否开启
modprobe ip_vs
cat /proc/net/ip_vs

rpm -qc keepalived  #查看配置文件位置
cd /etc/keepalived/ #切换到配置文件目录
cp keepalived.conf{,.bak}  #备份原有配置文件

 vim keepalived.conf  #修改配置文件
! Configuration File for keepalived
global_defs {   ##定义全局参数
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1    #修改,邮件服务指向本地
   smtp_connect_timeout 30
   router_id LVS_01    #指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
}
vrrp_instance VI_1 {    #定义VRRP热备实例参数
    state MASTER      #指定热备状态,主为MASTER,备为BACKUP
    interface ens33     #修改,指定承载vip地址的物理接口
    virtual_router_id 51    #修改,指定虚拟路由器的ID号,每个热备组保持一致
    #nopreempt          ##如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
    priority 100
    advert_int 1     #通告间隔秒数(心跳频率)
    authentication {     	#定义认证信息,每个热备组保持一致
        auth_type PASS     #认证类型
        auth_pass 1111    #修改,指定验证密码,主备服务器保持一致
    }
    virtual_ipaddress {      #指定群集vip地址
        192.168.239.100
    }
}
#修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.239.100 80 {
    delay_loop 6       #健康检查的间隔时间(秒)
    lb_algo rr     #指定调度算法,轮询(rr)
    lb_kind DR       #修改,指定群集工作模式,直接路由(DR)
    persistence_timeout 0      #连接保持时间(秒)
    protocol TCP        #应用服务采用的是 TCP协议
real_server 192.168.239.20 80 {       #修改,指定第一个Web节点的地址、端口
weight 1        ##节点的权重
          TCP_CHECK {
              connect_port 80     #添加检查的目标端口
              connect_timeout 3   #添加连接超时(秒)
              nb_get_retry 3      #添加重试次数
              delay_before_retry 3  #添加重试间隔
          }
      }
 
      real_server 192.168.239.30 80 {     ##添加第二个 Web节点的地址、端口
          weight 1
          TCP_CHECK {
              connect_port 80
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
          }
      }
 ##删除后面多余的配置##
 }
  systemctl start keepalived.service   #重新启动服务
   ip addr      #查看虚拟网卡vip
  
  #启动 ipvsadm 服务
ipvsadm-save > /etc/sysconfig//ipvsadm
systemctl start ipvsadm
ipvsadm -ln

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

scp keepalived.conf 192.168.239.50:`pwd`  #远程传输文件到备负载调度器

配置负载调度器(备:192.168.239.50)

与主配置一致唯一不同keepalived配置文件

客户机测试

关闭主负载调度器的keepalived服务再次测试

此时备负载调度器则会将自己转为Master设备

再次访问任然可以访问

标签:LVS,群集,lo,Keepalived,192.168,keepalived,Master,conf,服务器
来源: https://www.cnblogs.com/gengbo/p/16275314.html