当前位置:   article > 正文

LVS系列教程07-LVS命令工具及实例

lvs语法

关注「开源Linux」,选择“设为星标”

回复「学习」,有我为您特别筛选的学习资料~

目录

一、ipvsadm 命令

ipvs的集群服务可以使用tcpudpahespah_espsctp等协议

  • 一个ipvs主机可以同时定义多个集群服务

  • 一个集群服务上至少应该一个Real Server

1.1 语法格式

  • 管理集群服务

  1. # 添加或修改一条虚拟服务器记录
  2. ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p[timeout]] [-M netmask]
  3. # 删除一条虚拟服务器记录
  4. ipvsadm -D -t|u|f virtual-service-address
  5. # 清除一条虚拟服务器记录
  6. ipvsadm -C
  7. # 恢复一条虚拟服务器记录
  8. ipvsadm -R
  9. # 保存一条虚拟服务器记录
  10. ipvsadm -S [-n]
  • 管理集群服务中的 RS

  1. # 在一个虚拟服务器中增加或修改一台真实服务器记录
  2. ipvsadm -a|e -t|u|f virutal-service-address:port -r real-server-address:port [-g|i|m] [-w weight]
  3. # 在一个虚拟服务器中删除一台真实服务器记录
  4. ipvsadm -d -t|u|f virutal-service-address -r server-address
  • 其他选项

  1. # 显示内核虚拟服务器表
  2. # options的选项有的参数:-n、-c、--stats、--rate、--exact
  3. ipvsadm -L|l [options]
  4. # 虚拟服务表计数器清零(清空当前的连接数量等)
  5. ipvsadm -Z [-t|u|f virutal-service-address]
  6. # 设置连接超时值
  7. ipvsadm --set [tcp tcpfin udp]
  8. # 启动同步守护进程
  9. ipvsadm --start-daemon state [--mcast-interface interface]
  10. # 停止同步守护进程
  11. ipvsadm --stop-daemon
  12. # 显示帮助信息
  13. ipvsadm -h
  • 相关术语

  1. scheduler                调度方法
  2. real-service-address     是指真实服务器的ip地址
  3. virtual-service-address  是指虚拟服务器的ip地址

1.2 命令选项

1.3 其他选项

二、LVS/NAT实例

可以将配置写成脚本,进行配置

2.1 环境配置

  • Director Server

  1. # DS有两块网卡,桥接模式的VIP、vmnet2自定义模式的DIP
  2. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
  3. ...
  4. BOOTPROTO=static
  5. IPADDR=172.16.100.9
  6. NETMASK=255.255.0.0
  7. GATEWAY=172.16.0.1
  8. NAME=eno16777736
  9. ...
  10. # 配置第二块网卡
  11. [root@localhost ~]# cp ifcfg-eno16777736 ifcfg-eno33554992
  12. [root@localhost ~]# vim ifcfg-eno33554992
  13. ...
  14. IPADDR=192.168.20.1
  15. NETMASK=255.255.255.0
  16. NAME=eno33554992
  17. DEVICE=eno33554992
  18. ...
  19. # CentOS7中重启网络服务
  20. [root@localhost ~]# systemctl restart network.service
  1. # 如果没有的话,先安装ipvsadm工具
  2. [root@localhost ~]# yum install -y ipvsadm
  • Real Server

  1. # RS1: vmnet2自定义模式的RIP,这里使用setup进行配置网络的
  2. [root@localhost ~]# setup
  3. Name
  4. Device
  5. Use DHCP
  6. Static IP             192.168.20.7
  7. Netmask               255.255.255.0
  8. Default gateway IP    192.168.20.1
  9. ...
  10. # CentOS6中重启网络服务
  11. [root@localhost ~]# service network restart
  12. # 写测试页面
  13. [root@localhost ~]# echo 'nodeA' > /var/www/html/index.html
  1. # RS2: vmnet2自定义模式的RIP,通过配置文件配置网络
  2. # 如果2是通过1克隆的,默认没有eth0接口,需要修改配置
  3. [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
  4. 删除HWADDR和UUID
  5. IPADDR=172.16.100.8
  6. ...
  7. [root@localhost ~]# vim /etc/udev/rules.d/70-persistent-net.rules
  8. 注释eth0的配置,将eth1的NAME字段改为eth0
  9. ...
  10. # 因为是虚拟网卡,需要重新加载网卡
  11. [root@localhost ~]# modprobe -r e1000
  12. modprobe e1000
  13. ...
  14. # CentOS6中重启网络服务
  15. [root@localhost ~]# service network restart
  16. # 写测试页面
  17. [root@localhost ~]# echo 'nodeB' > /var/www/html/index.html

2.2 负载均衡配置

  1. # 打开核心转发功能
  2. # 方式一
  3. [root@localhost ~]# echo '1' > /proc/sys/net/ipv4/ip_forward
  4. # 方式二
  5. [root@localhost ~]# vim /etc/sysctl.conf
  6. net.ipv4.ip_forward = 1
  1. # 添加规则
  2. # 当请求访问172.16.100.980端口,标记为负载均衡集群
  3. [root@localhost ~]# ipvsadm -A -t 172.16.100.9:80 -s rr
  4. # 查看规则
  5. [root@localhost ~]# ipvsadm -L -n
  6. Forwark  Weight  ActiveConn  InActConn
  7. Masq     1       0           0
  8. 使用模式  权重     活动连接数    非活动连接数
  9. # 添加RS主机
  10. [root@localhost ~]# ipvsadm -a -t 172.16.100.9:80 -r 192.168.20.7 -m
  11. [root@localhost ~]# ipvsadm -a -t 172.16.100.9:80 -r 192.168.20.8 -m
  12. # 查看规则
  13. [root@localhost ~]# ipvsadm -L -n
  1. # 永久保存规则: 文件在/etc/sysconfig/ipvsadm,与iptables类似
  2. [root@localhost ~]# ipvsadm -S /etc/sysconfig/ipvsadm
  3. # 规则重载
  4. [root@localhost ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
  5. [root@localhost ~]# ipvsadm-save
  6. # 规则清空
  7. [root@localhost ~]# ipvsadm -C
  8. [root@localhost ~]# ipvsadm-restore
  9. # 为CentOS7中的ipvsadm的Unit文件
  10. cat /usr/lib/systemd/system/ipvsadm.service
  1. # 测试练习: 修改调度器
  2. [root@localhost ~]# ipvsadm -E -t 172.16.100.9:80 -s sh
  3. # 测试练习: 删除调度器
  4. ipvsadm -D -t 172.16.100.9:80
  5. # 查看规则
  6. [root@localhost ~]# ipvsadm -L -n
  1. # 测试练习: 修改RS服务器
  2. [root@localhost ~]# ipvsadm -e -t 172.16.100.9:80 -r 192.168.20.7:8080 -m
  3. # 测试练习: 删除RS服务器
  4. [root@localhost ~]# ipvsadm -d -t 172.16.100.9:80 -r 192.168.20.7:8080
  5. # 查看规则
  6. [root@localhost ~]# ipvsadm -L -n

三、LVS/DR实例

可以将配置写成脚本,进行配置

3.1 难题解决

【问题描述】
  • 如果只让DS响应访问VIP的请求报文呢?

【方式 1】
  • 在路由器的路由表上配置对于VIP的MAC地址,但路由器有可能是运营商的

【方式二】
  • 在RSs上配置arpiptables,禁止响应arp地址为IP的MAC地址的广播

【方式三】
网卡配置
  • DS:物理网卡配置DIP,物理网卡别名配置VIP

  • RS:物理网卡配置RIP,lo网卡别名配置VIP

配置即使RS收到广播地址为VIP的也不做处理,配置两个内核参数arp_ignore和arp_announce
arp_ignore(是否响应通告)
  • 0:只要请求的地址在本机有就响应

  • 1:只响应接口地址的请求

arp_announce(是否接受通告且可以发送通告)
  • 0:所有网络都通告给物理网络

  • 1:尽量避免通告非本网络地址

  • 2:只会通告本网络地址

3.2 环境配置

  • Director Server

  1. # 配置DS的DIP接口,配置物理网卡
  2. # DS: 只需要一块网卡就可以了,禁用之前添加的新网卡
  3. # RS: 使用VM的桥接网络模式
  4. # 配置DS的VIP接口,添加物理网卡的别名
  5. [root@localhost ~]# ifconfig eno16777736:0 172.16.100.10/32 broadcast 172.16.100.10 up
  6. # 配置路由,只想要哪个接口的响应请求
  7. [root@localhost ~]# route add -host 172.16.100.10 dev eno16777736:0
  • Real Server

  1. # 配置RS的RIP接口
  2. # A: 172.16.100.21; 网关指向同一个路由 172.16.0.1
  3. # B: 172.16.100.22; 网关指向同一个路由 172.16.0.1
  1. # 配置lo接口的VIP,分别配置A/B主机
  2. [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
  3. [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
  4. [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
  5. [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
  6. [root@localhost ~]# ifconfig lo:0 172.16.100.10/32 broadcast 172.16.100.10 up
  7. [root@localhost ~]# route add -host 172.16.100.10 dev lo:0
  8. # 查看配置结果
  9. [root@localhost ~]# arp -a

3.3 负载均衡配置

  1. # 配置DS虚拟服务器
  2. [root@localhost ~]# ipvsadm -A -t 172.16.100.10:80 -s rr
  3. [root@localhost ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.21 -g
  4. [root@localhost ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.22 -g

四、扩展练习

LVS-NAT

任务
  • NAT模型实现HTTP和HTTPS两种负载均衡集群

注意事项
  • HTTPS是长连接的尝试

  • 配置SSL的时候,RS两台Web服务器都要提供同一个私钥和同一个证书

  • 生产环境,一般都会使用Nginx和Haproxy做负载均衡,不太使用LVS

LVS-DR

任务
  • DR模型实现HTTPHTTPS的负载均衡集群

  • DR模型实现MySQL的负载均衡集群

  • 规划拓扑实现,DR模型中VIP与RIP不在同一网络中的集群

注意事项
  • HTTPS和MySQL都是长连接的尝试

  • 配置SSL的时候,RS两台Web服务器都要提供同一个私钥和同一个证书

文章作者: Escape  

链接: https://escapelife.github.io/posts/62a6ac50.html

往期推荐

图解 Kafka

运维的工作边界,这次真的搞明白了!

LVS系列教程01-集群技术

LVS系列教程02-LVS体系结构

LVS系列教程03-IP负载均衡技术

LVS系列教程04-IP负载均衡类型

LVS系列教程05-负载调度

LVS系列教程06-内容请求分发

  1. 关注「开源Linux」加星标,提升IT技能
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/一键难忘520/article/detail/820524
推荐阅读
相关标签
  

闽ICP备14008679号