构建LVS负载均衡集群——NAT模式(最简单方式)
一、装备一台lvs调度器主机
要求两个网卡一个为内部局域网ip,一个为公网ip
#IP地址设置过程不再重复 [root@localhost ~]# ip a | grep eth0 #内网ip 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.200.10/24 brd 192.168.200.255 scope global eth0 [root@localhost ~]# ip a | grep eth1 #公网ip 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 inet 192.168.100.1/24 brd 192.168.100.255 scope global eth1 #开启路由功能,以便两个不同网络之间通信 [root@localhost ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 [root@localhost ~]# sysctl -p net.ipv4.ip_forward = 1
安装ipvsadm软件,配置lvs负载均衡
[root@localhost ~]# yum -y install ipvsadm [root@localhost ~]# lsmod | grep "ip_vs" #查看策略中有没有 #没有添加 [root@localhost ~]# modprobe ip_vs [root@localhost ~]# lsmod | grep "ip_vs" ip_vs
添加负载分配策略
[root@localhost ~]# ipvsadm -A -t 192.168.100.1:80 -s rr [root@localhost ~]# ipvsadm -a -t 192.168.100.1:80 -r 192.168.200.111:80 -m -w 1 [root@localhost ~]# ipvsadm -a -t 192.168.100.1:80 -r 192.168.200.112:80 -m -w 1 ——————————————————————————————————— -A:表示添加虚拟服务器 -t用来指定VIP 地址及TCP端口 -s:用来指定负载调度算法——轮询(rr) -a:添加服务器 -r 用来指定RIP 地址及TCP 端口 -m:使用NAT 群集模式(-g DR 模式、-i TUN 模式 -w:用来设置权后重(权重为0 时表示暂停节点)
查看群集节点状态
[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.100.1:80 rr -> 192.168.200.111:80 Masq 1 0 0 -> 192.168.200.112:80 Masq 1 0 0
二、设置两台轮询主机
#安装Apache,并开启服务,不再复述
修改两台主机的默认网关,改为lvs服务器内网IP地址
部分修改内容 第一台 [root@tomcat1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 IPADDR=192.168.200.112 NETMASK=255.255.255.0 GATEWAY=192.168.200.10 DNS1=8.8.8.8 ~ 第二台 [root@tomcat1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777728 IPADDR=192.168.200.111 NETMASK=255.255.255.0 GATEWAY=192.168.200.10 DNS1=8.8.8.8
为两台主机准备测试文件
第一台 [root@tomcat1 ~]# echo "222222222222" > /var/www/html/index.html 第二台 [root@localhost ~]# echo "1111111" > /var/www/html/index.html
三、测试
关闭防火墙,测试
#是轮询访问 [root@localhost ~]# while : ; do curl 192.168.100.1 ;sleep 2; done 1111111 222222222222 1111111 222222222222 1111111 222222222222 1111111 222222222222 1111111 222222222222 1111111 222222222222