Linux利用keepalived实现lvs的高可用性的操作方法

作者:OrochWang 时间:2023-07-25 01:20:34 

lvs+keepalived是什么?

keepalived工作原理

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

 LVS简介

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法。

本文重点给大家介绍Linux利用keepalived实现lvs的高可用性的操作方法,感兴趣的朋友参考下吧。

Linux利用keepalived实现lvs的高可用性的操作方法

单主模型IPVS示例

配置keepalive

高可用的ipvs集群示例:修改keepalived配置文件

修改主机:192.168.234.27的keepalived配置文件


[root@234c27 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost //接受邮件地址
}
notification_email_from keepalived@localhost //发送邮件地址
smtp_server 127.0.0.1 //发送邮件服务器IP
smtp_connect_timeout 30 //邮件连接超时时长
router_id kptwo //路由id
vrrp _mcast_group4 234.10.10.10 //指定vrrp协议的多播地址
}
vrrp_instance VI_1 { //vrrp协议的
state MASTER //lvs的MASTER服务器
interface ens37 //
virtual_router_id 50 //虚拟路由
priority 100 //权重为100.越大越先
advert_int 1 //发送组博包的间隔
authentication { //验证
auth_type PASS //方式为pass( 明文)
auth_pass 1111 //密码
}
virtual_ipaddress { //keepalived虚拟ip
10.0.0.100/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6 //检查后端服务器的时间间隔
lb_algo wrr //定义调度方法
lb_kind DR //集群的类型
#persistence_timeout 50 //持久连接时长
protocol TCP //服务协议,仅支持TCP
real_server 192.168.234.47 80 { //后端real_server服务器地址
 weight 1 //权重
 HTTP_GET { //应用层检测
  url {
   path / //定义要监控的URL
   status_code 200 //判断上述检测机制为健康状态的响应码
  }
  connect_timeout 3 //连接请求的超时时长
  nb_get_retry 3 //重试次数
  delay_before_retry 3 //重试之前的延迟时长
 }
}
real_server 192.168.234.57 80 {
 weight 2
 HTTP_GET {
  url {
   path /
   status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
 }
}
}

修改主机:192.168.234.37的keepalived配置文件


[root@234c37 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
 root@localhost
}
notification_email_from keepalived@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id kptwo
vrrp _mcast_group4 234.10.10.10
}
vrrp_instance VI_1 {
state BACKUP
interface ens37
virtual_router_id 50
priority 80
advert_int 1
authentication {
 auth_type PASS
 auth_pass 1111
}
virtual_ipaddress {
 10.0.0.100/24
}
}
virtual_server 10.0.0.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
#persistence_timeout 50
protocol TCP
sorry_server 127.0.0.1:80
real_server 192.168.234.47 80 {
 weight 1
 HTTP_GET {
  url {
   path /
   status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
 }
}
real_server 192.168.234.57 80 {
 weight 2
 HTTP_GET {
  url {
   path /
   status_code 200
  }
  connect_timeout 3
  nb_get_retry 3
  delay_before_retry 3
 }
}
}

查看keepalived


[root@234c37 ~]# systemctl status keepalived
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: inactive (dead)
…………
[root@234c37 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port   Forward Weight ActiveConn InActConn
//暂无ipvsadm

启动服务

Linux利用keepalived实现lvs的高可用性的操作方法


[root@234c27 keepalived]# systemctl start keepalived.service
[root@234c27 keepalived]# systemctl status keepalived.service
● keepalived.service - LVS and VRRP High Availability Monitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2018-08-31 20:30:02 CST; 12s ago
Process: 9657 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 9658 (keepalived)
………………
[root@234c27 keepalived]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port   Forward Weight ActiveConn InActConn
TCP 10.0.0.100:80 wrr
-> 192.168.234.47:80   Route 1  0   0
-> 192.168.234.57:80   Route 2  0   0
//启动服务lvs vs已配置好

后端real_server准备

增加ip在网卡上 修改限制arp通告及应答级别 rs1 rs2都做,网关并指向路由


ip a a 10.0.0.100/32 dev ens37
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
route add default gw 192.168.234.17

安装httpd服务 写好网页文件

启动服务

image

多主模型IPVS示例

Linux利用keepalived实现lvs的高可用性的操作方法

配置keepalive

高可用的ipvs集群示例:修改keepalived配置文件

修改主机:192.168.234.27的keepalived配置文件



[root@234c27 keepalived]# vim /etc/keepalived/keepalived.conf
global_defs {
 notification_email {
  root@localhost
 }
 notification_email_from keepalived@localhost
 smtp_server 127.0.0.1
 smtp_connect_timeout 30
 router_id kpone
 vrrp _mcast_group4 234.10.10.10
}
vrrp_instance VI_1 {
 state MASTER
 interface ens37
 virtual_router_id 50
 priority 100
 advert_int 1
 authentication {
   auth_type PASS
   auth_pass 1111
 }
 virtual_ipaddress {
   10.0.0.100/24
 }
}
vrrp_instance VI_2 {
 state BACKUP
 interface ens37
 virtual_router_id 51
 priority 80
 advert_int 1
 authentication {
   auth_type PASS
   auth_pass 2222
 }
 virtual_ipaddress {
   10.0.0.200/24
 }
}
virtual_server 10.0.0.100 80 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 #persistence_timeout 50
 protocol TCP
 #sorry_server 127.0.0.1:80
 real_server 192.168.234.47 80 {
   weight 1
   HTTP_GET {
     url {
      path /
      status_code 200
     }
     connect_timeout 3
     nb_get_retry 3
     delay_before_retry 3
   }
 }
}
virtual_server 10.0.0.200 80 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 #persistence_timeout 50
 protocol TCP
 #sorry_server 127.0.0.1:80
 real_server 192.168.234.57 80 {
   weight 1
   HTTP_GET {
     url {
      path /
      status_code 200
     }
     connect_timeout 3
     nb_get_retry 3
     delay_before_retry 3
   }
 }
}

修改主机:192.168.234.37的keepalived配置文件


[root@234c37 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
 notification_email {
  root@localhost
 }
 notification_email_from keepalived@localhost
 smtp_server 127.0.0.1
 smtp_connect_timeout 30
 router_id kptwo
 vrrp _mcast_group4 234.10.10.10
}
vrrp_instance VI_1 {
 state BACKUP
 interface ens37
 virtual_router_id 50
 priority 80
 advert_int 1
 authentication {
   auth_type PASS
   auth_pass 1111
 }
 virtual_ipaddress {
   10.0.0.100/24
 }
}
vrrp_instance VI_2 {
 state MASTER
 interface ens37
 virtual_router_id 51
 priority 100
 advert_int 1
 authentication {
   auth_type PASS
   auth_pass 2222
 }
 virtual_ipaddress {
   10.0.0.200/24
 }
}
virtual_server 10.0.0.100 80 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 #persistence_timeout 50
 protocol TCP
 #sorry_server 127.0.0.1:80
 real_server 192.168.234.47 80 {
   weight 1
   HTTP_GET {
     url {
      path /
      status_code 200
     }
     connect_timeout 3
     nb_get_retry 3
     delay_before_retry 3
   }
 }
}
virtual_server 10.0.0.200 80 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 #persistence_timeout 50
 protocol TCP
 #sorry_server 127.0.0.1:80
 real_server 192.168.234.57 80 {
   weight 1
   HTTP_GET {
     url {
      path /
      status_code 200
     }
     connect_timeout 3
     nb_get_retry 3
     delay_before_retry 3
   }
 }
}

让10.0.0.100的ip优先分配至192.168.234.47 192.168.234.57备用

让10.0.0.200的ip优先分配至192.168.234.57 192.168.234.47备用

后端real_server准备

修改192.168.234.57的vip为10.0.0.200/32


 [root@234c27 keepalived]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
 TCP 10.0.0.100:80 wrr
  -> 192.168.234.47:80      Route  1   0     0
 TCP 10.0.0.200:80 wrr
 -> 192.168.234.57:80      Route  1   0     0


现在宕掉一个lvs

Linux利用keepalived实现lvs的高可用性的操作方法


 [root@234c27 keepalived]# systemctl stop keepalived.service
 [root@234c27 keepalived]# ipvsadm -Ln
 IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port      Forward Weight ActiveConn InActConn


依然提供服务

Linux利用keepalived实现lvs的高可用性的操作方法


[root@234c37 ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
 Prot LocalAddress:Port Scheduler Flags
 -> RemoteAddress:Port      Forward Weight ActiveConn InActConn
 TCP 10.0.0.100:80 wrr
  -> 192.168.234.47:80      Route  1   0     21
 TCP 10.0.0.200:80 wrr
  -> 192.168.234.57:80      Route  1   0     39

后一个实现基于前一个的基础上修改来的

假设要实现sorry_server

1.把rs服务都停掉。然后在lvs上安装apache或者nginx服务

2.将keepalived配置文件中的


virtual_server 10.0.0.200 80 {
 delay_loop 6
 lb_algo wrr
 lb_kind DR
 #persistence_timeout 50
 protocol TCP
 #sorry_server 127.0.0.1:80 //这一行来修改 写出服务出错之后的页面
 real_server 192.168.234.57 80 {
   weight 1
   HTTP_GET {
     url {
      path /
      status_code 200
     }
     connect_timeout 3
     nb_get_retry 3
     delay_before_retry 3
   }
 }
}


来源:https://www.cnblogs.com/OrochWang/archive/2018/08/31/9568225.html

标签:linux,keepalived,lvs
0
投稿

猜你喜欢

  • 关于google adsense英文电话确认的基本常识

    2007-10-11 18:59:00
  • 企业的销售渠道 品牌和口碑比网络营销更重要

    2009-04-06 01:41:00
  • 就像谈恋爱结婚样 对关键词也要非诚勿扰

    2009-01-03 15:18:00
  • GoDaddy主机如何用密码保护自己的网页

    2010-04-09 12:37:00
  • sersync实现数据实时同步的方法

    2023-07-30 03:06:15
  • 防止局域网内私自IP地址(DHCP)

    2010-03-29 19:10:00
  • Windows下PHP5和Apache的安装与配置

    2008-12-01 12:51:00
  • 帝国、PHPCMS及织梦对比(二):支持SQL调用的标签

    2011-08-26 13:00:58
  • 谈谈做源码下载站的一点心得

    2007-10-16 12:16:00
  • 网店成功的几个关键步骤

    2009-02-09 14:30:00
  • 技巧:加固外网上的IIS服务器安全

    2009-08-29 13:57:00
  • 技巧:保护DNS服务器十大最有效方法

    2009-02-20 17:22:00
  • VMVare虚拟机网络配置步骤

    2023-11-03 13:41:35
  • VMware Workstation Pro12安装RedHat6.4 64位教程

    2021-07-06 16:57:55
  • 写好和维持准确元标记 让谷歌顺利找到你

    2009-01-20 10:13:00
  • centos6.5 lamp 环境(使用yum安装方法)

    2022-10-13 03:51:03
  • 成功做站 就是不断重复地做简单的事

    2007-11-07 14:06:00
  • “此网站的安全证书有问题”的解决办法

    2009-04-01 18:40:00
  • Mac通过不同终端SSH连接远程服务器的讲解

    2023-07-14 22:41:42
  • 三款SEO工具 方便查询和观察搜索引擎用

    2008-12-29 11:28:00
  • asp之家 网站运营 m.aspxhome.com