#查看内核是否已经编译了IPVS [root@~ localhost]#grep -i -C 10 'ipvs' /boot/config-3.10.0-327.el7.x86_64 CONFIG_NETFILTER_XT_MATCH_IPRANGE=m CONFIG_NETFILTER_XT_MATCH_IPVS=m #已经编译到内核 CONFIG_NETFILTER_XT_MATCH_LENGTH=m # IPVS transport protocol load balancing support #IPVS负载均衡支持的传输协议 CONFIG_IP_VS_PROTO_TCP=y # IPVS scheduler #IPVS算法程序 # CONFIG_IP_VS_RR=m CONFIG_IP_VS_WRR=m #安装ipvsadm [root@~ localhost]#yum -y install ipvsadm
#mini主机(172.16.250.89/16);(192.168.2.130/24)作为VS;
[root@~ localhost]#yum -y install ipvsadm
首先配置RS:
#配置RS:192.168的主机,两台一样
[root@~ pxe99]#yum -y install httpd telnet-server tftp-server
[root@~ pxe99]#vim /var/www/html/index.html [root@~ pxe99]#cat /var/www/html/index.html <h1>RS1:192.168.2.131<h1>
[root@~ pxe99]#systemctl start httpd
[root@~ pxe99]#ss -ntl|grep "80" LISTEN 0 128 :::80
#在172的网关上测试两台:
[root@~ localhost]#curl http://192.168.2.131
<h1>RS1:192.168.2.131<h1>
[root@~ localhost]#curl http://192.168.2.132
<h1>RS:192.168.2.132<h1>
定义集群服务:
[root@~ localhost]#yum -y install ipvsadm [root@~ localhost]#ipvsadm -Ln #没由集群服务 IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn #-L, -l, --list:列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表 # -n, --numeric:不对ip地址进行dns查询 [root@~ localhost]#ipvsadm -A -t 172.16.254.88:80 -s rr #-A, --add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式 #-t, --tcp-service service-address:指定虚拟服务为tcp服务。 #172.16.254.88:80 是service address用来指定涉及的虚拟服务即虚拟地址。 #-s, --scheduler scheduling-method:指定调度算法。rr表示轮询调度算法 [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 172.16.254.88:80 rr #为虚拟服务添加后端服务器RS [root@~ localhost]#ipvsadm -a -t 172.16.254.88:80 -r 192.168.2.131 -m [root@~ localhost]#ipvsadm -a -t 172.16.254.88:80 -r 192.168.2.132 -m #-a, --add-server:为虚拟服务添加一个real server(RS) # -r, --real-server server-address:为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。 #-m, --masquerading:使用NAT模式
[root@~ localhost]#ipvsadm -e -t 172.16.154.88:80 -r 192.168.2.132 -m -w 2 -w weight:权重 #-e --edit-server 编辑一条虚拟服务器记录中的某条真实服务器记录 #-E --edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录 [root@~ localhost]#ipvsadm -E -t 172.16.254.88:80 -s wrr
#在192上: #添加用户 [root@~ pxe99]#for i in {1..3}; do useradd user$i; echo "123456" |passwd --stdin user$i; done [root@~ pxe99]#systemctl start telnet.socket [root@~ pxe99]#ss -ntl|grep "23" #在172上 [root@~ localhost]#ipvsadm -A -t 172.16.254.88:23 -s lc [root@~ localhost]#ipvsadm -a -t 172.16.254.88:23 -r 192.168.2.131 -m -w 1 [root@~ localhost]#ipvsadm -a -t 172.16.254.88:23 -r 192.168.2.132 -m -w 2 [root@~ localhost]# [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 172.16.254.88:23 lc -> 192.168.2.131:23 Masq 1 0 0 -> 192.168.2.132:23 Masq 2 0 0 TCP 172.16.254.88:80 rr -> 192.168.2.131:80 Masq 1 0 0 -> 192.168.2.132:80 Masq 1 0 0