lvs 笔记

我的环境:VMware workstation + 3台 Ubuntu 12.04.5 LTS 版本的。
pssh进行并行批量操作

LVS/NAT

我配置的LVS/NAT配置的拓扑图如下
lvs 笔记_第1张图片

调度服务器:2个网卡一个桥接(192.168.31.206 ),一个host-only(10.10.100.52 )
真实服务器:10.10.100.51/53 ,(仿内网模式,都是host-only)

安装LVS

sudo apt-get install ipvsadm

调度服务器配置

开启路由转发功能

vim /etc/sysctl.conf

修改ip_forward

net.ipv4.ip_forward=1
//让参数生效
sysctl -p

添加IP记录和规则

ipvsadm -A -t 192.168.31.206:80 -s rr        //这个IP地址就是用户访问的ip或者VIP地址

ipvsadm -a -t 192.168.31.206:80 -r 10.10.100.51:80 -m -w 1
ipvsadm -a -t 192.168.31.206:80 -r 10.10.100.53:80 -m

说明:-m 指定LVS 的工作模式为NAT 模式 ,rr表示采用轮询调度算法,这里还可以采用其他调度算法如wrr(加权轮询调度算法),-w在使用加权轮询调度算法时,还可以在添加规则时改变权值,一般默认权值为1

真实服务器配置

#真实服务器IP
hu@ubuntu:~$ cat lvs.txt
root@10.10.100.51
root@10.10.100.53
hu@ubuntu:~$ 

网关

hu@ubuntu:~$ pssh -h lvs.txt -i 'route add default gw 10.10.100.52'
[1] 20:36:48 [SUCCESS] root@10.10.100.51
[2] 20:36:48 [SUCCESS] root@10.10.100.53

在2台真实的服务器配置网关,是把真实服务器处理的结果交给调度服务器去响应给用户

安装nginx

//内网没有源的可以测试ssh端口22或者其他端口
pssh -h lvs.txt -i 'apt-get install nginx'

安装完成查看80端口

hu@ubuntu:~$ pssh -h lvs.txt -i 'lsof -i:80'
[1] 20:19:35 [SUCCESS] root@10.10.100.51
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1127     root    6u  IPv4   9227      0t0  TCP *:http (LISTEN)
nginx   1127     root    7u  IPv6   9228      0t0  TCP *:http (LISTEN)
nginx   1128 www-data 6u IPv4 9227 0t0 TCP *:http (LISTEN)
nginx   1128 www-data 7u IPv6 9228 0t0 TCP *:http (LISTEN)
nginx   1129 www-data 6u IPv4 9227 0t0 TCP *:http (LISTEN)
nginx   1129 www-data 7u IPv6 9228 0t0 TCP *:http (LISTEN)
nginx   1130 www-data 6u IPv4 9227 0t0 TCP *:http (LISTEN)
nginx   1130 www-data 7u IPv6 9228 0t0 TCP *:http (LISTEN)
nginx   1131 www-data 6u IPv4 9227 0t0 TCP *:http (LISTEN)
nginx   1131 www-data 7u IPv6 9228 0t0 TCP *:http (LISTEN)
[2] 20:19:35 [SUCCESS] root@10.10.100.53
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   1030     root    6u  IPv4   9062      0t0  TCP *:http (LISTEN)
nginx   1030     root    7u  IPv6   9063      0t0  TCP *:http (LISTEN)
nginx   1032 www-data 6u IPv4 9062 0t0 TCP *:http (LISTEN)
nginx   1032 www-data 7u IPv6 9063 0t0 TCP *:http (LISTEN)
nginx   1033 www-data 6u IPv4 9062 0t0 TCP *:http (LISTEN)
nginx   1033 www-data 7u IPv6 9063 0t0 TCP *:http (LISTEN)
nginx   1034 www-data 6u IPv4 9062 0t0 TCP *:http (LISTEN)
nginx   1034 www-data 7u IPv6 9063 0t0 TCP *:http (LISTEN)
nginx   1035 www-data 6u IPv4 9062 0t0 TCP *:http (LISTEN)
nginx   1035 www-data 7u IPv6 9063 0t0 TCP *:http (LISTEN)

2个真实的服务器http服务启动了

测试

为了知道到底是访问到哪台了,分别修改下/usr/share/nginx/html/index.html(查看/etc/nginx/sites-available/default 的root )

hu@ubuntu:~$ pssh -h lvs.txt -i 'hostname > /usr/share/nginx/html/index.html'
[1] 20:42:25 [SUCCESS] root@10.10.100.51
[2] 20:42:25 [SUCCESS] root@10.10.100.53

访问 http://10.10.100.51/ 为zoo1 http://10.10.100.53/ 为zoo2

访问调度服务器 http://192.168.31.206/ 返回的内容不是zoo1就是zoo2.(多刷新几次才有效,Ctrl+F5)

VIP配置

如果需要keepalived
真实服务器的路由改成

route add default gw $vip

LVS/DR

lvs 笔记_第2张图片
eth0:1 为vip 192.168.31.200

调度服务器配置

ifconfig eth0:1 192.168.31.200 broadcast 192.168.31.200 netmask 255.255.255.255 up
route add -host 192.168.31.200 dev eth0:1
ipvsadm -C
ipvsadm -A -t 192.168.31.200:80 -s rr -p 600
ipvsadm -a -t 192.168.31.200:http -r 192.168.31.186:http -g
ipvsadm -a -t 192.168.31.200:http -r 192.168.31.187:http -g

-g是使用DR模式

真实服务器配置

ifconfig lo:0 192.168.31.200 broadcast 192.168.31.200 netmask 255.255.255.255 up
route add -host 192.168.31.200 dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p

测试

同上

你可能感兴趣的:(Web,LVS,负载均衡)