LVS负载均衡操作与实践。
机器说明
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