使用piranha搭建Linux Virtual Server (LVS)集群环境
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用piranha搭建Linux Virtual Server (LVS)集群环境相关的知识,希望对你有一定的参考价值。
最近做一下LVS集群方式的性能对比测试,在配置IP隧道方式时遇到一些诡异的问题:
1) 停止LVS服务后虚拟IP未被释放(似乎只有重启服务器才能释放,重启网卡、清空路由表、重启交换机等方式均无效);
2) 负载不均衡(有时会依次将压力全部压在其中一个成员身上,有时又是正常的);
之前测试“直接路由”方式时是手动配置方式,配置成功并没有发现问题。而这次使用IP隧道方式这么多问题,肯定是配置问题。
官方有介绍一个配置工具:piranha。在CentOS安装光盘也自带有,于是尝试了一下,非常方便!推荐大家使用。毕竟这东西发布了,即使有错也不会错太远,Bug就另谈。谁能确定我们手动配置就没有错也没有Bug呢?
Piranha 提供了一套解决方案,包括对服务状态的监控、业务服务器的监控和负载服务器本身热备。基本结构示意:
安装非常简单:
yum install ipvsadm modcluster piranha system-config-cluster php php-cli php-common
Piranha 是一个WEB服务(Apache+Php),安装完成后需要先设置登录密码:/usr/sbin/piranha-passwd,用户名是piranha 。
1、启动WEB服务:service piranha-gui start
2、启动LVS守护进程:service pulse start
3、可以访问了:http://127.0.0.1:3636。
详细配置可参考RedHat官网说明,对LVS稍有了解,搜一下很容易就上手了。
这里我想补充一下RealServer的服务配置。www.linuxidc.com因为Piranha本身提供了Virtual Server本身的配置,但没有提供RealServer的配置。而在网上搜到的一些文章只介绍了RealServer配置方式,不足以批量生产使用。
首先,LVS服务器若修改了配置重启时需要执行以下脚本:
killall -9 nanny
service pulse restart
service piranha-gui restart
若客户端使用直接路由方式,服务脚本如下:
#!/bin/bash
# RealServer服务脚本,直接路由方式
WEB_VIP=192.168.10.31
start(){
ifconfig lo:0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK [lvs_dr]"
}
stop(){
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0 down
/sbin/route del -host $WEB_VIP
sysctl -p >/dev/null 2>&1
echo "RealServer Stoped [lvs_dr]"
}
restart(){
stop
start
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
/sbin/ifconfig
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
若客户端使用IP隧道方式,服务脚本如下:
#!/bin/bash
# 业务服务器LVS服务脚本,IP隧道方式
WEB_VIP=192.168.10.31
start(){
ifconfig tunl0 $WEB_VIP netmask 255.255.255.255 broadcast $WEB_VIP
/sbin/route add -host $WEB_VIP dev tunl0
echo "1" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK [lvs_tun]"
}
stop(){
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/tunl0/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
ifconfig tunl0 down
/sbin/route del -host $WEB_VIP
sysctl -p >/dev/null 2>&1
echo "RealServer Stoped [lvs_tun]"
}
restart(){
stop
start
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
/sbin/ifconfig
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
由于笔者未用到NAT方式,在此不介绍。欢迎广大网友补充。
本文出自 “江湖笑笑生” 博客,请务必保留此出处http://hashlinux.blog.51cto.com/9647696/1758913
以上是关于使用piranha搭建Linux Virtual Server (LVS)集群环境的主要内容,如果未能解决你的问题,请参考以下文章
virtual box与vagrant组合实现轻量级的linux虚拟机系统搭建
基于 JWT 的 API + Piranha CMS 劫持 [Authorize] 路由
InvalidOperationException:没有为“Piranha.AspNetCore.Services.IApplicationService”类型注册服务