zoukankan      html  css  js  c++  java
  • LVS+Nginx

    最近帮别人总结的一个文档。

    主机规划

    IP 角色
    192.168.50.130 lvs
    192.168.50.131 nginx-web1
    192.168.50.132 nginx-web2
    192.168.50.129 client(访问lvs服务)
    192.168.50.100 VIP(绑定在lvs主机上)

    1、安装ipvsadm

    以下在lvs主机操作

    1、安装服务

    [root@lvs ~]# yum install ipvsadm -y
    

    2、配置LVS主机

    2.1、开启内核转发功能

    [root@lvs ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 
    [root@lvs ~]# sysctl -p
    

    2.2、添加路由

    [root@lvs ~]# route add -host 192.168.50.100 dev ens33:0
    

    centos6的网卡地址是eth0,注意更改。

    2.3、指定VIP地址及端口

    [root@lvs ~]# ipvsadm -A -t 192.168.50.100:80 -s rr
    

    这里说明一下:

    -A 添加地址
    -t 指定VIP的地址及端口
    -s 调度算法,这里采用rr轮询
    

    2.4、指定后端RS服务器

    后端RS服务器也就是两台web服务器

    [root@lvs ~]# ipvsadm -a -t 192.168.50.100:80 -r 192.168.50.131:80 -g 
    [root@lvs ~]# ipvsadm -a -t 192.168.50.100:80 -r 192.168.50.132:80 -g 
    
    -a 指定真实服务器
    -t VIP地址
    -r 后端rs服务器ip地址及端口
    -g 优先DR模式
    -w 权重值
    

    2.5、绑定高可用IP

    [root@lvs ~]# ifconfig ens33:0 192.168.50.100 netmask 255.255.255.0 up
    [root@lvs ~]# ifconfig
    ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.50.130  netmask 255.255.255.0  broadcast 192.168.50.255
            inet6 fe80::20c:29ff:fefb:9823  prefixlen 64  scopeid 0x20<link>
            ether 00:0c:29:fb:98:23  txqueuelen 1000  (Ethernet)
            RX packets 12483  bytes 15575235 (14.8 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 2150  bytes 177549 (173.3 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.50.100  netmask 255.255.255.0  broadcast 192.168.50.255
            ether 00:0c:29:fb:98:23  txqueuelen 1000  (Ethernet)
    

    3、配置RS服务器

    RS服务器也就是两台web服务器。注意:以下步骤在RS服务器上操作

    3.1、安装nginx服务

    第一台web服务器安装nginx

    [root@nginx-web1 ~]# yum install nginx -y
    [root@nginx-web1 ~]# systemctl start nginx
    [root@nginx-web1 ~]# echo "web01" > /usr/share/nginx/html/index.html
    

    第二台web服务器安装nginx

    [root@nginx-web2 ~]# yum install nginx -y
    [root@nginx-web2 ~]# systemctl start nginx
    [root@nginx-web2 ~]# echo "web02" > /usr/share/nginx/html/index.html
    

    3.2、写一个脚本配置RS服务器arp抑制

    #!/bin/bash
    #description: Config realserver  
    
    VIP=192.168.50.100
    
    case "$1" in
      start)  
           /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP  
           /sbin/route add -host $VIP dev lo:0  
           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  
           sysctl -p >/dev/null 2>&1  
           echo "RealServer Start OK"  
           ;;  
      stop)  
           /sbin/ifconfig lo:0 down  
           /sbin/route del $VIP >/dev/null 2>&1  
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore  
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce  
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore  
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce  
           echo "RealServer Stoped"  
           ;;  
      *)  
           echo "Usage: $0 {start|stop}"  
           exit 1  
    esac  
    exit 0
    

    注意:你的VIP与我的可能不一样,注意修改VIP变量,其他的部分无需更改。

    3.3、执行脚本

    第一台服务器启动脚本

    [root@nginx-web1 ~]# bash realserver.sh  start
    RealServer Start OK
    

    第二台服务器启动脚本

    [root@nginx-web2 ~]# bash realserver.sh  start
    RealServer Start OK
    

    4、访问测试

    4.1、Linux主机测试

    现在我们找一台client服务器作为测试,注意:禁止在lvs这个主机上面测试,因为这台主机带有转发功能,所以不能自己转发到自己上,一定要找一台额外的机器来作为测试。

    [root@client ~]# curl http://192.168.50.100
    web01
    [root@client ~]# curl http://192.168.50.100
    web02
    [root@client ~]# curl http://192.168.50.100
    web01
    [root@client ~]# curl http://192.168.50.100
    web02
    [root@client ~]# curl http://192.168.50.100
    web01
    

    看的出来,轮询,达到实验目的。

    4.2、windows浏览器测试


    浏览器测试你会发现一段时间之内都是同一台主机,这是因为浏览器带有访问会话记录功能。清除一下缓存就可以了。

    以下是总结的其他操作,上面的步骤已经操作完毕了,所以不清楚不要继续操作下面的步骤。只是一些额外的操作。

    5、额外操作

    5.1、删除lvs主机的VIP地址及端口

    [root@lvs ~]# ipvsadm -D -t 192.168.50.100:80
    

    5.2、删除指定RS地址

    [root@lvs ~]# ipvsadm -d -t 192.168.50.100:80 -r 192.168.50.xxx:80
    

    5.3、查看规则

    [root@lvs ~]# 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.50.100:80 rr
      -> 192.168.50.131:80            Route   1      1          0         
      -> 192.168.50.132:80            Route   1      0          0  
    
  • 相关阅读:
    各位相加
    模板方法设计模式
    581. Shortest Unsorted Continuous Subarray
    LeetCode
    判断质数
    整除问题
    A+B+C问题
    juery 安全加固 集合
    丁洪波 -- 不要“ 总是拿着微不足道的成就来骗自己”
    avalon源码阅读(1)
  • 原文地址:https://www.cnblogs.com/FengGeBlog/p/13744661.html
Copyright © 2011-2022 走看看