集群--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
复制代码

 

posted @   头痛不头痛  阅读(238)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示
主题色彩