设为首页 收藏本站
查看: 1483|回复: 0

[经验分享] LVS + Piranha 高可用负载均衡

[复制链接]

尚未签到

发表于 2019-1-3 06:01:18 | 显示全部楼层 |阅读模式
  一、背景和目的
1. 为应用服务器提供高可用性和负载均衡的能力,满足大量并发访问的需要
2. 节约成本。替代商业的硬件负载均衡器,为起步型IT公司提供价格低廉的解决方案。理想选择。
二、 软件简介
1. LVS简介
LVS是一个开源的软件,由毕业于国防科技大学的章文嵩博士于1998年5月创立,可以实现LINUX平台下的简单负载均衡。LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。
1.1工作原理
LVS由前端的负载均衡器(Load Balancer,LB)和后端的真实服务器(Real Server,RS)群组成。RS间可通过局域网或广域网连接。结构对用户是透明的,用户只能看见一台作为LB的虚拟服务器(Virtual Server),而看不到提供服务的RS群。
当用户的请求发往虚拟服务器,LB根据设定的包转发策略和负载均衡调度算法将用户请求转发给RS。RS再将用户请求结果返回给用户。同请求包一样,应答包的返回方式也与包转发策略有关。
1.2三层结构
(1) Load Balancer(负载均衡器):
调度器是整个集群系统的前端,负责把客户请求转发到Real Server上。
Backup是备份负载调度器,当Master Load Balancer不可用时,有Backup接替,成为Master Load Balancer。
Load Balancer通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时把它从群中剔除,恢复时重新加入。

(2) Server pool(服务器池):
Server pool是一组运行实际应用服务的机器,比如WEB, Mail, FTP, DNS, Media等等。

(3) Shared Storage(共享存储):
Shared Storage为所有Real Server提供共享存储空间和一致的数据内容。

1.3实现模式
1)Virtual Server via NAT
2)Virtual Server via IP Tunneling
3)Virtual Server via Direct Routing
1.4 调度算法

  • IPVS的负载调度算法有十种:
  • 轮叫(Round Robin)
  • 加权轮叫(Weighted Round Robin)
  • 最少链接(Least Connections)
  • 加权最少链接(Weighted Least Connections)
  • 基于局部性的最少链接(Locality-Based Least Connections)
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
  • 目标地址散列(Destination Hashing )
  • 源地址散列(Source Hashing)
  • 最短期望延迟(Shortest Expected Delay)
  • 无须队列等待(Never Queue)
2. Piranha简介
一款类似于keepalived的web配置软件,优点是方便而而且直观,在30分钟内可配置一套基于LVS基础的负载均衡高可用解决方案。
2.1 Piranha组件
> Pluse
负责主调度器和备份调度器之间的的健康状态检测,heartbest的通信进程。
> Lvsd
Lvsd进程活动在LVS路由器中,读取/etc/sysconfig/ha/lvs.cf,调用ipvsadm来构建和维护IPVS路由表,并为每个配置LVS服务分配nanny。
> Ipvsadm
此服务更新和维护内核中的IPVS路由表,LVS进程通过调用ipvsadm来添加、修改或删除IPVS路由表。
> Nanny
Nanny存在于状态是Active的的路由器中。通过此进程,活动状态的调度器可以检测每个realserver的状态,同时管理监控负载状态。每个realserver中定义的每一个服务都有一个独立的nanny进程管理。
> Send_arp
在活动调度器失效时,备用调度器调用send_arp将虚拟地址切换到备份调度器。并在公网和局域网发送命令关掉lvsd进程,同时启动备份掉武器的LVSD进程。
三、 配置
3.1方案IP信息列表
  
名称
IP 地址
心跳地址
LVS-Active Router
192.168.8.226/24
10.10.1.1/30
LVS-Backup Router
192.168.8.227/24
10.10.1.2/30
Real-Server1
192.168.8.228/24

Real-Server2
192.168.8.229/24

LVS-VIP
192.168.8.230/32

Gateway
192.168.8.1/24


3.2 环境预约
> 配置平台:
Director:CentOS 6.2
RealServer:Windows Server Enterprise 2003、CentOS 6.2
> 配置方式:VS/DR(直接路由)
> 配置软件:ipvsadm+piranha
3.3 Virtual Server部署
3.3.1 安装LVS、Piranha、PHP。
  
#yum install ipvsadm modecluster piranha system php php-cli php-common

3.3.2 配置Piranha
3.3.2.1主LVS服务器:
  
#vim /etc/sysctl.conf //修改系统参数
Net.ipv4.ip_forward = 1 //将默认0修改为1,开启IP转发
#sysctl –p //执行命令即时生效

3.3.2.2启动piranha配置服务
  
#/etc/init.d/piranha-gui start     //启动piranha服务
#/usr/sbin/piranha-passwd      //设置piranha登录密码

使用浏览器打开管理页面:http://localhost:3636(图001)

【图001】
登录管理页面用户名:piranha密码:(执行/usr/sbin/piranha-passwd)后输入的密码。(图002)

【图002】
3.3.3 配置主LVS服务器
点击GLOBAL SETTINGS(图003)
> Primary server public IP: 192.168.8.226
> Primary server private IP: 10.10.1.1 //心跳地址
> Use network type: Direct Routing //直接路由方式
> 点击ACCEPT //保存

【图003】
3.3.4 配置Backup Server (不部署备用LVS直接查看3.3.5)
> 点击ENABLE激活冗余服务器(图004)
> Redundant server public IP: 192.168.8.227 //备份LVS地址
> Heartbeat interval (seconds):6 //心跳网络检测时间
> Assume dead after(seconds):18 //死亡转移时间
> Heartbeat runs on port:539 //监控的端口
> Monitor NIC links for failures : 不勾选 //网卡链路失效选项
> Syncdaemon: 不勾选 //同步守护进程选项

【图004】
3.3.5 配置虚拟服务器
> 点击VIRTUAL SERVERS è ADD è EDIT,添加一条新的记录并编辑(图005)
> Name: LVS-VIP //自定义名称
> Application port:80 //监控应用端口号
> Protocol:TCP //监控网络的类型
> Virtual IP Address:192.168.8.230 //虚拟服务器的IP地址
> Virtual IP Network Mask: 255.255.255.255 //虚拟服务掩码
> Device: eth0:1 //虚拟IP设备宿主
> Re-entry time: 15 //移除RS后从新加入时间
> Service timeout: 6 //RS失效后存活时间
> Scheduling: WRR //调度算法
> Persistence: 30 //维持时间
> Persistence Network Mask:255.255.255.255 //掩码

【图005】
3.3.6 配置Real-server1
> 点击REAL SERVER è ADD è EDIT 新建一条RS记录(图006)
> NAME:Real-Server01 //自定义RS名称
> Address:192.168.8.228 //RS1服务器IP地址
> Port:80 //服务的端口
> Weight:1 //调度权重

【图006】
3.3.7 配置Real-Server2
> 点击REAL SERVER è ADD è EDIT 新建一条RS记录(图007)
> NAME:Real-Server02 //自定义RS名称
> Address:192.168.8.229 //RS2服务器IP地址
> Port:80 //服务的端口
> Weight:1 //调度权重

【图007】
3.3.8 激活服务器
完成上述操作后,要激活虚拟服务器(图008)及所有的真实服务器(图009),使其为”UP”状态。

【图008】

【图009】
3.3.8 启动LVS服务
  
#service pulse start

3.3.9 Backup Server配置
> 如安装主LVS服务器一样安装备份LVS服务器软件
> 复制Active服务器lvs.cf脚本到备份服务器,并启动服务器
  
#scp /etc/sysconfig/ha/lvs.cf 192.168.8.227:/etc/sysconfig/ha
#service pulse start //启动服务

3.4 Real Server部署
3.4.1 配置真实服务器Windows
使用Windows作为RealServer,需要使用Microsoft loopback adapter(回环接口)设置虚拟VIP,子网掩码要设置为32位以解决DR模式中ARP的问题,实现ARP隐藏。
> 配置VIP
添加Microsoft loopback adapter ,打开控制面板,依次点添加硬件、选择设备已连接好、选择添加新的硬件、手动安装、网络适配器便可添加Microsoft loopback adapter设备(图010)

【图010】
设置IP地址为192.168.8.230掩码255.255.255.255,windows 2003需要修改注册表才能实现。打开注册表HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
找到Microsoft loopback adapter设置ipaddress值:192.168.8.230
Subnetmask: 255.255.255.255,禁用设备再启用即可。(图011)

【图011】
Ø 配置公共地址
Ipaddress: 192.16.8.228 //局域网公共IP地址
Netmask: 255.255.255.0 //子网掩码
Getway : 192.168.8.1 //默认网关
完成后,按照此方法将配置RealServer02
局域网地址:192.168.8.229 //填写约定的地址
VIP地址:192.168.8.230 //虚拟服务IP
3.4.2 配置真实服务器Linux
> 配置RealServer 脚本
  
#vim /usr/local/sbin/Realserver.sh
#!/bin/bash
VIP=192.168.8.230
case "$1" in
start)
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $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
echo "RealServer Started"
;;
stop)
ifconfig lo:0 down
route del $VIP > /dev/null 2>&1
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac


编写完成后,分别在RealServer1和Realserver2执行。
  
#/usr/local/sbin/Realserver.sh start

查看LVS服务状态
  
#ipvsadm -ln

查看LVS服务监听日志
  
#tail /var/log/message






运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-658739-1-1.html 上篇帖子: 深入分析LVS (数据报层面) 下篇帖子: LVS ActiveConn InActConn 详解 优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表