当前位置: 首页 > news >正文

lvs-dr模式+keepalived

一,keepalived概述

        Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

        在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

二,Keepalived体系主要模块及其作用

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

        vrrp:用来实现vrrp协议。

                Vrrp通信原理:           

                        Vrrp:虚拟路由冗余协议,作用是解决静态路由的单点故障。

                        Vrrp通过选举机制来将路由交给某台vrrp路由器处理。

                        Vrrp用多播的方式(多播地址224.0.0.18)实现高可用之间的通信,工作时主节点法宝,备节点接包,当备节点接收不到主节点发的数据包的时候,就会接管主节点的资源,备节点可以有多个,根据优先级来进行选举,但一般的keepalived系统运维工作的时候会又多个荣誉路由。

                        Vrrp使用加密协议加密数据,但是keepalived官方目前还是推荐用明文的方式认证类型和密码。

        check:负责健康检查,常见方式有端口检查及url检查。

三,Keepalived工作原理

        Keepalive服务器之间通过vrrp进行通信,vrrp是通过竞选来通过主备,主优先级高于备,因此工作时主优先获得所有资源,备节点处于等待状态。当主挂了的时候,备节点会接管主节点的资源,就顶替主节点对外提供服务。在keepalived服务之间,只有作为主的服务器会一直发送vrrp广播包,告诉备正常工作,此时备不会去抢占主,当主不可用的时候,即备监听不到主发送的广播包时候,备就会启动相关服务去接管资源,保证业务的连续性,接管速度最快小于1s。

四:配置

 1,配置负载均衡器(192.168.10.14,192.168.10.15)

安装lvs与keepalived
yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs配置keeplived
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf在global_defs中修改以下:
smtp_server 127.0.0.1  #邮件服务指向本地
router_id LVS_01       #指定路由器名称,需主备不同
#vrrp_strict           #注释掉,取消严格遵守vrrp协议功能在vrrp_instance VI_1中修改以下:
state MASTER           #主为MASTER,备为BACKUP
interface ens33        #设置承载vip的物理接口
virtual_router_id 10   #指定虚拟路由id号,每个组保持一致
#nopreempt             #设置为抢占模式,如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
priority 100           #修改优先级,主比备大即可
advert_int 1           #通告间隔秒数
authentication {				auth_type PASS     #认证类型		auth_pass abc123   #认证密码}
virtual_ipaddress {			192.168.10.188     #设置集群vip地址}virtual_server 192.168.10.188 80 {delay_loop 6	   #健康检查的间隔时间(秒)lb_algo rr         #指定算法lb_kind DR         #服务工作模式persistence_timeout 50    #连接保持时间protocol TCP       #服务采用tcp连接指定第一个web节点的物理ip地址和虚拟地址
real_server 192.168.10.16 80 {weight 1           #设置权重TCP_CHECK {connect_port 80    #检查目标的端口connect_timeout 3  #连接超时nb_get_retry 3     #重试次数delay_before_retry 3    #重试间隔}
}指定第二个web节点的物理ip地址和虚拟地址
real_server 192.168.10.17 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}
}配置vip
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255重启网卡
systemctl restart network
ifup  ens33:0
systemctl start keepalived
ip addr添加ipvsadm规则并启动
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调整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

2,配置节点服务器

yum -y install httpd
systemctl start httpd给网页写入内容(两台看着写)
echo 'this is web!' > /var/www/html/index.html设置vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255启动网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.188 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

测试:访问虚拟地址

http://www.lryc.cn/news/138277.html

相关文章:

  • [C++]笔记-知识点总结
  • 1.RabbitMQ介绍
  • 软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用
  • 【Java架构-包管理工具】-Maven进阶(二)
  • 『C语言入门』分支和循环语句
  • 【给自己挖个坑】三维视频重建(NSR技术)-KIRI Engine
  • Chrome历史版本下载和Selenium驱动版本下载
  • 联合注入步骤
  • 后端项目开发:整合redis缓存
  • 美国访问学者签证好办吗?
  • Linux之基础IO文件系统讲解
  • Django主要特点
  • element-ui中的el-table合并单元格
  • 自组织地图 (SOM) — 介绍、解释和实现
  • Arduino程序设计(四)按键消抖+按键计数
  • Scrum Guide Chinese Simplified.pdf
  • Module not found: Error: Can‘t resolve ‘vue-pdf‘ in ‘xxx‘
  • ELK之LogStash介绍及安装配置
  • docker学习(1)
  • UE5 Niagara基础知识讲解
  • 缓存穿透、缓存击穿和缓存雪崩
  • 自动化编排工具Terraform介绍(一)
  • zhm_real/MotionPlanning运动规划库中A*算法源码详细解读
  • SpringMVC中Controller层获取前端请求参数的几种方式
  • 记Flask-Migrate迁移数据库失败的两个Bug——详解循环导入问题
  • 在线求助。。npm i 报错,连公司内部网,无法连外网
  • TCP/UDP/IP协议简介
  • 写点感想3:关于本人近期的说明与一点感受
  • opencv-全景图像拼接
  • 如何将下载的安装包导入PyCharm