在Linux下用LVS和Ipvsadm做Web负载均衡(推荐)

发布时间:2023-04-29 09:41:49

LVS和IPVSadm用于Linux下的Web负载平衡。如果你想对负载平衡有一个全面和宏观的理解,你可以看到服务器负载平衡技术的原理和应用。一、简介及环境配置 LVS和Ipvsadm用于Linux下的Web负载平衡。本例使用的操作系统为:Ubuntu;LVS是在Linux操作系统的基础上建立虚拟服务器,实现服务节点之间的负载平衡。基于linux内核,2.6.默认情况下,X内核集成了LVS模块,LVS常用负载均衡的实现是基于IP协议的,因此一般称为IPVS。 有三台Ubuntu服务器,192.168.0.111、192.168.0.197、192.168.0.198,那么我们就把192.168.0.111作为负载均衡服务器,首先需要检查操作系统是否集成了LVS,可以在命令中执行:modprobe -l | grep ipvs,如果出现: kernel/net/netfilter/ipvs/ip_vs.ko kernel/net/netfilter/ipvs/ip_vs_rr.ko kernel/net/netfilter/ipvs/ip_vs_wrr.ko kernel/net/netfilter/ipvs/ip_vs_lc.ko kernel/net/netfilter/ipvs/ip_vs_wlc.ko kernel/net/netfilter/ipvs/ip_vs_lblc.ko kernel/net/netfilter/ipvs/ip_vs_lblcr.ko kernel/net/netfilter/ipvs/ip_vs_dh.ko kernel/net/netfilter/ipvs/ip_vs_sh.ko kernel/net/netfilter/ipvs/ip_vs_sed.ko kernel/net/netfilter/ipvs/ip_vs_nq.ko kernel/net/netfilter/ipvs/ip_vs_ftp.ko 说明已经有LVS了,不需要重新编译和安装。如果是其他Linux系统,没有内置LVS,也可以在线搜索安装,不是很复杂。 然后需要安装ipvsadm,直接运行apt-get install 安装成功后,ipvsadm命令,运行命令: ipvsadm 会看到提示: IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn 说明已成功安装。二、负载均衡器配置 下一步是配置LVS,即负载均衡器(192.168.0.111)建立虚拟ip,然后用ipvsadm建立转发规则: ifconfig eth0:0 192.168.0.112 netmask 255.255.255.255 broadcast 192.168.0.112 echo "1" >/proc/sys/net/ipv4/ip_forward ipvsadm -C ipvsadm -A -t 192.168.0.112:8888 -s rr ipvsadm -a -t 192.168.0.112:8888 -r 192.168.0.197 -g -w 1 ipvsadm -a -t 192.168.0.112:8888 -r 192.168.0.198 -g -w 1 注意:192.168.0.197和192.168.0.Web服务器分别在198运行,端口为8888,在此之前,必须确保这两个Web服务器能够通过浏览器正常访问。 执行上述命令后,可以再次操作命令: ipvsadm 如果您看到以下信息,说明配置成功: IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP eric-app-server.local:8888 rr -> ubuntu-2.local:8888 Route 1 0 0 -> ubuntu.local:8888 Route 1 0 03.真实服务器配置 然后需要配置192.168.0的真实服务器.197和192.168.0.198,以下命令分别在这两个服务器上运行: ifconfig lo:0 192.168.0.112 netmask 255.255.255.255 broadcast 192.168.0.112 route add default gw 192.168.0.112 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 sudo sysctl -p四、配置完成后看效果 此时,整个负载均衡配置基本完成,输入浏览器:http://192.168.0.112:8888/index.html,你会看到Hello Word-1111111111111111111! 或者Hello Word-222222222222222222222! 或者Hello Word-222222222222222222222! ,因为http://192.168.0.197:8888/index.html页面的内容如下:Hello Word-1111111111111111111!,http://192.168.0.197:8888/index.html页面的内容如下:Hello Word-222222222222222222222! 另外,刚开始走弯路的时候,刚开始找的三台服务器不在同一个局域,还有虚拟机,配置不成功。基于这种模式的负载平衡必须要求负载平衡服务器有双网卡,一个是内网,另一个是外网,需要和后面的真实服务器在同一个局域。五、ipvsadm命令参考 1,virtual-service-address:指虚拟服务器的ip 地址 2,real-service-address:指真实服务器的ip 地址 3,scheduler:调度方法 ipvsadm 用法和格式如下: ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p [timeout]] [-M netmask] ipvsadm -D -t|u|f virtual-service-address ipvsadm -C ipvsadm -R ipvsadm -S [-n] ipvsadm -a|e -t|u|f service-address:port -r real-server-address:port [-g|i|m] [-w weight] ipvsadm -d -t|u|f service-address -r server-address ipvsadm -L|l [options] ipvsadm -Z [-t|u|f service-address] ipvsadm --set tcp tcpfin udp ipvsadm --start-daemon state [--mcast-interface interface] ipvsadm --stop-daemon ipvsadm -h 说明命令选项: 命令选项格式有两种,又长又短,意思是一样的。在实际使用中,两者都可以。在实际使用中,两者都可以。 -A --add-service 在内核虚拟服务器表中添加一个新的虚拟服务器记录。也就是说,添加一个新的虚拟服务器。 -E --edit-service 编辑内核虚拟服务器表中的虚拟服务器记录。 -D --delete-service 删除内核虚拟服务器表中的虚拟服务器记录。 -C --clear 清除内核虚拟服务器表中的所有记录。 -R --restore 恢复虚拟服务器规则 -S --save 保存虚拟服务器规则,输出为-R 可读格式的选项 -a --add-server 新的真实服务器记录添加到内核虚拟服务器表的记录中。也就是说,在虚拟服务器中添加一个新的真实服务器 -e --edit-server 编辑虚拟服务器记录中的真实服务器记录 -d --delete-server 删除虚拟服务器记录中的真实服务器记录 -L|-l --list 内核虚拟服务器表显示 -Z --zero 虚拟服务表计数器清零(清空当前连接数量等。) --set tcp tcpfin udp 设置连接超时值 --start-daemon 启动同步守护过程。他后面可以是master 或者backup用来解释LVS Router 是aster 或backup。他后面可以是master 或者backup用来解释LVS Router 是aster 或者backup。keepaliveded也可用于此功能 的VRRP 功能。 --stop-daemon 停止同步守护过程 -h --help 显示帮助信息 其它选项: -t --tcp-service service-address 说明虚拟服务器提供tcp 的服务[vip:port] or [real-server-ip:port] -u --udp-service service-address 说明虚拟服务器提供udp 的服务[vip:port] or [real-server-ip:port] -f --fwmark-service fwmark 说明是通过iptables 标注的服务类型。 -s --scheduler scheduler rr|wrr|lc|wlc|lblc|lblc|dh|sed|nq使用的调度算法有几个选项。默认调度算法为: wlc. -p --persistent [timeout] 服务持久稳定。这个选项意味着同一个客户的多个请求将由同一个真实的服务器处理。这个选项意味着同一个客户的多个请求将由同一个真实的服务器处理。timeout 的默认值为300 秒。 -M --netmask netmask persistent granularity mask -r --real-server server-address 真正的服务器[Real-Server:port] -g --gatewaying 指定LVS 工作模式是直接路由模式(也是LVS) 默认模式) -i --ipip 指定LVS 隧道模式的工作模式是 -m --masquerading 指定LVS NAT的工作模式 模式 -w --weight weight 真实服务器的权值 --mcast-interface interface 指定组播的同步接口 -c --connection 显示LVS 目前的连接 如:ipvsadm -L -c --timeout 显示tcp tcpfin udp timeout 值 如:ipvsadm -L --timeout --daemon 显示同步保护过程的状态 --stats 显示统计信息 --rate 显示速率信息 --sort 对虚拟服务器和真实服务器进行排序输出 --numeric -n 输出IP 地址和端口的数字形式

上一篇 Java中>>、>>>、<<
下一篇 报错:Invalid bound statement (not found):

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题