zoukankan      html  css  js  c++  java
  • lvs-nat实验

    实验拓扑图:

    img

    实验环境说明:

    需要四台虚拟机操作:
    client是客户端,ip为10.0.3.64
    lvs服务器ip为10.0.3.65,192.168.137.128
    web服务器两台,ip分别为192.168.137.129,192.168.137.130
    关于虚拟机的网络:
    10.0.3网段是桥接网段
    192.168.137网段是仅主机网段
    lvs虚拟机有两块网卡,一块桥接,一块仅主机
    要求:
    所有机器关闭selinux,清空防火墙规则

    实验一:

    一、在web1和web2上安装httpd,创建测试文件

    [root@lvs-web1 ~]# yum install httpd -y
    [root@lvs-web1 ~]# echo lvs-web1 > /var/www/html/index.html
    [root@lvs-web1 ~]# systemctl start httpd
    web2同理,可以使用光盘安装或添加一块桥接网卡联网安装
    把网关指向DIP,
    [root@lvs-web1 ~]# route add default gw 192.168.137.128
    [root@lvs-web1 ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.137.128 0.0.0.0 UG 0 0 0 ens33
    192.168.137.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    

    二、lvs服务器安装ipvsadm

    [root@lvs-lvs ~]# yum install ipvsadm -y
    设置集群调度算法,(便于验证,此处使用轮询算法):
    [root@lvs-lvs ~]# ipvsadm -A -t 10.0.3.65:80 -s rr
    设置后端服务器:
    [root@lvs-lvs ~]# ipvsadm -a -t 10.0.3.65:80 -r 192.168.137.129:80 -m
    [root@lvs-lvs ~]# ipvsadm -a -t 10.0.3.65:80 -r 192.168.137.130:80 -m
    查看ipvsadm规则(这些规则没有保存在配置文件,重启失效):
    [root@lvs-lvs ~]# ipvsadm -Ln
    
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP 10.0.3.65:80 rr
    -> 192.168.137.129:80 Masq 1 0 0
    -> 192.168.137.130:80 Masq 1 0 0
    

    三、客户端访问VIP测试,没有问题

    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    

    实验二:在上述实验的基础上做,在lvs与web之间加个路由器,拓扑图如下:

    img

    在上述实验的基础上加了一个路由器,

    lvs服务器的仅主机网卡改为nat网卡,ip为192.168.1.135
    路由器有两块网卡,一块nat,一块仅主机,nat网卡ip为192.168.1.134,仅主机网卡ip为192,.168.137.131

    实验操作:

    一、将web1和web2的网关改为192.168.137.131

    [root@lvs-web1 ~]# route del -net 0.0.0.0 gw 192.168.137.128
    [root@lvs-web1 ~]# route add default gw 192.168.137.131
    [root@lvs-web1 ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.137.131 0.0.0.0 UG 0 0 0 ens33
    192.168.0.0 0.0.0.0 255.255.0.0 U 100 0 0 ens33
    web2同理,也改为192.168.137.131
    

    二、router要开启ip_forward

    [root@router ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
    [root@router ~]# cat /proc/sys/net/ipv4/ip_forward
    1
    router的默认网关应该指向DIP:192.168.1.135
    [root@router ~]# route del -net 0.0.0.0
    [root@router ~]# route add default gw 192.168.1.135
    [root@router ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.1.135 0.0.0.0 UG 0 0 0 ens33
    192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    192.168.137.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
    

    三、lvs机器的网关应该指向路由器的左边:192.168.1.134

    [root@lvs-lvs ~]# route add default gw 192.168.1.134
    [root@lvs-lvs ~]# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 192.168.1.134 0.0.0.0 UG 0 0 0 ens36
    10.0.3.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
    192.168.1.0 0.0.0.0 255.255.255.0 U 101 0 0 ens36
    

    四、客户端访问VIP测试,没有问题:

    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    [root@lvs-client ~]# curl 10.0.3.65
    

    实验三,在实验二的基础上继续操作

    lvs-nat模式支持端口映射,修改rs的端口测试

    一、修改lvs-web1机器的端口:

    [root@lvs-web1 ~]# grep 81 /etc/httpd/conf/httpd.conf
    Listen 81
    [root@lvs-web1 ~]# systemctl restart httpd
    

    二、修改lvs服务器的ipvsadm规则

    [root@lvs-lvs ~]# ipvsadm -d -t 10.0.3.65:80 -r 192.168.137.129
    [root@lvs-lvs ~]# ipvsadm -a -t 10.0.3.65:80 -r 192.168.137.129:81 -m
    [root@lvs-lvs ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP 10.0.3.65:80 rr
    -> 192.168.137.129:81 Masq 1 0 0
    -> 192.168.137.130:80 Masq 1 0 0
    

    三、客户端测试:

    访问VIP,没有问题:
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web1
    [root@lvs-client ~]# curl 10.0.3.65
    lvs-web2
    

    实验四、在实验三基础上继续操作

    修改调度算法,使用加权轮询

    一、修改lvs服务器调度算法

    [root@lvs-lvs ~]# ipvsadm -E -t 10.0.3.65:80 -s wrr
    [root@lvs-lvs ~]# ipvsadm -d -t 10.0.3.65:80 -r 192.168.137.129:81
    [root@lvs-lvs ~]# ipvsadm -a -t 10.0.3.65:80 -r 192.168.137.129:81 -m -w 3
    [root@lvs-lvs ~]# ipvsadm -Ln
    IP Virtual Server version 1.2.1 (size=4096)
    Prot LocalAddress:Port Scheduler Flags
    -> RemoteAddress:Port Forward Weight ActiveConn InActConn
    TCP 10.0.3.65:80 wrr
    -> 192.168.137.129:81 Masq 3 0 4
    -> 192.168.137.130:80 Masq 1 0 3
    

    二、客户端访问VIP测试

    img

    实验五、在实验四的基础上继续操作

    修改调度算法为原地址hash
    一、调整lvs调度算法

    img

    二、客户端1访问测试

    客户端2访问测试

    file://C:UsersADMINI~1AppDataLocalTempct_tmp/1.png

    客户端3访问测试:

    file://C:UsersADMINI~1AppDataLocalTempct_tmp/1.png

    目标地址hash不做测试了
    目标地址hash,哈希的是VIP,不是url
    lvs是4层的,不识别url,

    实验六、在实验五的基础上,再创建一个集群服务,转发443

    一、在lvs-web1机器上配置https

    [root@lvs-web1 ~]# cd /etc/pki/tls/certs/
    [root@lvs-web1 certs]# make jd.crt
    [root@lvs-web1 certs]# mv jd.* /etc/httpd/conf.d/
    [root@lvs-web1 certs]# yum install mod_ssl -y
    [root@lvs-web1 certs]# vim /etc/httpd/conf.d/ssl.conf
    [root@lvs-web1 certs]# grep SSLCertificate /etc/httpd/conf.d/ssl.conf | grep -v #
    SSLCertificateFile /etc/httpd/conf.d/jd.crt
    SSLCertificateKeyFile /etc/httpd/conf.d/jd.key
    [root@lvs-web1 certs]# systemctl restart httpd
    

    二、lvs机器创建调度算法,设置后端服务器等

    file://C:UsersADMINI~1AppDataLocalTempct_tmp/1.png

    三、客户端访问测试

    [root@lvs-client ~]# curl -k https://10.0.3.65
    lvs-web1
    

    原文链接:https://blog.csdn.net/qq_33317586/article/details/86290118

  • 相关阅读:
    Android Studio 开发环境设置
    Android-项目介绍
    Android-开发工具
    在js 中使用ajax 调用后台代码方法,解析返回值
    $.each解析json
    VS2008 "当前不会命中断点。源代码与原始版本不同"解决方法
    64位系统 安装oracle
    session丢失返回登陆页
    DataTable转换为JsonResult
    easyui 绑定数据
  • 原文地址:https://www.cnblogs.com/b02330224/p/14452286.html
Copyright © 2011-2022 走看看