LVS+Keepalived群集

一、Keelalived工具介绍

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

  • 支持故障自动切换(Failover)
  • 支持节点健康检查状态(Health Checking)
  • 官网网站:http://www.keepalived.org/
    在这里插入图片描述

二、Keepalived实现原理

2-1、Keepalived案例分析

        在企业应用中,单台服务器承担应用存在单点故障的危险,在企业应用集群中,存在了至少两处单点故障危险,
单点故障一旦发生,企业服务将发生中断,造成极大的危害
在这里插入图片描述

2-2、LVS+Keepalived高可用群集

        Keepalived的设计目标是构建可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。使用keepalived构建LVS群集更加简便易用,主要优势体现在:对LVS负载调度器实现热备切换,提高可用性,对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。
        在基于LVS-Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。
        使用Keepalived构建LVS群集时,也需要用到ipvsadm管理工具,但大部分工作会由Keepalived自动完成,不需要手动执行ipvsadm。

2-3、Keepalived实现原理剖析

■Keepalived采用VRRP热备份协议,实现Linux服务器的多机热备功能。
■VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案。

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

在这里插入图片描述

2-4、Keepalived案例讲解

■双机热备的故障切换是由虚拟IP地址的漂移实现,适用于各种应用服务器
■实现基于WEB服务的双机热备

1、配置keepalived master服务器
■ keepalived配置目录位于/etc/keepalived/
■ keepalived.conf是主配置文件

  • global_defs {…} 区段指定全局参数
  • vrrp_instance 实例名称 {…} 区段指定VRRP热备参数
  • 注释文字以”!“符号开头
  • 目录samples/,提供了许多配置样例作为参考

■常用配置选项讲解

  • router_id HA_TEST_R1: 本路由器(服务器)的名称
  • vrrp_instance VI_1: 定义VRRP热备实例
  • state MASTER:热备状态,MASTER表示主服务器
  • interface ens33:承载VIP地址的物理接口
  • virtual_router_id 1:虚拟路由器的ID号,每个热备组保持一致
  • 热备组的ID号,代表是否在一个热备组中
  • priority 100: 优先级,数值越大优先级越高
  • advert_int 1: 通告间隔秒数(心跳频率)
  • auth_type PASS: 认证类型
  • auth_pass 123456: 密码字串
  • virtual_ipaddress {vip}: 指定漂移地址(VIP),可以有多个

2、配置keepalived slave服务器
■keppalived 备份服务器的配置与master的配置有三个选项不同

  • router_id: 设为自由名称
  • state: 设为BACKUP
  • priority: 优先值值低于主服务器

■其他选项与master相同

三、LVS+Keelalived高可用群集部署实验

3-1、实验配置

名称操作系统IP地址
LVS-MasterCentos7.6-x86_64192.168.100.11
LVS-BackupCentos7.6-x86_64192.168.100.12
WebserverACentos7.6-x86_64192.168.100.13
WebserverBCentos7.6-x86_64192.168.100.14
NFS共享Centos7.6-x86_64192.168.100.15

3-2、实验步骤

首先我们在做实验时必须先关闭5台虚拟机的防火墙、核心防护,并配置好本地Yum源。

IP地址规划:
漂移地址(VIP):192.168.100.100
主调度器:192.168.100.11
辅调度器:192.168.100.12
WEB服务器1:192.168.100.13
WEB服务器2:192.168.100.14
存储服务器:192.168.100.15

配置主调度器

【1】调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

【2】调整keepalived参数
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
   router_id HA_TEST_R1                  ####本路由器的服务器名称  HA_TEST_R1
}
vrrp_instance VI_1 {                     ####定义VRRP热备实列
   state MASTER                          ####热备状态,master表示主服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 100                          ####优先级,优先级越大优先级越高
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {                      ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {                   ####漂移地址(VIP),可以是多个
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {      ####虚拟服务器地址(VIP)、端口
    delay_loop 15                        ####健康检查的时间间隔(秒)
    lb_algo rr                           ####轮询调度算法
    lb_kind DR                           ####直接路由(DR)群集工作模式
    persistence 60                       ####连接保持时间(秒),若启用请去掉!号
    protocol TCP                         ####应用服务采用的是TCP协议

    real_server 192.168.100.13 80 {        ####第一个WEB站点的地址,端口
        weight 1                           ####节点的权重
        TCP_CHECK {                        ####健康检查方式
	    connect_port 80                    ####检查端口目标
	    connect_timeout 3                  ####连接超时(秒)
	    nb_get_retry 3                     ####重试次数
	    delay_before_retry 4               ####重试间隔(秒)
	}
    }
    real_server 192.168.100.14 80 {
        weight 1
        TCP_CHECK {
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}  

[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived                 ####开机启动keepalived

[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:bb:29:cc brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.21/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet 192.168.100.100/32 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febb:29cc/64 scope link 
       valid_lft forever preferred_lft forever
#####配置辅调度器  192.168.100.22 ####### 关闭防火墙 

【1】调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

【2】调整keepalived参数
[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
   router_id HA_TEST_R2                  ####本路由器的服务器名称 HA_TEST_R2
}
vrrp_instance VI_1 {                     ####定义VRRP热备实列
   state BACKUP                          ####热备状态,backup表示辅服务器
   interface ens33                       ####表示承载VIP地址的物理接口
   virtual_router_id 1                   ####虚拟路由器的ID号,每个热备组保持一致
   priority 99                           ####优先级,优先级越大优先级越高
   advert_int 1                          ####通告间隔秒数(心跳频率)
   authentication {                      ####认证信息,每个热备组保持一致
      auth_type PASS                     ####认证类型
      auth_pass 123456                   ####认证密码
   }
   virtual_ipaddress {                   ####漂移地址(VIP),可以是多个
      192.168.100.100
   }
}

virtual_server 192.168.100.100 80 {       
    delay_loop 15
    lb_algo rr
    lb_kind DR
    persistence 60
    protocol TCP

    real_server 192.168.100.13 80 {
        weight 1
        TCP_CHECK {
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
    real_server 192.168.100.14 80 {
        weight 1
        TCP_CHECK {
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}      
       
[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived                 ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:44:0b:2a brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.22/24 brd 192.168.100.255 scope global noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe44:b2a/64 scope link 
       valid_lft forever preferred_lft forever   

配置存储服务器:

rpm -q nfs-utils    ###如果没装,yum -y install nfs-utils
rpm -q rpcbind      ###如果没装,yum -y install rpcbind

[root@localhost ~]# vi /etc/exports
/opt/51xit 192.168.100.0/24 (rw,sync)
/opt/52xit 192.168.100.0/24 (rw,sync)

[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html


[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl enable nfs

配置节点服务器:

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.15:/opt/51xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.13就能看见51网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/51xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0    ###里面只留下面四行配置     
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0   ###重启网卡
[root@localhost network-scripts]# ifconfig   ###查看一下

【2】调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 192.168.100.100 dev lo:0

配置节点服务器:

[root@localhost ~]# yum -y install httpd   ###安装Apache
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# yum -y install nfs-utils   ###安装nfs
[root@localhost ~]# mount 192.168.100.15:/opt/52xit /var/www/html/  ###临时挂载
###测试:浏览器输入192.168.100.24就能看见52网页###

[root@localhost ~]# vi /etc/fstab 
192.168.100.25:/opt/52xit /var/www/html nfs defaults,_netdev 0 0   ###永久挂载

【1】配置虚拟IP地址
[root@localhost ~]# cd /etc/sysconfig/network-scripts/   ###进入网卡目录
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0   ###复制一个网卡,命名为lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0         ###里面只留下面四行配置
DEVICE=lo:0
IPADDR=192.168.100.100
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0   ###重启网卡
[root@localhost network-scripts]# ifconfig   ###查看一下

【2】调整/proc响应参数
[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
[root@localhost network-scripts]# sysctl -p
[root@localhost network-scripts]# route add -host 192.168.100.10 dev lo:0  ###手工配置一条路由

测试:在浏览器输入192.168.100.100 就会出现其中一个网站,在等一会刷新就会显示另一个网站,LVS+Keepalived负载均衡就做完了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值