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使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

PyCharm中配置PyQt的实现步骤

《PyCharm中配置PyQt的实现步骤》PyCharm是JetBrains推出的一款强大的PythonIDE,结合PyQt可以进行pythion高效开发桌面GUI应用程序,本文就来介绍一下PyCha... 目录1. 安装China编程PyQt1.PyQt 核心组件2. 基础 PyQt 应用程序结构3. 使用 Q

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

linux下shell脚本启动jar包实现过程

《linux下shell脚本启动jar包实现过程》确保APP_NAME和LOG_FILE位于目录内,首次启动前需手动创建log文件夹,否则报错,此为个人经验,供参考,欢迎支持脚本之家... 目录linux下shell脚本启动jar包样例1样例2总结linux下shell脚本启动jar包样例1#!/bin

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到