赞
踩
关注「开源Linux」,选择“设为星标”
回复「学习」,有我为您特别筛选的学习资料~
ipvs
的集群服务可以使用tcp
、udp
、ah
、esp
、ah_esp
、sctp
等协议
一个ipvs主机可以同时定义多个集群服务
一个集群服务上至少应该一个Real Server
管理集群服务
- # 添加或修改一条虚拟服务器记录
- ipvsadm -A|E -t|u|f virutal-service-address:port [-s scheduler] [-p[timeout]] [-M netmask]
-
- # 删除一条虚拟服务器记录
- ipvsadm -D -t|u|f virtual-service-address
-
- # 清除一条虚拟服务器记录
- ipvsadm -C
-
- # 恢复一条虚拟服务器记录
- ipvsadm -R
-
- # 保存一条虚拟服务器记录
- ipvsadm -S [-n]
管理集群服务中的 RS
- # 在一个虚拟服务器中增加或修改一台真实服务器记录
- ipvsadm -a|e -t|u|f virutal-service-address:port -r real-server-address:port [-g|i|m] [-w weight]
-
- # 在一个虚拟服务器中删除一台真实服务器记录
- ipvsadm -d -t|u|f virutal-service-address -r server-address
其他选项
- # 显示内核虚拟服务器表
- # options的选项有的参数:-n、-c、--stats、--rate、--exact
- ipvsadm -L|l [options]
-
- # 虚拟服务表计数器清零(清空当前的连接数量等)
- ipvsadm -Z [-t|u|f virutal-service-address]
-
- # 设置连接超时值
- ipvsadm --set [tcp tcpfin udp]
-
- # 启动同步守护进程
- ipvsadm --start-daemon state [--mcast-interface interface]
-
- # 停止同步守护进程
- ipvsadm --stop-daemon
-
- # 显示帮助信息
- ipvsadm -h
相关术语
- scheduler 调度方法
- real-service-address 是指真实服务器的ip地址
- virtual-service-address 是指虚拟服务器的ip地址
可以将配置写成脚本,进行配置
Director Server
- # DS有两块网卡,桥接模式的VIP、vmnet2自定义模式的DIP
- [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736
- ...
- BOOTPROTO=static
- IPADDR=172.16.100.9
- NETMASK=255.255.0.0
- GATEWAY=172.16.0.1
- NAME=eno16777736
- ...
-
- # 配置第二块网卡
- [root@localhost ~]# cp ifcfg-eno16777736 ifcfg-eno33554992
- [root@localhost ~]# vim ifcfg-eno33554992
- ...
- IPADDR=192.168.20.1
- NETMASK=255.255.255.0
- NAME=eno33554992
- DEVICE=eno33554992
- ...
- # CentOS7中重启网络服务
- [root@localhost ~]# systemctl restart network.service
- # 如果没有的话,先安装ipvsadm工具
- [root@localhost ~]# yum install -y ipvsadm
Real Server
- # RS1: vmnet2自定义模式的RIP,这里使用setup进行配置网络的
- [root@localhost ~]# setup
- Name
- Device
- Use DHCP
- Static IP 192.168.20.7
- Netmask 255.255.255.0
- Default gateway IP 192.168.20.1
- ...
-
- # CentOS6中重启网络服务
- [root@localhost ~]# service network restart
-
- # 写测试页面
- [root@localhost ~]# echo 'nodeA' > /var/www/html/index.html
- # RS2: vmnet2自定义模式的RIP,通过配置文件配置网络
- # 如果2是通过1克隆的,默认没有eth0接口,需要修改配置
- [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 删除HWADDR和UUID
- IPADDR=172.16.100.8
- ...
-
- [root@localhost ~]# vim /etc/udev/rules.d/70-persistent-net.rules
- 注释eth0的配置,将eth1的NAME字段改为eth0
- ...
-
- # 因为是虚拟网卡,需要重新加载网卡
- [root@localhost ~]# modprobe -r e1000
- modprobe e1000
- ...
-
- # CentOS6中重启网络服务
- [root@localhost ~]# service network restart
-
- # 写测试页面
- [root@localhost ~]# echo 'nodeB' > /var/www/html/index.html
- # 打开核心转发功能
-
- # 方式一
- [root@localhost ~]# echo '1' > /proc/sys/net/ipv4/ip_forward
-
- # 方式二
- [root@localhost ~]# vim /etc/sysctl.conf
- net.ipv4.ip_forward = 1
- # 添加规则
- # 当请求访问172.16.100.9的80端口,标记为负载均衡集群
- [root@localhost ~]# ipvsadm -A -t 172.16.100.9:80 -s rr
-
- # 查看规则
- [root@localhost ~]# ipvsadm -L -n
- Forwark Weight ActiveConn InActConn
- Masq 1 0 0
- 使用模式 权重 活动连接数 非活动连接数
-
- # 添加RS主机
- [root@localhost ~]# ipvsadm -a -t 172.16.100.9:80 -r 192.168.20.7 -m
- [root@localhost ~]# ipvsadm -a -t 172.16.100.9:80 -r 192.168.20.8 -m
-
- # 查看规则
- [root@localhost ~]# ipvsadm -L -n
- # 永久保存规则: 文件在/etc/sysconfig/ipvsadm,与iptables类似
- [root@localhost ~]# ipvsadm -S /etc/sysconfig/ipvsadm
-
- # 规则重载
- [root@localhost ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
- [root@localhost ~]# ipvsadm-save
-
- # 规则清空
- [root@localhost ~]# ipvsadm -C
- [root@localhost ~]# ipvsadm-restore
-
- # 为CentOS7中的ipvsadm的Unit文件
- cat /usr/lib/systemd/system/ipvsadm.service
- # 测试练习: 修改调度器
- [root@localhost ~]# ipvsadm -E -t 172.16.100.9:80 -s sh
-
- # 测试练习: 删除调度器
- ipvsadm -D -t 172.16.100.9:80
-
- # 查看规则
- [root@localhost ~]# ipvsadm -L -n
- # 测试练习: 修改RS服务器
- [root@localhost ~]# ipvsadm -e -t 172.16.100.9:80 -r 192.168.20.7:8080 -m
-
- # 测试练习: 删除RS服务器
- [root@localhost ~]# ipvsadm -d -t 172.16.100.9:80 -r 192.168.20.7:8080
-
- # 查看规则
- [root@localhost ~]# ipvsadm -L -n
可以将配置写成脚本,进行配置
如果只让DS
响应访问VIP
的请求报文呢?
在路由器的路由表上配置对于VIP的MAC
地址,但路由器有可能是运营商的
在RSs上配置arpiptables
,禁止响应arp地址为IP的MAC地址的广播
DS
:物理网卡配置DIP,物理网卡别名配置VIP
RS
:物理网卡配置RIP,lo网卡别名配置VIP
0:只要请求的地址在本机有就响应
1:只响应接口地址的请求
0:所有网络都通告给物理网络
1:尽量避免通告非本网络地址
2:只会通告本网络地址
Director Server
- # 配置DS的DIP接口,配置物理网卡
- # DS: 只需要一块网卡就可以了,禁用之前添加的新网卡
- # RS: 使用VM的桥接网络模式
-
- # 配置DS的VIP接口,添加物理网卡的别名
- [root@localhost ~]# ifconfig eno16777736:0 172.16.100.10/32 broadcast 172.16.100.10 up
-
- # 配置路由,只想要哪个接口的响应请求
- [root@localhost ~]# route add -host 172.16.100.10 dev eno16777736:0
Real Server
- # 配置RS的RIP接口
- # A: 172.16.100.21; 网关指向同一个路由 172.16.0.1
- # B: 172.16.100.22; 网关指向同一个路由 172.16.0.1
- # 配置lo接口的VIP,分别配置A/B主机
- [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
- [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
- [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
- [root@localhost ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
-
- [root@localhost ~]# ifconfig lo:0 172.16.100.10/32 broadcast 172.16.100.10 up
- [root@localhost ~]# route add -host 172.16.100.10 dev lo:0
-
- # 查看配置结果
- [root@localhost ~]# arp -a
- # 配置DS虚拟服务器
- [root@localhost ~]# ipvsadm -A -t 172.16.100.10:80 -s rr
- [root@localhost ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.21 -g
- [root@localhost ~]# ipvsadm -a -t 172.16.100.10:80 -r 172.16.100.22 -g
NAT模型实现HTTP和HTTPS两种负载均衡集群
HTTPS是长连接的尝试
配置SSL的时候,RS两台Web服务器都要提供同一个私钥和同一个证书
生产环境,一般都会使用Nginx和Haproxy做负载均衡,不太使用LVS
DR模型实现HTTP
和HTTPS
的负载均衡集群
DR模型实现MySQL
的负载均衡集群
规划拓扑实现,DR模型中VIP与RIP不在同一网络中的集群
HTTPS和MySQL都是长连接的尝试
配置SSL
的时候,RS两台Web服务器都要提供同一个私钥和同一个证书
文章作者: Escape
链接: https://escapelife.github.io/posts/62a6ac50.html
往期推荐
- 关注「开源Linux」加星标,提升IT技能
-
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。