单独配置LVS负载均衡服务器+web

embedded/2024/10/20 9:11:40/

注意:

(1) lvs基于四层ip+端口转发,不支持后的realserver配置多个虚拟主机,可以在lvs上配置基于不同ip+端口的虚拟主机
(2) LVS-DR模式中,负载均衡服务器(LB)和后端真实服务器(realserver)需要在同一局域网,也就是内网ip是同一网段
(3) vip(虚拟ip)最好和内网ip在同一网段,并且最后将vip映射到公网ip
(4) 后端realserver只要可以正常上网就可以,因为realserver需要直接给用户回复,不再经过负载均衡服务器
(5) vip不能和物理ip冲突
(6) 做lvs负载均衡最少需要三台服务器,一台lvs两台web
(7) 两台web服务的网站内容必须相同
(8) lvs可用nginx代替,都可以实现负载均衡

环境:
请添加图片描述

一、搭建web服务器(我这里已经搭建好,并可以访问)
web1      访问 http://www.etiantian.org   >>   显示:www-nginx-172.16.1.7               访问 http://bbs.etiantian.org     >>   显示:bbs-nginx-172.16.1.7web2     访问 http://www.etiantian.org   >>    显示:www-apache-172.16.1.8访问 http://bbs.etiantian.org     >>    显示:bbs-apache-172.16.1.8
lvsrealserver_22">二、配置lvs和realserver
(1) 安装ipvsadm
yum -y install ipvsadm(2) 配置lvs-启动/停止脚本
[root@Oldboy ~]# cat /etc/init.d/lvs_DR 
#!/bin/sh
# set the vip and port  
VIP=172.16.1.254
# set the rip and port  
# web  
RIP1=172.16.1.7
RIP2=172.16.1.8
Usage ()
{echo "Usage:`basename $0` (start|stop|status) "exit 1
}if [ $# -ne 1 ];thenUsage
fi  case $1 instart)echo "start LVS of DirectorServer"echo 1 > /proc/sys/net/ipv4/ip_forward
# set the vip/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up
# clear ipvs table/sbin/ipvsadm -C
# add lvs vip and port  /sbin/ipvsadm -A -t $VIP:80 -s wrr
# add rip and port/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1/sbin/ipvsadm -L -n;;  stop)echo "close LVS DirectorServer"  /sbin/ipvsadm -C/sbin/ifconfig eth0:1 down;;status)  /sbin/ipvsadm -L -n  ;;  *)  Usage  
esac[root@Oldboy ~]# chmod +x /etc/init.d/lvs_DR 
[root@Oldboy ~]# /etc/init.d/lvs_DR start(3) realserver启动脚本(每次重启网卡需要启动这个脚本)[root@Oldboy ~]# cat /etc/init.d/lvs_realserver 
#!/bin/sh  
VIP=172.16.1.254Usage ()
{echo "Usage:`basename $0` (start|stop)"exit 1
}if [ $# -ne 1 ];thenUsage
ficase $1 instart)echo "reparing for Real Server"echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announceecho "1" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/eth0/arp_announce/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255  up
#/sbin/route add -host $VIP dev lo:0;;stop)/sbin/ifconfig lo:0 downecho "0" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/all/arp_announceecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_ignoreecho "0" >/proc/sys/net/ipv4/conf/eth0/arp_announceecho "stop Real Server";; *)Usage
esac[root@Oldboy ~]# chmod +x /etc/init.d/lvs_realserver 
[root@Oldboy ~]# /etc/init.d/lvs_realserver start
三、将vip映射到公网ip(由于我这里没有硬件防火墙,只能使用同一局域网的其它服务器代替,这台服务器需要能联网)
(1) 开启路由转发
[root@Oldboy ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
[root@Oldboy ~]# sysctl -p
net.ipv4.ip_forward = 1(2) 配置地址映射
iptables -F -t nat
iptables -t nat -I PREROUTING -p tcp  -d 10.0.0.51 --dport 80 -j DNAT --to-destination 172.16.1.254:80
iptables -t nat -A POSTROUTING  -j MASQUERADE
/etc/init.d/iptables save
/etc/init.d/iptables restart
四、测试访问
(1) 客户端绑定hosts
10.0.0.51  www.etiantian.org bbs.etiantian.org blog.etiantian.org(2) 访问http://www.etiantian.org  随机显示 www-nginx-172.16.1.7  和  www-apache-172.16.1.8访问http://bbs.etiantian.org    随机显示  bbs-nginx-172.16.1.7   和  bbs-apache-172.16.1.8或任意停止一台realserver查看是否可以正常访问
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 到此为止 lvs+web  负载均衡搭建完成 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
lvsDRlvs_149">五、为了方便理解lvs-DR模式原理,下面是手动配置lvs负载均衡的过程:
一、lvs利用 ipvsadm工具手动配置实验环境:
192.168.1.181(LB)              #调度器(VIP)
192.168.0.198(LB)              #调度器(DIP)
192.168.0.13 (RS1)           #web服务器1(RIP)
192.168.0.171 (RS2)            #web服务器2(RIP)搭建步骤:1、在RS1和RS2安装好两台web服务器并能够访问[root@RS1 ~]# yum -y install httpd
[root@RS1 ~]# echo "RS1-0.13" >> /var/www/html/index.html   #建立测试页
[root@RS1 ~]# /etc/init.d/httpd restart[root@RS2 ~]# yum -y install httpd
[root@RS2 ~]# echo "RS1-0.13" >> /var/www/html/index.html   #建立测试页
[root@RS2 ~]# /etc/init.d/httpd restart2、在Directory(调度器)上安装ipvsadm(1)下载ipvsadm-1.24.tar.gz
[root@LB ~]# wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz            (2)查看/usr/src/kernels/中是否有内核,并做软链接(安装lvs的需要),没有则yum安装kernel-devel           
[root@LB ~]# ls -ld /usr/src/kernels/2.6.32-504.23.4.el6.x86_64
[root@LB ~]# ln -s /usr/src/kernels/2.6.32-504.23.4.el6.x86_64  /usr/src/linux
[root@LB ~]# ls -l /usr/src/(3)解压并安装ipvsadm
[root@LB ~]# tar zxf ipvsadm-1.24.tar.gz
[root@LB ~]# cd ipvsadm-1.24
[root@LB ~]# make
[root@LB ~]# make install(4)执行并查看ipvsadm 是否安装成功
[root@LB ~]# /sbin/ipvsadm
[root@LB ~]# lsmod | grep ip_vs
#############################################ip_vs                 115643  0            
#############################################3、手工添加vip(重启网卡需要再次添加):[root@LB ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.0 up4、在DR(调度器)上手工执行配置添加LVS服务并增加两台RS(1)清除ipvsadm(内核)表中的所有记录
[root@LB ~]# ipvsadm -C(2)设置连接超时值(分别是tcp tcpfin udp的超时时间)
[root@LB ~]# ipvsadm --set 30 5 60(3)添加一条虚拟服务器记录并指定vip,算法为加权轮叫,超时时间为20s
[root@LB ~]# ipvsadm -A -t 192.168.1.181:80 -s wrr -p 20(添加)
[root@LB ~]# ipvsadm -D -t 192.168.1.181:80(删除)#########################################################################################################
参数说明:                                                                                              
-A:--add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也就是增加一台新的虚拟服务                                                                            #
-t: 说明虚拟服务器提供的是tcp 的服务 [vip:port] or [real-server-ip:port]  
-s: 使用的调度算法,有这样几个选项  rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq,      
wrr:加权轮叫(Weighted Round Robin)(简称wrr),根据RS的权重会优先访问权重高的真实服务器(RS), 调度器可以自动问询真实服务器的负载情况,并动态地调整其权值(权重)                 
wlc:加权最少链接调度 (简称wlc),来自同一个客户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。                
#########################################################################################################(4)添加一条真实服务器记录并指导Directory的vip和RealServer地址,模式为DR(路由模式),权重为1             
[root@LB ~]# ipvsadm -a -t 192.168.1.181:80 -r 192.168.0.13:80 -g -w 1(添加)                          
[root@LB ~]# ipvsadm -a -t 192.168.1.181:80 -r 192.168.0.171:80 -g -w 1(添加)                         
[root@LB ~]# ipvsadm -d -t 192.168.1.181:80 -r 192.168.0.171:80(删除)                                 #########################################################################################################
参数说明:                                                                                             
-a: 在内核虚拟服务器表的记录里添加一条新的真实服务器                                                    
-t: 说明虚拟服务器提供的是tcp 的服务 [vip:port] or [real-server-ip:port]                                
-r: 真实的服务器[Real-Server:port]                                                                      
-g: 指定LVS 的工作模式为直接路由模式-DR模式(也是LVS 默认的模式)                                       
-w: 真实服务器的权值(权重)                                                                              
#########################################################################################################5、在RS(真实服务器)上添加vip和抑制ARP广播添加vip(重启网卡需要再次添加):
[root@RS1 ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.255 up
[root@RS2 ~]# ifconfig eth0:181 192.168.1.181 netmask 255.255.255.255 up抑制ARP广播(重启网卡需要再次添加):
RS1echo "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_announceRS2
[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#########################################################################################################
为什么要抑制ARP广播:                                                                                   
当客户端发起访问VIP 对应的域名的请求时,根据网络通信原理会产生ARP 广播,因为负载均衡器和真实的服务器在同一网络并且VIP设置在集群中的每个节点上,此时集群内的真实服务器会尝试回答来自客户端计算机的查找VIP 的ARP广播,这就会产生问题,大家都说我是"VIP",为了达到负载均衡的目的,必须让真实服务器忽略来自客户端计算机的ARP广播请求。                                                                            
#########################################################################################################6、客户端访问vip地址测试:
(1)先访问RS1和RS2,能正确访问
http://192.168.1.13 
http://192.168.1.171(2)再访问调度器的vip地址
http://192.168.1.181(3)在LB 上查看lvs调用了那台RS,我们可以看到171上有字节了,说明是171给客户端回复的
[root@LB ~]# ipvsadm -L -n --stats#########################################################################################################
IP Virtual Server version 1.2.1 (size=4096)                                                             
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes                          -> RemoteAddress:Port                                                                                 
TCP  192.168.1.181:80                  226     1456        0   52        0                              -> 192.168.0.13:80                   187     1218        0    0        0                              -> 192.168.0.171:80                   39      238        0   52        0                              
#########################################################################################################

http://www.ppmy.cn/embedded/128952.html

相关文章

阿里Dataworks使用循环节点和赋值节点完成对mongodb分表数据同步

背景 需求将MongoDB数据入仓MaxCompute 环境说明 MongoDB 100个Collections&#xff1a;orders_1、orders_2、…、orders_100 前期准备 1、MongoDB数据源配置 需要先保证DW和MongoDB网络是能够联通的&#xff0c;需要现在集成任务中配置MongoDB的数据源信息。 具体可以查…

Perl打印9x9乘法口诀

本章教程主要介绍如何用Perl打印9x9乘法口诀。 一、程序代码 1、写法① use strict; # 启用严格模式&#xff0c;帮助捕捉变量声明等错误 use warnings; # 启用警告&#xff0c;帮助发现潜在问题# 遍历 1 到 9 的数字 for my $i (1..9) {# 对于每个 $i&#xff0c;遍历 1…

Django 序列化serializers

在Django中&#xff0c;序列化通常指的是将数据库中的模型数据转换为JSON、XML或其他格式的过程。Django提供了内置的序列化工具&#xff0c;可以通过django.core.serializers模块进行序列化操作。 当你使用Django的序列化功能时&#xff0c;可以序列化以下两种对象类型&#…

【JavaScript】LeetCode:76-80

文章目录 76 有效的括号77 最小栈78 字符串解码79 每日温度80 柱形图中最大的矩形 76 有效的括号 栈三种不匹配的情况&#xff1a; ( [ { } ] ( )&#xff0c;最左边的"("多余&#xff0c;即字符串遍历完了&#xff0c;栈还不为空。[ { ( } } ]&#xff0c;中间"…

开篇:SpringBoot与SpringCloud的那些事

在正式开始研究 SpringCloud 的技术之前&#xff0c;咱先简单的用比较短的篇幅聊一点概述性质的东西&#xff0c;让思维活跃起来。 SpringCloud与SpringBoot的关系和对比 一开始学习 SpringCloud 咱就知道&#xff0c;SpringCloud 的技术大多都不是自己造的&#xff0c;都是整合…

MySQL的并行复制原理

1. 并行复制的概念 并行复制&#xff08;Parallel Replication&#xff09;是一种通过同时处理多个复制任务来加速数据复制的技术。它与并发复制的区别在于&#xff0c;并行复制更多关注的是数据块或事务之间的并行执行&#xff0c;而不是单纯的任务并发。在数据库主从复制中&…

基于netty实现简易版rpc服务-理论分析

1.技术要点 1.1 rpc协议 定义一个rpc协议类&#xff0c;用于rpc服务端和客户端数据交互。 1.2 netty粘包半包处理 由于数据传说使用tcp协议&#xff0c;rpc协议的数据在网络传输过程中会产生三种情况&#xff1a; 1&#xff09;刚好是完整的一条rpc协议数据 2&#xff09;不…

如何给手机换ip地址

在当今数字化时代&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;扮演着举足轻重的角色。然而&#xff0c;有时出于隐私保护、网络访问需求或其他特定原因&#xff0c;我们可能需要更改手机的IP地址。本文将详细介绍几种实用的方法&#xff0c;帮助您轻松实现手机IP…