LVS+keepalive
LVS+keepalive
什么是keepalive
Keepalived是Linux下一个轻量级别的高可用解决方案。高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行;狭义的来讲就是指主机的冗余和接管。它与HeartBeat、RoseHA实现类似的功能,都可以实现服务或者网络的高可用,但是又有差别。HeartBeat是一个专业的、功能完善的高可用软件,它提供了HA 软件所需的基本功能。比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦。与HeartBeat相比,Keepalived主要是通过虚拟路由冗余(VRRP)来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的
实验环境
关闭selinux和iptables
主机 | centos7.6 |
---|---|
192.168.47.47 | VIP |
192.168.47.191 | lvs-master |
192.168.47.193 | lvs-slave |
192.168.47.189 | RealServer02 |
192.168.47.188 | RealServer01 |
1、在LVS上:
yum install ipvsadm keepalived -y
Master节点配置文件
[root@lvs ~]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL # 设置lvs的id,在一个网络内应该是唯一的
}
vrrp_instance VI_1 {
state MASTER #指定Keepalived的角色,MASTER为主,BACKUP为备
interface ens33 # 绑定的网卡名
virtual_router_id 51 #虚拟路由编号,主备要一致
priority 100 #定义优先级,数字越大,优先级越高,主DR必须大于备用DR
advert_int 1 #检查间隔,默认为1s
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.47.16 #定义虚拟IP(VIP),可多设,每行一个
}
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.47.47 80 {
delay_loop 6 # 设置健康检查时间,单位是秒
lb_algo wrr # 设置负载调度的算法为wrr
lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.47.188 80 { # 指定real server1的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.47.189 80{ # 指定real server2的IP地址
weight 3 # 配置节点权值,数字越大权重越高
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
Slave 配置
No.1处:把“state MASTER”修改为“state BACKUP” #即备用服务器;
No.2处:把“priority 100”修改为“priority 90” #优先级为90。
2、配置RealServer(我安装的是httpd,也可以用nginx或者其他的)
[root@t1 ~]# cat realserver.sh
#add for chkconfig
#chkconfig: 2345 70 30
#description: RealServer's script
#processname: realserver.sh
#!/bin/bash
VIP=192.168.47.47
source /etc/rc.d/init.d/functions
case "$1" in
start)
#绑定VIP,抑制ARP广播
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
3、启动httpd服务、运行脚本
[root@t1 ~]# systemctl start httpd
[root@t1 ~]# ./realserver.sh start
4、启动keeplived,查看lvs规则
[root@lvs ~]# systemctl restart keepalived
#可以看到已经成功添加了DR、WRR的规则
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.47.47:80 wrr
-> 192.168.47.188:80 Route 3 0 0
-> 192.168.47.189:80 Route 3 0 0
5、验证
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvs ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
6、将后端的realserver其中一个节点服务停掉,并测试
#停了192.168.47.188的节点
[root@t1 ~]# systemctl stop httpd
#可以看到LVS规则中,已经没有了192.168.47.188的节点
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.47.47:80 wrr
-> 192.168.47.189:80 Route 3 0 0
#再把他起来
[root@t1 ~]# systemctl start httpd
#可以看到LVS规则中,又有了
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.47.47:80 wrr
-> 192.168.47.188:80 Route 3 0 0
-> 192.168.47.189:80 Route 3 0 0
7、把keepalived、master节点宕掉。看看是否能切换到slave
[root@lvs ~]# systemctl stop keepalived
可以看到VIP漂移了过来
再测试是否能正常访问
[root@lvss ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.47.47:80 wrr
-> 192.168.47.188:80 Route 3 0 0
-> 192.168.47.189:80 Route 3 0 0
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.188”
[root@lvss ~]# curl 192.168.47.47
”I am RealServer1 192.168.47.189”
LVS+keepalive的更多相关文章
- 集群高可用之lvs+keepalive
集群高可用之lvs+keepalive keepalive简介: 负载均衡架构依赖于知名的IPVS内核模块,keepalive由一组检查器根据服务器的健康情况动态维护和管理服务器池.keepalive ...
- 打造极致性能数据库中间件丨LVS+Keepalive+华为云DDM之理论篇
背景说明 华为云分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访 ...
- Lvs Keepalive DR模式高可用配置
Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...
- mysql高可用之LVS + KEEPALIVE + MYSQL
1.架构图 注意 (一) Mysql需要把bind-address的配置去掉,否则无法实现虚拟ip访问 (二) 关闭所有linux防火墙:/sbin/iptables –F(可能没用) (三) ...
- lvs+keepalive构建高可用集群
大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用的前端负载均衡器 一.前言 Keepalived使用的vrrp协议方式,虚拟路由 ...
- lvs+keepalive实现双主模式(采用DR),同时实现TCP和UDP检测实现非web端的负载均衡,同时实现跨网段的通讯
因为公司领导需要,需要把lvs备机也使用上,故! 使用双主,相互是主的同时也相互是备机.本人用nat测试发现RS无法实现负载均衡,故采用DR模式来实现非web端的负载均衡 lvs1: DIP 10.6 ...
- lvs+keepalive实现主从效果,以及RS健康监测和tcp,udp实现非web的负载均衡
前面文章讲到了tcp和udp负载均衡,但是没有健康监测,这几天我优化了一下上次的操作.当然,我也是用的跨网段的通讯,因为线上业务主要是海外业务,所以做了iptables流量转发 IP: lvs-mas ...
- LVS+Keepalive+Nginx实现负载均衡
本文参考:http://blog.csdn.net/yinwenjie/article/details/47211551 简单粗暴写一下,做备忘,刚刚搭好没做优化呢,后期补充 一.机器准备 LVS-M ...
- lvs+keepalive主从和主主架构
下面配置主从 1)关闭SELinux和防火墙 vi /etc/sysconfig/selinux SELINUX=disabled setenforce 临时关闭SELinux,文件配置后,重启生效 ...
随机推荐
- 浅谈HASH长度拓展攻击
前言 最近在做CTF题的时候遇到这个考点,想起来自己之前在做实验吧的入门CTF题的时候遇到过这个点,当时觉得难如看天书一般,现在回头望去,仔细琢磨一番感觉也不是那么难,这里就写篇文章记录一下自己的学习 ...
- Windows下安装nvm管理多个nodejs版本
平常在工作中难免会有node版本的要求,下面介绍一种利用nvm工具管理多个node版本的方法 下载安装 Github: Download nvm-windows --- nvm-setup.zip 程 ...
- Redis安装问题解决方案
Redis部署采坑记 Redis部署采坑记 问题一: 问题描述: make 编译源码时报错 问题详解: 因为缺少gcc-c++编译器的原因 解决方案: 方案一: yum -y install gc ...
- C008:输入显示日期
代码: #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]) { int day,month,year; do{ pri ...
- 20190923-03Linux时间日期类 000 011
1.基本语法 date [OPTION]... [+FORMAT] 2.选项说明 表1-20 选项 功能 -d<时间字符串> 显示指定的“时间字符串”表示的时间,而非当前时间 -s< ...
- Vue的属性、事件、插槽
属性 自定义属性props ->组件的propos中声明的属性 原生属性attrs ->没有声明属性,默认自动挂载在组件的根元素上,inheritAttrs可以关闭自动挂载 特殊属性cla ...
- 关于LLVM源码在Linux下编译的过程
1. 最好在gitee上查找llvm的源码或者直接git clone https://gitee.com/uniquesquirrel/llvm-project.git,是和github上的llvm项 ...
- python中绝对值的表达式
abs(x) print(abs(23)) #23print(abs(-45)) #45
- CTF-WeChall-第一天
2020.09.09 今天来了一个新平台,WeChall,从简单的开始做,才能找到自信--i春秋的题做自闭了
- 第3课 - 启航Lua之路
第3课 - 启航Lua之路 1. Lua中的变量 (1)变量:全局变量和局部变量 — Lua中支持全局变量和局部变量的概念 全局变量:直接定义变量名,并复制 a = 1; -- 用 ; 结束当前语 ...