Linux 下 LVS配置.忘大哥们不吝赐教

时间:2020-12-06 03:12:21
以下配置的LVS工作模式为 NAT


请各位大哥耐心的看完我给的这些配置,看完后,最后我有几个疑问想请教一下.

忘不吝赐教.

小弟感激不敬



以下所有的机器我都是用VMware上的虚拟机做的
虚拟机上面所有的机器都是使用的NAT模式



VMware NAT 设置如下

Network: vmnet8
Subnet IP:192.168.96.0
Subnet mask:255.255.255.0
Gateway : 192.168.96.2 

所有机器防火墙全部关闭
所有操作系统版本都是CentOS 5.4



# ================================================================
real server 1

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:6D:BA:77
NETMASK=255.255.255.0
IPADDR=192.168.97.12
GATEWAY=192.168.97.1
TYPE=Ethernet

#apache 服务
监听端口为 80 
当然,已经配置好欢迎页面

#===================================================================
real server 2

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:BC:17:F5
NETMASK=255.255.255.0
IPADDR=192.168.97.11
GATEWAY=192.168.97.1

#apache 服务
监听端口为 80 
当然,已经配置好欢迎页面

#====================================================================

ipvsadm 所在的服务器

这个服务器上 , 我设置了2个虚拟的网卡.

# 第一张虚拟网卡配置如下
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.96.138
NETMASK=255.255.255.0
HWADDR=00:0C:29:C9:53:D0
GATEWAY=192.168.96.2
ONBOOT=yes

# 第二张虚拟网卡配置如下
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.97.1
NETMASK=255.255.255.0
HWADDR=00:0c:29:c9:53:da
GATEWAY=192.168.97.1
ONBOOT=yes

# 另外我在第二张网卡上面配置了一个虚拟ip
ifconfig eth1:1 192.168.96.139 netmask 255.255.255.0 up


#首先看下ipvsadm是否加入内核
[root@localhost init.d]# lsmod | grep ip_vs
ip_vs_rr                6081  0
ip_vs                  78081  2 ip_vs_rr


#接下来ipvsadm的版本
[root@localhost init.d]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

# 开启路由机制
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1

并执行sysctl -p 后生效     

# 配置一个启动ipvsadm的脚本
vim /etc/init.d/lvsnat
内容如下:
#! /bin/bash
# LVS script NAT
VIP=192.168.96.139
RIP1=192.169.97.11
RIP2=192.169.97.12
case "$1" in
         start)
              echo "1" > /proc/sys/net/ipv4/ip_forward
              /sbin/ipvsadm   -C
              /sbin/ipvsadm -A -t $VIP:80 -s rr
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP1:80 -m
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP2:80 -m
              /sbin/ipvsadm
              echo "start LVS of DirectorServer NAT"
             ;;
          stop)
               echo "0" > /proc/sys/net/ipv4/ip_forward
                /sbin/ipvsadm -C

                echo "stop LVS of DirectorServer NAT"
              ;;
           *)
                 echo "Usage: $0 {start|stop}"
                 exit 1
              ;;
esac

# 用脚本启动ipvsadm
[root@localhost init.d]# ./lvsnat start
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.96.139:http rr
  -> 192.169.97.12:http           Masq    1      0          0
  -> 192.169.97.11:http           Masq    1      0          0
start LVS of DirectorServer NAT

# 查看配置
[root@localhost init.d]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.96.139:80 rr
  -> 192.169.97.12:80             Masq    1      0          0
  -> 192.169.97.11:80             Masq    1      0          0


# ================================================================================


以上都是虚拟机的配置.

现在我在实体机中进行如下操作,发现了点疑问请高手不吝赐教

1.我在安装ipvsadm的服务器上(192.168.96.139).是否也需要开一个80端口的apache服务?
  因为,我在实体机的游览器上输入http://192.168.96.139默认就是80端口,我感觉怎么也要开个80端口吧.
   如果不开这个80端口,感觉这都没端口怎么能连接的过去呢?请高手指教..

2.我尝试的在ipvsadm的服务器上(192.168.96.139)启动了1个apache 80端口的服务器.
  后来我用telnet 192.168.96.139 80 是连接不通的( 所有机器的防火墙都关闭了
  经过测试我发现.在我写的启动ipvsadm的脚本中(/sbin/ipvsadm -A -t $VIP:80 -s rr)这一句照成
  如果我不执行这个脚本,telnet 192.168.96.139 80 是可以连接通的
   一旦脚本执行到/sbin/ipvsadm -A -t $VIP:80 -s rr 就80端口就不通了。请问这个为什么?


3.因为,我还没有测试成功,所以请高手看看,我以上的配置是否还有需要改正的地方.

小弟再次感谢...

  
  


14 个解决方案

#1


该回复于2012-01-09 09:56:55被版主删除

#2


      为什么没人回答我的呢。。

#3


 我怎么感觉现在CSDN没人了啊。。。

#4


我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip

#5


引用 4 楼 etracer 的回复:
我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip


麻烦直接看看。谢谢了。。。
我的realserver的默认网关是设置的lvs的ip。。

#6


引用 4 楼 etracer 的回复:
我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip


麻烦大哥在都看看..谢谢了。我的哦realserver的默认网关是设置为lvs的ip

#7


该回复于2012-01-10 13:48:52被版主删除

#8


# 第一张虚拟网卡配置如下
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.96.138
NETMASK=255.255.255.0
HWADDR=00:0C:29:C9:53:D0
GATEWAY=192.168.96.2
ONBOOT=yes

# 第二张虚拟网卡配置如下
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.97.1
NETMASK=255.255.255.0
HWADDR=00:0c:29:c9:53:da
GATEWAY=192.168.97.1
ONBOOT=yes


怎么两个gateway,换成一个真实的去internet 的gateway看看

#9


1. 
192.168.96.139不需要开放80端口,因为是通过路由将访问从139跳转到realserver的,所以实际*问的还是realserver:80

2. 
貌似你没有理解4L的意思,从顶楼给出的配置看,realserver的ip是11和12,但他们的GATEWAY是97.1,你需要将11和12的GATEWAY修改成 192.168.96.139
不过有个更简单的方法...你的VIP其实应该是192.168.97.1……就省得改两台机器的GATEWAY了...
但首先你要保证这些网段都是可以相互通信的

#10


############################################################
# 为了让网络互通.我设置简单点的.让所有ip都在一个网络段里面
############################################################
# ================================================================
real server 1

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:6D:BA:77
NETMASK=255.255.255.0
IPADDR=192.168.96.12
GATEWAY=192.168.96.139
TYPE=Ethernet

#apache 服务
监听端口为 80 
当然,已经配置好欢迎页面

#===================================================================
real server 2

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:BC:17:F5
NETMASK=255.255.255.0
IPADDR=192.168.96.11
GATEWAY=192.168.96.139



[root@localhost ~]# cat /etc/init.d/lvsnat 
#! /bin/bash
# LVS script NAT
VIP=192.168.96.139
RIP1=192.169.96.11 
RIP2=192.169.96.12  
case "$1" in
         start)
              echo "1" > /proc/sys/net/ipv4/ip_forward        
              /sbin/ipvsadm   -C                                                                       
              /sbin/ipvsadm -A -t $VIP:80 -s rr
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP1:80 -m
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP2:80 -m
              /sbin/ipvsadm                                                  
              echo "start LVS of DirectorServer NAT" 
             ;;
          stop)
               echo "0" > /proc/sys/net/ipv4/ip_forward
                /sbin/ipvsadm -C
               
                echo "stop LVS of DirectorServer NAT"
              ;;
           *)
                 echo "Usage: $0 {start|stop}"
                 exit 1
              ;;
esac
 


貌似在同一个IP段里面.都不能成功....请问......何解..跪求

#11


 我在本机输入http://192.168.96.139 ~~~~ 无法找到服务器..... Linux 下 LVS配置.忘大哥们不吝赐教

#12


ping 192.168.96.139正常否
在192.168.96.139上,ping两台realserver的ip正常否
在192.168.96.139上,telnet 两台realserver 80正常否

如果都正常,建议在192.168.96.139上tcpdump抓包看看访问的数据是怎么走的

#13


Linux 下 LVS配置.忘大哥们不吝赐教 mark and study

#14


貌似没有成功案例啊

#1


该回复于2012-01-09 09:56:55被版主删除

#2


      为什么没人回答我的呢。。

#3


 我怎么感觉现在CSDN没人了啊。。。

#4


我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip

#5


引用 4 楼 etracer 的回复:
我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip


麻烦直接看看。谢谢了。。。
我的realserver的默认网关是设置的lvs的ip。。

#6


引用 4 楼 etracer 的回复:
我没怎么仔细看,但是你的realserver的默认网关要设置为lvs的ip


麻烦大哥在都看看..谢谢了。我的哦realserver的默认网关是设置为lvs的ip

#7


该回复于2012-01-10 13:48:52被版主删除

#8


# 第一张虚拟网卡配置如下
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.96.138
NETMASK=255.255.255.0
HWADDR=00:0C:29:C9:53:D0
GATEWAY=192.168.96.2
ONBOOT=yes

# 第二张虚拟网卡配置如下
DEVICE=eth1
BOOTPROTO=static
IPADDR=192.168.97.1
NETMASK=255.255.255.0
HWADDR=00:0c:29:c9:53:da
GATEWAY=192.168.97.1
ONBOOT=yes


怎么两个gateway,换成一个真实的去internet 的gateway看看

#9


1. 
192.168.96.139不需要开放80端口,因为是通过路由将访问从139跳转到realserver的,所以实际*问的还是realserver:80

2. 
貌似你没有理解4L的意思,从顶楼给出的配置看,realserver的ip是11和12,但他们的GATEWAY是97.1,你需要将11和12的GATEWAY修改成 192.168.96.139
不过有个更简单的方法...你的VIP其实应该是192.168.97.1……就省得改两台机器的GATEWAY了...
但首先你要保证这些网段都是可以相互通信的

#10


############################################################
# 为了让网络互通.我设置简单点的.让所有ip都在一个网络段里面
############################################################
# ================================================================
real server 1

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:6D:BA:77
NETMASK=255.255.255.0
IPADDR=192.168.96.12
GATEWAY=192.168.96.139
TYPE=Ethernet

#apache 服务
监听端口为 80 
当然,已经配置好欢迎页面

#===================================================================
real server 2

#网络配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
HWADDR=00:0C:29:BC:17:F5
NETMASK=255.255.255.0
IPADDR=192.168.96.11
GATEWAY=192.168.96.139



[root@localhost ~]# cat /etc/init.d/lvsnat 
#! /bin/bash
# LVS script NAT
VIP=192.168.96.139
RIP1=192.169.96.11 
RIP2=192.169.96.12  
case "$1" in
         start)
              echo "1" > /proc/sys/net/ipv4/ip_forward        
              /sbin/ipvsadm   -C                                                                       
              /sbin/ipvsadm -A -t $VIP:80 -s rr
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP1:80 -m
              /sbin/ipvsadm -a -t $VIP:80 -r  $RIP2:80 -m
              /sbin/ipvsadm                                                  
              echo "start LVS of DirectorServer NAT" 
             ;;
          stop)
               echo "0" > /proc/sys/net/ipv4/ip_forward
                /sbin/ipvsadm -C
               
                echo "stop LVS of DirectorServer NAT"
              ;;
           *)
                 echo "Usage: $0 {start|stop}"
                 exit 1
              ;;
esac
 


貌似在同一个IP段里面.都不能成功....请问......何解..跪求

#11


 我在本机输入http://192.168.96.139 ~~~~ 无法找到服务器..... Linux 下 LVS配置.忘大哥们不吝赐教

#12


ping 192.168.96.139正常否
在192.168.96.139上,ping两台realserver的ip正常否
在192.168.96.139上,telnet 两台realserver 80正常否

如果都正常,建议在192.168.96.139上tcpdump抓包看看访问的数据是怎么走的

#13


Linux 下 LVS配置.忘大哥们不吝赐教 mark and study

#14


貌似没有成功案例啊