集群--LVS的DR模型配置
1.查看内核是否有IPVS内核模块
grep -i 'ip_vs' /boot/config-2.6.32-431.el6.x86_64
Centos6.5内核已经自带安装了lvs
2.安装ipvsadm
内核中的lvs是通过ipvsadm来进行管理的
yum install -y ipvsadm
3.环境准备#
管理IP地址 | 角色 | 备注 |
192.168.1.114 | 调度器(Director) | 对外提供VIP服务的地址为192.168.1.88 |
192.168.1.115 | RS1 | |
192.168.1.116 | RS2 |
这里的VIP我是用的网卡别名形式配置的:
ifconfig eth1:0 192.168.1.88 netmask 255.255.255.0 up
配置步骤#
添加Virtual Server,并查看
添加Real Server
在RS1中绑定VIP
查看路由信息
在RS中抑制ARP响应
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
如果需要取消ARP抑制,都置0
在RS2中进行与RS1同样的操作。
[root@RS2 ~]$ifconfig lo:116 192.168.1.88 netmask 255.255.255.255 up [root@RS2 ~]$route add -host 192.168.1.88 dev lo [root@RS2 ~]$echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore [root@RS2 ~]$echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce [root@RS2 ~]$echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore [root@RS2 ~]$echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
在浏览器中进行访问,可以看见LVS已经实现了转发
并且实现了负载均衡
我们也可以用Apache自带的ab工具进行检测
ab -n 1000 -c 100 http://192.168.1.88/
其中-n代表每次并发量,-c代表总共发送的数量
结合watch可以查看出每个RS的访问连接数
watch --interval=1 ipvsadm -Ln
结果如下:
健康检查脚本
#!/bin/sh VIP=192.168.1.88 PORT=80 RIP=( 192.168.1.115 192.168.1.116 ) while true do for((i=0;i<${#RIP[*]};i++)) do PORT_COUNT=`nmap ${RIP[$i]} -p $PORT|grep open|wc -l` if [ $PORT_COUNT -ne 1 ];then if [ `ipvsadm -Ln|grep ${RIP[$i]}|wc -l` -ne 0 ];then ipvsadm -d -t $VIP:$PORT -r ${RIP[$i]}:$PORT >/dev/null 2>&1 fi else if [ `ipvsadm -Ln|grep ${RIP[$i]}|wc -l` -eq 0 ];then ipvsadm -a -t $VIP:$PORT -r ${RIP[$i]}:$PORT -g -w 1 >/dev/null 2>&1 fi fi done sleep 10 done
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了