LVS集群部署
1. ipvs集群服务的特点
- 一个ipvs主机可以同时定义多个cluster service,即可以同时负载均衡多个服务
- 定义时指明lvs-type(lvs的模式)以及lvs scheduler(调度器)
- 一个cluster service上至少应该有两个real server
环境说明
服务器类型 | IP地址 | 系统版本 |
---|
DR | 192.168.200.145 | centos 8 | RS1 | 192.168.200.150 | centos 8 | RS2 | 192.168.200.151 | centos 8 |
2. LVS-NAT部署
- 需求:实现httpd服务的http和https的负载均衡
2.1先下载所需要的安装包
[root@DR ~]
[root@DR ~]
[root@RS1 ~]
[root@RS2 ~]
2.2 DR要配置2块网卡,分别配置DIP和VIP
//这里可以直接修改网卡的配置文件,添加一个IP地址即可
[root@DR ~]
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR0=192.168.200.145 //本机IP为DIP
PREFIX0=24
GATEWAY0=192.168.200.2
IPADDR1=192.168.200.100 //新添加的IP为VIP,实际情况中VIP应该为公网IP
PREFIX1=24
//重启网卡,让配置生效
[root@DR ~]
2.3 RS1需要配置RIP
[root@RS1 ~]
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.150
PREFIX=24
GATEWAY=192.168.200.145 //这里网关要指向DR的DIP
//重启网卡,让配置生效
[root@rs1 ~]
[root@RS1 ~]
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.200.145 0.0.0.0 UG 100 0 0 ens33
192.168.200.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
2.4 RS2需要配置RIP
[root@RS2 ~]
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.200.151
PREFIX=24
GATEWAY=192.168.200.145
[root@RS2 ~]
[root@rs1 ~]
[root@RS2 ~]
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.200.145 0.0.0.0 UG 100 0 0 ens33
192.168.200.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
[root@RS2 ~]
2.5 开启DR的ip转发功能
//在配置文件中追加以下内容
[root@DR ~]
net.ipv4.ip_forward = 1
//重读配置
[root@DR ~]
net.ipv4.ip_forward = 1
2.6在Director上添加并保存规则
//添加调度器
[root@DR ~]# ipvsadm -A -t 192.168.200.100:80 -s rr
[root@DR ~]# 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.200.100:80 rr
//添加RS至调度器
[root@DR ~]# ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.150:80 -m
[root@DR ~]# ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.151:80 -m
[root@DR ~]# 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.200.100:80 rr
-> 192.168.200.150:80 Masq 1 0 0
-> 192.168.200.151:80 Masq 1 0 0
//保存配置
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@Director ~]# cat /etc/sysconfig/ipvsadm
-A -t 192.168.200.100:80 -s rr
-a -t 192.168.200.100:80 -r 192.168.200.150:80 -m -w 1
-a -t 192.168.200.100:80 -r 192.168.200.151:80 -m -w 1
2.7 配置RS1和RS2的httpd服务
[root@rs1 ~]# echo "RS1" > /var/www/html/index.html
[root@rs2 ~]# echo "RS2" > /var/www/html/index.html
2.8关闭三台主机防火墙
[root@localhost ~]
[root@localhost ~]
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]
后面两台主机操作一样,略...
2.9 测试
[root@DR ~]
RS2
[root@DR ~]
RS1
[root@DR ~]
RS2
[root@DR ~]
RS1
[root@DR ~]
3. LVS-DR部署
- 实现httpd服务的http和https的负载均衡
2.1 DR要配置2块网卡,分别配置DIP和VIP
//配置director的ip地址信息(dip,vip)
[root@DR ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR0=192.168.200.145 //本机IP为DIP
PREFIX0=24
GATEWAY0=192.168.200.2
IPADDR1=192.168.200.100 //新添加的IP为VIP,实际情况中VIP应该为公网IP
PREFIX1=24
[root@DR ~]# ifdown ens33;ifup ens33
2.2 修改网卡内核参数
[root@RS1 ~]# vim /etc/sysctl.conf //添加以下内核参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]# sysctl -p //重新读配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS1 ~]#
[root@RS2 ~]# vim /etc/sysctl.conf //添加以下内核参数
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]# sysctl -p //重新读配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[root@RS2 ~]#
2.3 RS1和RS2需要配置RIP
注意:此处必须先修改网卡内核参数然后再配置vip,因为如果先配vip,vip配好后就会立马通告给别人,而修改内核参数就是为了不通告
[root@RS1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR0=192.168.200.150
PREFIX0=24
GATEWAY0=192.168.200.2 //注意这里的网关就不能指向DR了
IPADDR1=192.168.200.100
PREFIX1=24
[root@RS1 ~]# ifdown ens33;ifup ens33 //重启网卡
成功停用连接 "ens33"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@RS1 ~]#
[root@RS2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR0=192.168.200.151
PREFIX0=24
GATEWAY0=192.168.200.2 //这里也一样把网关改回来
IPADDR1=192.168.200.100
PREFIX1=24
[root@RS2 ~]# ifdown ens33;ifup ens33 //重启网卡
成功停用连接 "ens33"(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/4)
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@RS2 ~]#
2.4 在DR上添加并保存规则
[root@DR ~]
[root@DR ~]
[root@DR ~]
[root@DR ~]
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.200.100:80 rr
-> 192.168.200.150:80 Masq 1 0 0
-> 192.168.200.151:80 Masq 1 0 0
//保存配置
[root@DR ~]
[root@DR ~]
-A -t 192.168.200.100:80 -s rr
-a -t 192.168.200.100:80 -r 192.168.200.150:80 -g -w 1
-a -t 192.168.200.100:80 -r 192.168.200.151:80 -g -w 1
2.5测试
[root@DR ~]
[root@DR ~]
RS2
[root@DR ~]
RS1
[root@DR ~]
RS2
[root@DR ~]
RS1
|