LVS-NAT部署实战
一、环境
LVS调度器作为Web服务器池的网关,LVS两块网卡,分别连接内外网,使用轮询(rr)调度算法
实际生产环境中,两台服务器的服务及内容应是一致的,现在为了区别轮询访问的验证,设置不同的首页
这里的负载均衡调度器同时作为网关及防火墙,所以,内网中的所有服务器节点均关闭防火墙
LVS | 内:192.168.100.1 外:12.0.0.1 |
---|---|
Web1 | 192.168.100.111 |
Web2 | 192.168.100.112 |
NFS | 192.168.100.200 |
win10 | 12.0.0.12 |
二、部署
1、配置NFS共享存储服务
#首先作为共享服务器,先添加两块硬盘并进行分区、格式化、挂载(两块磁盘配置相同)
#在/opt目录下创建两个目录作为挂载点并进行挂载
[root@nfs ~]# mkdir /opt/kgc /opt/accp
[root@nfs ~]# vim /etc/fstab
#存储服务器需要安装rpcbind 和 nfs-utils 这两个包,没有的话用 yum安装即可
#更改配置文件(把存储空间提供出去)
[root@nfs ~]# vim /etc/exports
/opt/kgc 192.168.100.0/24(rw,sync,no_root_squash)
/opt/accp 192.168.100.0/24(rw,sync,no_root_squash)
#开启服务并查看
[root@localhost network-scripts]# systemctl start nfs
[root@localhost network-scripts]# systemctl start rpcbind
[root@localhost network-scripts]# showmount -e
Export list for nfs:
/opt/accp 192.168.100.0/24
/opt/kgc 192.168.100.0/24
2、配置Web服务器
#首先两台服务器分别安装apache并关闭防火墙
[root@web1 ~]# yum install -y httpd
[root@web1 ~]# systemctl stop firewalld.service
[root@web1 ~]# setenforce 0
[root@web2 ~]# yum install -y httpd
[root@web2 ~]# systemctl stop firewalld.service
[root@web2 ~]# setenforce 0
#搜索站点,能搜到nfs提供的站点
[root@web1 ~]# showmount -e 192.168.100.200
Export list for 192.168.100.200:
/opt/accp 192.168.100.0/24
/opt/kgc 192.168.100.0/24
#添加自动挂载(两个web服务器配置相同,kgc改为accp)
#重新加载/etc/fstab(两台服务器操作一致)
#现在开始添加首页文件
[root@web1 ~]# cd /var/www/html
[root@web1 html]# vim index.html
<h1>hello!kgc</h1>
[root@web1 html]# systemctl start httpd
[root@web2 ~]# cd /var/www/html
[root@web2 html]# vim index.html
<h1>hello!accp</h1>
[root@web2 html]# systemctl start httpd
现在两台web服务配置完成,网站站点使用的是共享存储服务器的存储空间
3、配置 LVS
#安装 ipvsadm 服务
[root@lvs ~]# yum install -y ipvsadm
#开启路由转发功能
[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
[root@lvs ~]# sysctl -p //加载
#设置防火墙规则(地址映射)
[root@lvs ~]# iptables -F //清除转发表
[root@lvs ~]# iptables -t nat -F //清除nat地址转换表
[root@lvs ~]# iptables -t nat -A POSTROUTING -o ens36 -s 192.168.100.0/24 -j SNAT --to-source 12.0.0.1
设置规则, -t指定nat地址转换表 -A在末尾插入postrouting链 -o对外出口为36 -s指定源地址192.168.100.0/24 -j做一个SNAT转换 --to-source 转换成12.0.0.1
#加载LVS内核模块
[root@lvs ~]# modprobe ip_vs
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
#开启ipvsadm(先保存,再开启服务)
[root@lvs ~]# ipvsadm --save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl start ipvsadm.service
#定义脚本,配置负载分配策略
[root@lvs opt]# vim nat.sh
#!/bin/bash
ipvsadm -C
ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.111:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.100.112:80 -m
ipvsadm
#脚本添加执行权限并执行脚本
[root@lvs opt]# chmod +x nat.sh
[root@lvs opt]# ./nat.sh
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP lvs:http rr
-> 192.168.100.111:http Masq 1 0 0
-> 192.168.100.112:http Masq 1 0 0
三、验证
#win10作为外网客户端,先将ip、子网掩码、网关、DNS等改一下
#然后进入网页进行访问验证,多刷新几次(记得清除缓存)
因为做了NAT模式和存储共享,所以是可以直接访问到两台web服务器上的网页的,这就说明群集起作用了