这篇文章详细介绍了如何使用LVS进行负载均衡的实践操作。首先,文章列出了所需的服务器IP和角色,然后分别介绍了在LVS服务器和WEB服务器上的配置步骤。在LVS服务器上,主要是安装ipvsadm,配置VIP网卡和使用ipvsadm配置VIP。在WEB服务器上,主要是安装nginx服务,配置index.html文件,修改arp_ignore和arp_announce配置,以及环回接口配置VIP。最后,文章展示了如何在LVS服务器上添加rs,以及如何访问VIP。
机器说明
192.168.199.10
lvs服务器、192.168.199.11
web服务器1、192.168.199.12
web服务器2、192.168.199.100
vip。
IP | 说明 |
---|---|
192.168.199.10 | LVS服务器 |
192.168.199.11 | WEB服务器1 |
192.168.199.12 | WEB服务器2 |
192.168.199.100 | VIP(虚拟IP) |
LVS服务器
# 安装ipvsadm
[root@localhost ~] yum install ipvsadm -y
# 配置VIP网卡
# 注意!!! 我的网卡是ens33,请根据自己的实际网卡来配置比如eth0网卡
[root@localhost ~] ifconfig ens33:8 192.168.199.100/24
# 使用ipvsadm配置VIP
# -A 参数添加VIP
# -t 参数tcp协议
# 192.168.199.100:80 VIP端口是80
# -s 参数负载算法,rr为轮询
[root@localhost ~] ipvsadm -A -t 192.168.199.100:80 -s rr
WEB服务器1
# 安装nginx服务
[root@localhost ~] yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel
[root@localhost ~] wget https://nginx.org/download/nginx-1.21.3.tar.gz && tar -zxf nginx-1.21.3.tar.gz && cd nginx-1.21.3/
[root@localhost ~] ./configure && make && make install
[root@localhost ~] /usr/local/nginx/sbin/nginx
# 配置index.html文件
[root@localhost ~] cat /usr/local/nginx/html/index.html
192.168.199.11
# 修改arp_ignore和arp_announce配置
# 注意!!!我的网卡是ens33,按自己实际网卡来操作,比如eth0目录下
[root@localhost ~] echo 1 > /proc/sys/net/ipv4/conf/ens33/arp_ignore
[root@localhost ~] echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce
[root@localhost ~] echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@localhost ~] echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# 环回接口配置VIP,实现对内可见对外隐藏
# 切记!!! 切记!!! 掩码是4个255
[root@localhost ~] ifconfig lo:2 192.168.199.100 netmask 255.255.255.255
WEB服务器2
操作同WEB服务器1
LVS服务器
# lvs添加rs
# -a 参数添加rs
# -t 参数tcp协议
# 192.168.199.100:80 如上第一配置的vip及端口
# -r rs服务器ip即WEB服务1或WEB服务器2对应的IP
# -g 参数lvs模式,不填默认为DR模式
[root@localhost ~] ipvsadm -a -t 192.168.199.100:80 -r 192.168.199.11 -g
[root@localhost ~] ipvsadm -a -t 192.168.199.100:80 -r 192.168.199.12 -g
# ipvsadm 查看rs情况
# ipvsadm -lnc 会查看当前连接情况
[root@localhost ~] 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.199.100:80 rr
-> 192.168.199.11:80 Route 1 0 0
-> 192.168.199.12:80 Route 1 0 0
访问VIP
# 请求结果会轮着来
[root@localhost ~] curl -X GET http://192.168.199.100:80
192.168.199.11
[root@localhost ~] curl -X GET http://192.168.199.100:80
192.168.199.12