|NO.Z.00007|——————————|^^ 构建 ^^|——|LVS-DR构建.V1|——|4台server|

一、LVS-DR概述
### --- LVS-DR概述

### --- C 10.10.10.240:本地VMnet1配置地址;
### --- D:eth0:10.10.10.11    |    eth0:0:10.10.10.100            负载路由器
### --- RS1:真实服务器1
### --- RS2:真实服务器2 
~~~     原地址发送数据包到负载调度器,负载调度器会进行对原地址进行修改,
~~~     三个真实主机上的100地址是被隐藏的。
### --- arp-ignore:改为1        arp-announce:改为2     既不向外发出公告,
~~~     别人来的时候又不会主动接收
~~~     数据报文到大不了Lo:配置路由规则:
~~~     指一个路由规则,指定一下100地址的话,数据报文来了的情况下,接收数据;
~~~     数据报文到达Lo;组装报文回信给客户端。完成整个工作流程
~~~     在负载路由器关闭广播地址的公告功能。是一个优化方案

### --- Lo:把它的子网掩码设置为255:255:255:255  32位:32位:主机位,
~~~     网络位是同一个IP地址。防止出现意外。
### --- 本机的IP地址为:10.10.10.240
### --- ARP通讯行为:ARP响应级别:arp-ignore
~~~     0    只要本机配置有相应IP地址就响应
~~~     1    仅在请求的目标地址配置在请求到达的网络接口上时,才给予响应

### --- ARP通告行为:arp-announce
~~~     0    将本机热呢网络接口上的任何地址都向外通告
~~~     1    尽可能避免像目标网络通告与网络不匹配的地址信息表
~~~     2    仅向目标网络通告与其网络相匹配的地址信息
二、部署硬件规划:角色分工
### --- 部署硬件规划:角色分工

~~~     Windows:10.10.10.240——>:client本地物理笔记本
~~~     HA-server1:10.10.10.11——>D:负载路由器
~~~     HA-server2:10.10.10.12——>RS1:真实服务器1 
~~~     HA-server3:10.10.10.13——>RS2:真实服务器2
~~~     3台主机都需要关闭NetworkManager:负责主机的无线网卡的启用,
~~~     包括把一些不安全的网络策略强制关闭,不允许启用;
~~~     对于环境开子接口的网络方案会拒绝我们的动作的。随意需提前关闭

三、LVS-DR构建
### --- 三台主机环境配置

### --- 关闭网卡守护进程
[root@localhost ~]# service NetworkManager stop                             // 临时关闭网卡守护进程
Stopping NetworkManager daemon:                            [  OK  ]
[root@localhost ~]# chkconfig NetworkManager off                            / /永久关闭网卡守护进程

### --- 三台都需要关闭
[root@localhost ~]# service NetworkManager stop && chkconfig NetworkManager off
四、配置负载调度器ipvsadm
### --- 硬件环境:HA-server1:10.10.10.11

### --- 开启一个子接口,配置子接口网卡配置文件
[root@server11 ~]# cd /etc/sysconfig/network-scripts/
[root@server11 network-scripts]# cp ifcfg-eth0 ifcfg-eth0:0                 // 拷贝一个子接口
[root@server11 network-scripts]# vim !$                                     // 打开ifcfg-eth0:0       !$:表示上一条命令的最后一个参数
DEVICE=eth0:0
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.10.10.100                                                         // 开启一个字节口为10.10.10.100,作为集群ip,也就VIP,提供外部用户访问的地址
NETMASK=255.255.255.0                                                       // 11是本机的身份地址,100是在集群设备之间浮动、跳转的。
[root@server11 network-scripts]#  service network restart                   // 重启网卡
[root@server11 network-scripts]# ifconfig                                   // 查看浮动ip是否配置成功
eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:FA:34:71  
          inet addr:10.10.10.100  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
### --- 关闭广播功能;打开内核配置文件。关闭网卡的重定向功能
### --- 这一步是可以不做的,相当于是一个优化过程    
[root@server11 ~]# vim /etc/sysctl.conf                                     // 修改内核配置文件
net.ipv4.conf.all.send_redirects = 0                                        // 关闭所有网卡的
net.ipv4.conf.default.send_redirects = 0                                    // 关闭默认网卡的
net.ipv4.conf.eth0.send_redirects = 0                                       // 关闭eth0网卡的

### --- 刷新内核参数
[root@server11 ~]# sysctl -p                                                // 显示说明生效了
net.ipv4.conf.all.send_redirects = 0                                        // IPV4已经加载到内核中,且已经启动
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
### --- 安装ipvsadm

[root@server11 ~]# yum install -y ipvsadm
~~~     加载IPVS模块到内核中
[root@server11 ~]# modprobe ip_vs
[root@server11 ~]# ipvsadm -Ln                                              // 查看到当前已经有负载对应的负载信息
IP Virtual Server version 1.2.1 (size=4096)                                 // 什么都没有配置,所以负载信息时空的
Prot LocalAddress:Port Scheduler Flags                                      // 负载调度器配置完成
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
五、配置真实服务器RS1:HA-server2:10.10.10.12
### --- 配置真实服务器RS1:HA-server2:10.10.10.12

### --- 开启一个网卡子接口
[root@server12 ~]# cd /etc/sysconfig/network-scripts/
[root@server12 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@server12 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
### --- 关闭广播功能ARP响应
[root@server12 network-scripts]# vim /etc/sysctl.conf                       // 关闭ARP响应及公告功能
# LVS - ARP.
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

### --- 刷新内核参数
[root@server12 network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
### --- 启动lo:0网卡

[root@server12 network-scripts]# ifup lo:0                                  // 启动lo:0网卡配置
[root@server12 network-scripts]# ifconfig
lo:0      Link encap:Local Loopback  
          inet addr:10.10.10.100  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
[root@server12 network-scripts]#  route add -host 10.10.10.100 dev lo:0     // 为lo添加一个网关,当有人访问主机100的时候交给我的主机lo:0这块网卡
[root@server12 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.100    0.0.0.0         255.255.255.255 UH    0      0        0 lo  // 地址是100:掩码是4个255,交给lo网卡,配置的是lo:0,而lo:0是lo的子接口,此处只显示标准网卡的名称
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0

### --- 为了防止它失效,把它添加到/etc/rc.local文件中                          // 添加到开机自启中
### --- 真实服务器可以是TCP,也可以是UDP
[root@server12 network-scripts]# echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local 
### --- 这里作为典型的web服务器Apache作为展示

### --- 开启Apache
[root@server12 ~]# service httpd start
 
### --- 写入一个网站 
[root@server12 ~]# echo " this is server 1" >> /var/www/html/index.html
[root@server12 ~]# curl localhost                                           // 查看web服务已经运行了
 this is server 1
六、配置真实服务器RS2:HA-server3:10.10.10.13
### --- 配置真实服务器RS2:HA-server3:10.10.10.13

### --- 开启一个子接口
[root@server13 ~]# cd /etc/sysconfig/network-scripts/
[root@server13 network-scripts]# cp -a ifcfg-lo ifcfg-lo:0
[root@server13 network-scripts]# vim ifcfg-lo:0
DEVICE=lo:0
IPADDR=10.10.10.100
NETMASK=255.255.255.255
NETWORK=127.0.0.0
### --- 关闭广播ARP响应

[root@server13 network-scripts]# vim /etc/sysctl.conf 
# LVS - ARP.
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2  

[root@server13 network-scripts]# sysctl -p
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
### --- 启动lo:0网卡

[root@server13 network-scripts]# ifup lo:0
[root@server13 network-scripts]# ifconfig 
lo:0      Link encap:Local Loopback  
          inet addr:10.10.10.100  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
### --- 添加路由规则

[root@server13 network-scripts]# route add -host 10.10.10.100 dev lo:0
[root@server13 network-scripts]# echo "route add -host 10.10.10.100 dev lo:0" >> /etc/rc.local
[root@server13 network-scripts]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.10.10.100    0.0.0.0         255.255.255.255 UH    0      0        0 lo
10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
### --- 启动一个Apache服务

[root@server13 ~]# service httpd start
[root@server13 ~]# echo " this is server 2" >> /var/www/html/index.html
[root@server13 ~]# curl localhost                                           // 实验环境为了区分两个网站内容不一致
 this is server 2                                                           // 真实的生产环境中网页内容必须是一直的。
七、配置LVS-DR集群规则
### --- 配置LVS-DR集群规则
### --- 注释:

ipvsadm -v                                                                  // 查看当前IPVS集群内容
ipvsadm -A -t    虚拟IP80 -s rr                                            // -A:添加集群    -t:表示TCP协议,虚拟IP:集群IP,VIP:10.10.10.100;  :80:集群端口,   -s:指算法  rr:轮询的方式            添加ipvsadm集群子节点      
ipvsadm -a -t    虚拟IP80 -r 网站1:80 -g                                   // -a:添加集群中的子节点         -r:表示真实服务器,网站1:80:apache地址+80端口,    -g:表示DR模式                   
ipvsadm -a -t    虚拟IP80 -r 网站2:80 -g                                   // 添加ipvsadm集群子节点
### --- 添加LVS-DR集群规则                                                  // 临时生效的,重启后会失效,需添加开机自生效

[root@server11 ~]# ipvsadm -A -t 10.10.10.100:80 -s rr
[root@server11 ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.12:80 -g
[root@server11 ~]# ipvsadm -a -t 10.10.10.100:80 -r 10.10.10.13:80 -g
### --- 查看集群配置是否成功
 
[root@server11 ~]# ipvsadm -Ln          
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  10.10.10.100:80 rr                                                     // TCP集群,集群地址是:10.10.10.100:80 rr:轮询方式
  -> 10.10.10.12:80               Route   1      0          0               // 真实服务器10.10.10.12:80
  -> 10.10.10.13:80               Route   1      0          0               // 真实服务器10.10.10.13:80
### --- 为集群规则设置开机自生效

[root@server11 ~]# service ipvsadm save                                     // 将配置文件写入到/etc/sysconfig/ipvsadm文件中
ipvsadm: Saving IPVS table to /etc/sysconfig/ipvsadm:      [  OK  ]
[root@server11 ~]# chkconfig ipvsadm on                                     // 开启ipvsadm服务

八、验证:
1、通过IE浏览器访问http://10.10.10.100/  会在server1服务和server2服务之间切换;说明集群配置成功
2、通过命令的方式验证
### --- 通过命令的方式验证
~~~     Conns:连接数共计18个,分了12主机9个13主机9个
~~~     InPkts:入站数据包
~~~     OutPkts:出站数据包 
~~~     InBytes:入站字节
~~~     OutBytes:出站字节
~~~     入站的都是平均的平分的 
~~~     出站为0,DR模式的工作原理是只介入入站,出站由真实服务器来完成。

[root@server11 ~]# ipvsadm -Ln --stats                                      // --stats:查看当前的状态
IP Virtual Server version 1.2.1 (size=4096)     
Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  -> RemoteAddress:Port
TCP  10.10.10.100:80                    18       90        0    12604        0
  -> 10.10.10.12:80                      9       45        0     6278        0
  -> 10.10.10.13:80                      9       45        0     6326        0

附录一:实验架构图:
附录二:代码构建
### --- 负载调度器

service NetworkManager  stop                                                // 关闭网卡守护进程
cd /etc/sysconfig/network-scrpits/
cp ifcfg-eth0 ifcfg-eth0:0
vim ifcfg-eth0:0
    DEVICE=eth0:0
    IPADDR=虚拟IP
    NETMASK=255.255.255.0
ifup eth0:0
vim /etc/sysctl.conf                                                        // 关闭网卡重定向功能
    net.ipv4.conf.all.send_redirects=0
    net.ipv4.conf.default.send_redirects=0
    net.ipv4.conf.eth0.send_redirects=0
sysctl -p

modprobe ip_vs                                                              // 重载IPVS模块
rpm -ivh  ipvsadm-1.261......                                               // 安装ipvsadm命令行工具

ipvsadm -v                                                                  // 查看当前IPVS集群内容
ipvsadm -A -t                                                               // 虚拟IP:80 -s rr                添加ipvsadm集群子节点
ipvsadm -a -t                                                               // 虚拟IP:80 -r 网站1:80 -g        添加ipvsadm集群子节点
ipvsadm -a -t                                                               // 虚拟IP:80 -r 网站2:80 -g

service ipvsadm save                                                        // 保存ipvs集群内容至文件,进行持久化存储
chkconfig ipvsadm on                                                        // 设置为开机自启
### --- 真实服务器

service NetworkManager  stop                                                // 关闭网卡守护进程
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo  ifcfg-lo:0
vim ifcfg-lo:0                                                              // 拷贝回环网卡子接口
    DEVICE=l0:0
    IPADDR=虚拟IP
    NETMASK=255.255.255.0
vim /etc/sysctl.conf                                                        // 关闭对应ARP响应及公告功能
    net.ipv4.conf.all.arp_ignore=1
    net.ipv4.conf.all.arp_announce=2
    net.ipv4.conf.default.arp_ignore=1
    net.ipv4.conf.default.arp_announce=2
    net.ipv4.conf.lo.arp_ignore=1
    net.ipv4.conf.lo.arp_announce=2
sysctl -p
ifup lo:0

route add-host  虚拟IP dev lo:0                                               // 添加路由记录,当访问VIP交给lo:0网卡接受
service httpd start
[root@localhost ~]# yum install -y ipvsadm

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

 

posted on   yanqi_vip  阅读(28)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示