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

相关文章

pandas中位数填充空值的实现示例

《pandas中位数填充空值的实现示例》中位数填充是一种简单而有效的方法,用于填充数据集中缺失的值,本文就来介绍一下pandas中位数填充空值的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是中位数填充?为什么选择中位数填充?示例数据结果分析完整代码总结在数据分析和机器学习过程中,处理缺失数

Golang HashMap实现原理解析

《GolangHashMap实现原理解析》HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持高效的插入、查找和删除操作,:本文主要介绍GolangH... 目录HashMap是一种基于哈希表实现的键值对存储结构,它通过哈希函数将键映射到数组的索引位置,支持

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

Python利用ElementTree实现快速解析XML文件

《Python利用ElementTree实现快速解析XML文件》ElementTree是Python标准库的一部分,而且是Python标准库中用于解析和操作XML数据的模块,下面小编就来和大家详细讲讲... 目录一、XML文件解析到底有多重要二、ElementTree快速入门1. 加载XML的两种方式2.

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组