LVS配合piranha实现负载均衡及DR高可用

2024-03-15 11:10

本文主要是介绍LVS配合piranha实现负载均衡及DR高可用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. 架构

VIP:192.168.1.20

DR:192.168.1.19

DR_BACK:192.168.1.15

RS1: 192.168.1.17

RS2: 192.168.1.18

二.初始化配置

同步时间

ntpdate asia.pool.ntp.org

关闭selinux

#临时修改,立即生效
setenforce 0
#永久修改,需要重启
vim /etc/sysconfig/selinuxSELINUX=disabled

为了调试方便暂时关闭防火墙

/etc/init.d/iptables stop


三.DR配置

绑定虚拟IP

ifconfig eth0:0 192.168.1.20 broadcast 192.168.1.20 netmask 255.255.255.255 up

设置路由

route add -host 192.168.1.20 dev eth0:0

开启包转发

sed -i 's/net.ipv4.ip_forward\ =\ 0/net.ipv4.ip_forward\ =\ 1/' /etc/sysctl.conf 
sysctl -pnet.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

安装lvs和piranha

yum install ipvsadm piranha -y

设置piranha密码

piranha-passwd
New Password: 
Verify: 
Updating password for user piranha

启动piranha

/etc/init.d/piranha-gui start

在浏览器访问piranha

  http://192.168.1.19:3636/login登录 

用户名:piranha

密码:刚刚你设置的密码

172441_2sFx_1767904.jpg


配置Backup Server 

         点击 ENABLE 激活冗余服务器

         Redundant server public IP: 192.168.1.15        //备份LVS地址

         Heartbeat interval (seconds):6                          //心跳网络检测时间

          Assume dead after(seconds):18                       //死亡转移时间

          Heartbeat runs on port:539                              //监控的端口

          Monitor NIC links for failures : 不勾选                   //网卡链路失效选项

          Syncdaemon: 不勾选                                            //同步守护进程选项

173539_mc2Y_1767904.jpg

配置虚拟服务器  > 点击 VIRTUAL SERVER   > ADD

           添加一条心的记录并编辑

           name :  LVS                                  //自定义名称

          Application port  :80                               //监控应用端口号

          Protocol :tcp                                           //监控网络的协议类型

          Virtual IP Address:192.168.1.20          //虚拟服务器的IP地址

          Virtual IP Network Mask: 255.255.255.255  //虚拟服务掩码

          Device: eth0:0                                            //虚拟IP设备宿主 >

          Re-entry time: 15                                         //移除RS后从新加入时间

          Service timeout: 6                                       //RS失效后存活时间

          Scheduling: 保持默认(最小连接数)                                        //调度算法

           Persistence: 保持默认                                           //维持时间

           Persistence Network Mask:保持默认  //掩码


173539_PsYF_1767904.jpg

配置 Real-server1

         点击Real SERVER     新建一条RS 记录

          NAME:node1             //自定义RS名称

          Address:192.168.1.17                //RS1服务器IP地址

          Port:80                                          //服务的端口

          Weight:1                                       //调度权重

173847_pKQG_1767904.jpg

配置 Real-server2

         点击Real SERVER     新建一条RS 记录

          NAME:node1             //自定义RS名称

          Address:192.168.1.18                //RS1服务器IP地址

          Port:80                                          //服务的端口

          Weight:1                                       //调度权重

激活

174038_101P_1767904.jpg

174038_QQf5_1767904.jpg

配置好的配置文件如下(/etc/sysconfig/ha/lvs.cf)

serial_no = 12
primary = 192.168.1.19
service = lvs
backup_active = 1
backup = 192.168.1.15
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 0
syncdaemon = 0
virtual LVS {active = 1address = 192.168.1.20 eth0:0vip_nmask = 255.255.255.255port = 80send = "GET / HTTP/1.0\r\n\r\n"expect = "HTTP"use_regex = 0load_monitor = nonescheduler = wlcprotocol = tcptimeout = 6reentry = 15quiesce_server = 0server node1 {address = 192.168.1.17active = 1port = 80weight = 1}server node2 {address = 192.168.1.18active = 1port = 80weight = 1}
}


复制配置文件到DR_BACK

scp /etc/sysconfig/ha/lvs.cf 192.168.1.15:/etc/sysconfig/ha/

启动LVS服务(先启动主)

/etc/init.d/pulse start
Starting pulse:                                            [  OK  ]

查看lvs转发

 ipvsadm -l -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.20:80 wlc-> 192.168.1.17:80              Route   1      0          4         -> 192.168.1.18:80              Route   1      0          4

四. RS配置

建立lvsrs启动脚本

vim /etc/init.d/lvsrs

  

#!/bin/bash
#description : Start Real Server 
# chkconfig: 2345 90 60
# Default-Start:  2345
# Default-Stop: 90
VIP=192.168.1.20
#./etc/rc.d/init.d/functions
case "$1" instart)echo " Start LVS  of  Real Server"/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 upecho "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce ;;stop)/sbin/ifconfig lo:0 downecho "close LVS Director server"echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announce;;*)echo "Usage: $0 {start|stop}"exit 1
esac

添加进启动项,开机自启动

chkconfig --add lvsrs

启动服务

/etc/init.d/lvsrs start

五.验证

验证负载均衡:

在RS1和RS2分别安装nginx并启动,修改默认首页

vim /usr/local/nginx/html/index.html

<h1>标签分别改成NODE1和NODE2

浏览器访问http://192.168.1.20

显示NODE1

换个机器访问显示NODE2及表示成功。

这个时候再来查看lvs状态

ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.20:http wlc-> 192.168.1.17:http            Route   1      2          1         -> 192.168.1.18:http            Route   1      2          0

验证DR高可用:

手动停止主DR,模拟故障

/etc/init.d/pulse stop
Shutting down pulse:                                       [  OK  ]

继续访问http://192.168.1.20

如果仍然能正常访问则证明成功

这个时候在备份DR上查看LVS状态

[root@vm2 ha]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.1.20:80 wlc-> 192.168.1.17:80              Route   1      0          2         -> 192.168.1.18:80              Route   1      0          3


转载于:https://my.oschina.net/liuhuan0927/blog/617819

这篇关于LVS配合piranha实现负载均衡及DR高可用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/811770

相关文章

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

PostgreSQL中MVCC 机制的实现

《PostgreSQL中MVCC机制的实现》本文主要介绍了PostgreSQL中MVCC机制的实现,通过多版本数据存储、快照隔离和事务ID管理实现高并发读写,具有一定的参考价值,感兴趣的可以了解一下... 目录一 MVCC 基本原理python1.1 MVCC 核心概念1.2 与传统锁机制对比二 Postg

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

C++中零拷贝的多种实现方式

《C++中零拷贝的多种实现方式》本文主要介绍了C++中零拷贝的实现示例,旨在在减少数据在内存中的不必要复制,从而提高程序性能、降低内存使用并减少CPU消耗,零拷贝技术通过多种方式实现,下面就来了解一下... 目录一、C++中零拷贝技术的核心概念二、std::string_view 简介三、std::stri

C++高效内存池实现减少动态分配开销的解决方案

《C++高效内存池实现减少动态分配开销的解决方案》C++动态内存分配存在系统调用开销、碎片化和锁竞争等性能问题,内存池通过预分配、分块管理和缓存复用解决这些问题,下面就来了解一下... 目录一、C++内存分配的性能挑战二、内存池技术的核心原理三、主流内存池实现:TCMalloc与Jemalloc1. TCM

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

基于Python实现一个Windows Tree命令工具

《基于Python实现一个WindowsTree命令工具》今天想要在Windows平台的CMD命令终端窗口中使用像Linux下的tree命令,打印一下目录结构层级树,然而还真有tree命令,但是发现... 目录引言实现代码使用说明可用选项示例用法功能特点添加到环境变量方法一:创建批处理文件并添加到PATH1

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal