LVS集群部署

43 篇文章 0 订阅
5 篇文章 0 订阅

LVS集群部署

1. ipvs集群服务的特点

  • 一个ipvs主机可以同时定义多个cluster service,即可以同时负载均衡多个服务
  • 定义时指明lvs-type(lvs的模式)以及lvs scheduler(调度器)
  • 一个cluster service上至少应该有两个real server

环境说明

服务器类型IP地址系统版本
DR192.168.200.145centos 8
RS1192.168.200.150centos 8
RS2192.168.200.151centos 8

2. LVS-NAT部署

  • 需求:实现httpd服务的http和https的负载均衡
2.1先下载所需要的安装包
[root@DR ~]# yum -y install epel-release     //在DR1上下载
[root@DR ~]# yum -y install vim net-tools ipvsadm

[root@RS1 ~]# yum -y install httpd net-tools  //在RS1上下载


[root@RS2 ~]# yum -y install httpd net-tools  //在RS2上下载

2.2 DR要配置2块网卡,分别配置DIP和VIP
//这里可以直接修改网卡的配置文件,添加一个IP地址即可
[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.3 RS1需要配置RIP
[root@RS1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
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 ~]# ifdown ens33;ifup ens33
[root@RS1 ~]# route -n
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 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
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 ~]# ifdown ens33;ifup ens33
[root@RS2 ~]# route -n
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 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1

//重读配置
[root@DR ~]# sysctl -p
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 ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@localhost ~]# setenforce 0

后面两台主机操作一样,略...
2.9 测试
[root@DR ~]# curl http://192.168.200.100
RS2
[root@DR ~]# curl http://192.168.200.100
RS1
[root@DR ~]# curl http://192.168.200.100
RS2
[root@DR ~]# curl http://192.168.200.100
RS1
[root@DR ~]# 
2.9.1 完整的设置ipvsadm规则,使其重启服务器时服务不会丢失
// 先将ipvsadm规则保存到其他地方
ipvsadm -Sn > /data/ipvs.log    //位置随便定义

// 启动服务
[root@DR ~]# systemctl start ipvsadm

// 将服务设置为开机自启动
[root@DR ~]# systemctl enable --now ipvsadm
[root@DR ~]# systemctl status ipvsadm
● ipvsadm.service - Initialise the Linux Virtual Server
   Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; enabled; vendor pre>
   Active: active (exited) since Mon 2021-10-18 21:36:18 EDT; 17min ago
  Process: 970 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconf>
 Main PID: 970 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 49290)
   Memory: 0B
   CGroup: /system.slice/ipvsadm.service

// 重启、测试服务还是启动的,调度也正常
[root@DR ~]# reboot
[root@DR ~]# systemctl stop --now firewalld
[root@DR ~]# curl http://192.168.200.100
192.168.200.151
[root@DR ~]# curl http://192.168.200.100
192.168.200.150

3. LVS-DR部署

  • 实现httpd服务的http和https的负载均衡
3.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
3.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 ~]# 
3.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 ~]# 

3.4 在DR上添加并保存规则
[root@DR ~]# ipvsadm -A -t 192.168.200.100:80 -s rr
[root@DR ~]# ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.150:80 -g
[root@DR ~]# ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.151:80 -g
[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@DR ~]# 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 -g -w 1
-a -t 192.168.200.100:80 -r 192.168.200.151:80 -g -w 1

3.5测试
[root@DR ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@DR ~]# curl http://192.168.200.100
RS2
[root@DR ~]# curl http://192.168.200.100
RS1
[root@DR ~]# curl http://192.168.200.100
RS2
[root@DR ~]# curl http://192.168.200.100
RS1

3.6 完整的设置ipvsadm规则,使其重启服务器时服务不会丢失

3.6.1设置ipvsadm开机自启
// 先将ipvsadm规则保存到其他地方
ipvsadm -Sn > /data/ipvs.log    //位置随便定义

// 启动服务
[root@DR ~]# systemctl start ipvsadm

// 将服务设置为开机自启动
[root@DR ~]# systemctl enable --now ipvsadm
[root@DR ~]# systemctl status ipvsadm
● ipvsadm.service - Initialise the Linux Virtual Server
   Loaded: loaded (/usr/lib/systemd/system/ipvsadm.service; enabled; vendor pre>
   Active: active (exited) since Mon 2021-10-18 21:36:18 EDT; 17min ago
  Process: 970 ExecStart=/bin/bash -c exec /sbin/ipvsadm-restore < /etc/sysconf>
 Main PID: 970 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 49290)
   Memory: 0B
   CGroup: /system.slice/ipvsadm.service

// 重启、测试服务还是启动的,调度也正常
[root@DR ~]# reboot
[root@DR ~]# systemctl stop --now firewalld
[root@DR ~]# curl http://192.168.200.100
192.168.25.150
[root@DR ~]# curl http://192.168.200.100
192.168.25.151

3.6.2 将命令加入到启动文件/etc/rc.d/rc.local
[root@DR ~]# vim /etc/rc.d/rc.local 
# that this script will be executed during boot.

touch /var/lock/subsys/local
ipvsadm -A -t 192.168.200.100:80 -s rr
ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.150:80 -g
ipvsadm -a -t 192.168.200.100:80 -r 192.168.200.151:80 -g
ipvsadm -Sn > /etc/sysconfig/ipvsadm

// 给/etc/rc.d/rc.local执行权限
[root@DR ~]# chmod +x /etc/rc.d/rc.local 
[root@DR ~]# ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 660 10月 21 40:23 /etc/rc.d/rc.local

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LVSLinux Virtual Server)是一个开源项目,可以在Linux内核中实现一个高性能、高可用性的服务器集群。其中,NAT模式是LVS集群的一种常见部署方式,可以将外部请求通过LVS集群中的虚拟IP地址映射到后端真实服务器上。 以下是LVS集群搭建NAT模式的步骤: 1. 安装LVS软件包 在LVS集群中,需要安装ipvsadm和keepalived这两个软件包来实现负载均衡和高可用性。可以使用以下命令安装: ``` sudo apt-get install ipvsadm keepalived ``` 2. 配置LVS集群LVS集群中,需要至少有一个Director服务器和多个Real服务器。Director服务器是LVS集群中的核心部分,负责接收外部请求并将它们转发到Real服务器上。Real服务器是LVS集群中的后端服务器,负责处理来自Director服务器的请求。 在Director服务器上,需要进行以下配置: - 配置网络接口,将其绑定到虚拟IP地址上; - 配置ipvsadm规则,将请求映射到Real服务器上; - 配置keepalived,实现高可用性。 在Real服务器上,需要关闭iptables和ARP扫描功能,并配置正确的网络接口。 3. 测试LVS集群 在完成LVS集群的配置后,可以使用curl等工具测试其性能和可用性。例如,可以使用以下命令发送一个HTTP请求: ``` curl http://<虚拟IP地址>/ ``` 如果一切正常,请求应该被转发到Real服务器上,并返回正确的响应。 以上是LVS集群搭建NAT模式的基本步骤,具体的操作细节和配置方法可以参考LVS官方文档或相关的教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值