热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用keepalived搭建高可用LVS集群

LinuxCluster使用keepalived搭建高可用LVS一般比较常用于搭建高可用集群的有:heartbeat、keepalived、piranha。常见

Linux Cluster
使用keepalived搭建高可用LVS
一般比较常用于搭建高可用集群的有:heartbeat、keepalived、piranha。
常见的高可用集群有:高可用LVS集群、高可用web集群(keepalived+nginx)、高可用mysql集群。
keepalived是一个类似于layer3, 4 & 7交换机制的软件,也就是我们平时说的第3层、第4层和第7层交换。只需要简单配置keepalived的配置文件即可实现自动生成ipvsadm规则,还可以监控后端realserver主机的健康状态,出现故障时自动剔除集群,恢复后自动添加,以及MASTER与BACKUP之间的故障切换。
本次实验使用keepalived+Apache,搭建高可用LVS集群。
DIP=director IP
RIP=realserverIP
VIP=virtual server IP
realserver=rs
ha=director

1.实验概况

1.1实验拓扑图

这里写图片描述

1.2简介
本次实验使用virtualbox创建一台最小化安装的centos5.5配置yum源,完成后再复制出三台刚才已安装好的centos5.5,共四台虚拟机,
只需要启用一张网卡,选择桥接模式。采用LVS的DR直接路由工作模式,wlc调度算法,后端服务器健康状态监测方式为HTTP,
此外后端服务器健康状态监测方式还有SSL、HTTPS、TCP_CHECK等。
hostname ip 角色 作用
ha1 VIP:eth0:0 192.168.8.30 LVS负载均衡器MASTER 接收用户请求,
转发给后端realserver处理
DIR:eth0 192.168.8.31 用于与后端realserver进行通信

ha2 VIP:eth0:0 192.168.8.30 LVS负载均衡器BACKUP 备用的LVS调度器
DIR:eth0 192.168.8.32 用于与后端realserver、
LVS负载均衡器MASTER进行通信

rs1 RIP:192.168.8.33 WEB服务器 与director通信,提供web服务
VIP:lo:0 192.168.8.30 用于处理director分配的请求后
以此地址返回给用户
rs2 RIP:192.168.8.34 WEB服务器 与director通信,提供web服务
VIP:lo:0 192.168.8.30 用于处理director分配的请求后
以此地址返回处理结果给用户

1.3实验步骤

1.3.1MASTER配置
1).单网卡、桥接模式启动ha1,并配置ip地址为192.168.8.31
2).关闭防火墙与selinux
service iptable stop
service ip6table stop
vim /etc/selinux/conf
修改为SELINUX=disabled
3).安装keepalived前的准备
由于一开始centos5.5是最小化安装,所以需要提前安装编译工具以及其他安装keepalived的组件
安装openssl
yum install -y openssl openssl-devel #安装openssl以及openssl开发包未安装内核开发也可以使keepalived安装成功,但无法自动生成ipvsadm规则
yum install -y kernel-devel
安装编译工具gcc-c++
yum install -y gcc-c++
安装ipvs管理工具ipvsadm
yum install -y ipvsadm
4).安装keepalived
wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz
tar xvf keepalived-1.2.7.tar.gz
cd keepalived-1.2.7
./configure --syscOnf=/etc --with-kernel-dir=/usr/src/kernels/2.6.18-417.el5-i686
#注意/usr/src/kernels/2.6.18-417.el5-i686,为题主自己的内核版本,
读者自己操作是使用tab补全,万一照抄或许会失败。

配置检测结束后会出现如下结果,为三个yes,其中IPVS use libnl: No,对后续的安装配置运行无影响。

Keepalived configuration

Keepalived version : 1.2.7
Compiler : gcc
Compiler flags : -g -O2 -DETHERTYPE_IPV6=0x86dd
Extra Lib : -lpopt -lssl -lcrypto
Use IPVS Framework : Yes
IPVS sync daemon support : Yes
IPVS use libnl : No
Use VRRP Framework : Yes
Use VRRP VMAC : No
SNMP support : No
Use Debug flags : No

make
make install
ln -s /usr/local/sbin/keepalived /sbin

至此keepalived安装完成

5).配置keepalived
keepalived的配置文件在 /etc/keepalived/keepalived.conf
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.confbk #先备份一下
vim /etc/keepalived/keepalived.conf
以下为题主自己的配置文件,后端服务器健康状态使用HTTP
! Configuration File for keepalived

global_defs {
notification_email {
root@localhost #用于接受邮件报警,当服务异常时发邮件到邮箱提醒
}
notification_email_from admin@localhost #邮件发送地址
smtp_server 127.0.0.1 #邮件服务器本机
smtp_connect_timeout 30 #smtp sever 超时时间
router_id LVS_DEVEL #服务标识,邮件主题
}

vrrp_instance VI_1 {
state MASTER #指定本服务器为主服务器
interface eth0
virtual_router_id 51 #虚拟路由标识,MASTER与BACKUP需一致
priority 100 #定义优先级,需大于BACKUP的priority值
advert_int 1
authentication { #设置验证类型与验证密码
auth_type PASS
auth_pass abcd #验证密码MASTER与BACKUP需一致
}
virtual_ipaddress {
192.168.8.30 #设置VIP,既配置在MASTER调度器上由于接受用户请求的地址
}
}

virtual_server 192.168.8.30 80 { #虚拟服务器定义部分既MASTER调度器
delay_loop 6 #运行情况监测时间6s一次
lb_algo wlc #设置调度算法为wlc
lb_kind DR #设置LVS的工作模式为DR模式
nat_mask 255.255.255.0 #虚拟服务器子网掩码
persistence_timeout 50 #session保持时间
protocol TCP #指定转发的协议类型

real_server 192.168.8.33 80 { #后端真实服务器节点配置realserver1
weight 3 #该节点服务器权重
HTTP_GET { #后端服务器情况检查方式HTTP_GET,向后端服务器发送http请求,无回应即为该节点服务器异常,剔除ipvsadm规则
url {
path /
status_code 200
}
connect_timeout 3 #3秒无响应超时
nb_get_retry 3 #重试次数
delay_before_retry 3 #重试时间间隔
}
}
real_server 192.168.8.34 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
6).将改配置文件复制到BACKUP主机
scp /etc/keepalived/keepalived.conf 192.168.8.32:/etc/keepalived/
7).启动keepalived服务
service keepalived start
至此MASTER的配置完成

1.3.2BACKUP配置
0).单网卡、桥接模式启动ha2,并配置ip地址为192.168.8.32 
1).与MASTER的配置相差不大
关闭iptables与selinux
安装openssl openssl-dev gcc-c++ kernel-devel ipvsadm keepalived。安装步骤参考MASTER的配置
2).修改MASTER传过来的keepalived.conf
vim /etc/keepalived/keepalived.conf
将 state MASTER 改为state MBACKUP
priority 100 改为priority 80
即可
3).启动keepalived服务
service keepalived start
至此BACKUP的配置完成

1.3.3Realserver1配置
1).单网卡、桥接模式启动rs1,并配置ip地址为192.168.8.33,关闭iptables与selinux
2).安装httpd服务
yum install httpd
3).配置测试页,启动httpd服务
echo "this is realserver1 test web" > /var/www/html/index.html
service httpd start
4).配置arptable调整网卡的响应/通告级别
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
5).配置网络别名及添加路由
ifconfig lo:0 192.168.8.30 broadcast 192.168.8.30 netmask 255.255.255.255 up
route add -host 192.168.8.30 dev lo:0

1.3.4Realserver2配置
1).与realserver1的配置差别不大,同样的  单网卡、桥接模式启动rs2,并配置ip地址为192.168.8.34,关闭iptables与selinux
安装httpd,创建测试页为与realserver1区别echo "this is realserver2 test web" > /var/www/html/index.html
启动httpd服务
配置arptable
配置网络别名添加路由
可使用curl http://192.168.8.33 检测realserver1的测试页是否正常
至此所有的配置结束

1.4检测

1.4.1实验结果检测
1).在MASTER输入ipvsadm -l -n 检查是否自动创建的了集群服务及添加的集群主机
输入ip addr 检查192.168.8.30 这个提供用户请求的ip地址是否存在本机
存在及正常

1.4.1LVS故障切换检测
1).假设MASTER出现异常,在MASTER输入service keepalived stop 停止keepalived服务,
使用ipvsadm -l -n 查看本机的ipvsadm是否清空
使用ip addr 查看VIP 192.168.8.30是否还存在本机
在BACKUP输入ipvsadm -l -n 查看BACKUP是否继承了MASTER的ipvsadm规则
输入ip addr 查看VIP 192.168.8.30是否存在本机
若有即为LVS故障切换成功。
假设MASTER解除异常 service keepalived start 重新启用
则ipvsadm规则与VIP都应该存在MASTER上

1.4.1后端服务器realserver健康状况检测
1).假设realserver1出现异常service httpd stop
则在LVS上的使用ipvsadm -l -n查看ipvsadm规则,ipvsadm将rs1剔除,显示为集群节点服务器中无rs1 192.168.8.33
假设realserver1解除异常service httpd start
则ipvsadm的规则上重新出现rs1 192.168.8.33

2其他情况

2.1当两个realserver节点,都出现异常
解决:将WEB服务重定向在MASTER与BACKUP上,显示错误页面。
1).yum install httpd
2).echo "404,Not Found" > /var/www/html/index.html
3).修改vim /etc/keepalived/keepalived.conf,添加sorry_server 127.0.0.1 80,修改后内容如下

virtual_server 192.168.8.30 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
sorry_server 127.0.0.1 80
real_server 192.168.8.33 80 {
weight 3
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

4).重启keepalived服务
service keepalived restart
5).手动将两台realserver的httpd服务stop,再访问http://192.168.8.30进行测试

这里写图片描述
测试
这里写图片描述


推荐阅读
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • Linux CentOS 7 安装PostgreSQL 9.5.17 (源码编译)
    近日需要将PostgreSQL数据库从Windows中迁移到Linux中,LinuxCentOS7安装PostgreSQL9.5.17安装过程特此记录。安装环境&#x ... [详细]
  • 在CentOS 7环境中安装配置Redis及使用Redis Desktop Manager连接时的注意事项与技巧
    在 CentOS 7 环境中安装和配置 Redis 时,需要注意一些关键步骤和最佳实践。本文详细介绍了从安装 Redis 到配置其基本参数的全过程,并提供了使用 Redis Desktop Manager 连接 Redis 服务器的技巧和注意事项。此外,还探讨了如何优化性能和确保数据安全,帮助用户在生产环境中高效地管理和使用 Redis。 ... [详细]
  • SecureCRT是一款功能强大的终端仿真软件,支持SSH1和SSH2协议,适用于在Windows环境下高效连接和管理Linux服务器。该工具不仅提供了稳定的连接性能,还具备丰富的配置选项,能够满足不同用户的需求。通过SecureCRT,用户可以轻松实现对远程Linux系统的安全访问和操作。 ... [详细]
  • Keepalived 提供了多种强大且灵活的后端健康检查机制,包括 HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK 和 MISC_CHECK 等多种检测方法。这些健康检查功能确保了高可用性环境中的服务稳定性和可靠性。通过合理配置这些检查方式,可以有效监测后端服务器的状态,及时发现并处理故障,从而提高系统的整体性能和可用性。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • Spring Boot 中配置全局文件上传路径并实现文件上传功能
    本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • Spark与HBase结合处理大规模流量数据结构设计
    本文将详细介绍如何利用Spark和HBase进行大规模流量数据的分析与处理,包括数据结构的设计和优化方法。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
author-avatar
郑郑郑克_583
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有