LVS负载均衡
负载均衡群集,高可用群集,高性运算群集。
负载均衡工作模式:
1.地址转换(NAT模式)
2.IP隧道(tun模式)
3.直接路由(DR模式)
LVS由我国章文嵩博士在1998年5月创建,实际上相当于基于IP地址的虚拟化应用,为基于IP抵制内容请求分发的负载均衡提出了一种高效的解决方法。
modprobe ip_vs 加载ip_vs模块
cat /proc/net/ip_vs 查看ip_vs版本信息
yum install ipvsadm -y下载安装ipvsadm
ipvsadm -v 查看安装情况
为了模拟生产状况,可以准备五台服务器,三台内网web,一台服务器(两个网卡),一台外部服务器
创建虚拟服务器:ipvsadm -A -t 200.0.0.1:80 -s rr (rr轮询,wrr加权轮询,lc最少连接, 加权最少连接wlc)
ipvsadm -a -t 200.0.0.1:80 -r 192.168.1.2:80 -m -w 1
ipvsadm -a -t 200.0.0.1:80 -r 192.168.1.3:80 -m -w 1
(-a 添加真实服务器, -t用来指定VIP及其TCP端口, -r用来指定RIP地址及TCP端口,-m表示NAT群集模式,-w用来设置权重)
ipvsadm -ln 查看节点状态
ipvsadm -d -r 200.0.0.2:80 -t 192.168.1.2:80 从服务器池中删除某一个节点-d
ipvsadm -D -r 200.0.0.2:80删除整个虚拟机服务器。
ipvsadm-save > /etc/sysconfug/ipvsadm 保存策略
cat /etc/sysconfig/opvsadm 确认保存结果
systemctl stop ipvsadm 停止服务
systemctl start ipvsadm 启动服务
NFS 共享存储服务
NFS是一种基于TCP/IP传输的网络文件系统协议,通过NFS 客户机就可以像访问本地目录一样访问远程服务器中的共享资源,对于大多数负载均衡群集来说,使用NFS协议来共享数据存储是比较常见的做法NFS也是NAS存储设备必然支持的一种协议。
yum install nfs-utils rpcbind -y 下载安装nfs-utils. rpcbind软件包
systemctl enable nfs
systemctl enable rpcbind
mkdir -p /opt/wwwroot
vi /etc/exports
systemctl start rpcbind
systemctl start nfs
netstat -tunlp |grep rpcbind
showmount -e
在库户籍上访问NFS共享资源
yum install nfs-utils rpcbind -y 下载安装nfs-utils. rpcbind软件包
systemctl enable nfs
systemctl enable rpcbind
showmount -e 192.168.1.4
mount 192.168.1.4: /opt/wwwroot /var/www/html 在客户机上手动挂载
tail -l /etc/mtab 确认挂载结果
vi /var/www/html在本地创建客户机测试文件
挂在完成后,访问客户机的/var/www/html
NFS共享资源基本原理:
1.在服务器和客户机上都安装安装nfs-utils rpcbind
2.启动服务器启动nfshe rpcbind
3.在服务器找一个想要共享的目录文件
4.将要共享的目录文件写入/etc/export,格式:/opt/wwwroot 192.168.1.0/24(rw,sync,no_root_squash)(重点)
或者/var/ftp/pub 192.168.1.2(ro) 192.168.1.3(rw),将文件分给不同的主机分配不同的权限。
5.可以在服务器上showmount -e 查看一下主机NFS的共享目录
6.在客户机上查看指定服务器发布的共享目录有哪些showmount -e 192.168.1.4,接着将共享目录挂载到本地目录,在访问本地目录时就可以通过NFS访问远程的目录了mount 192.168.1.4:/var/www/html/ /var/www/html/
7.也可以实现自动挂载在 /etc/fstab文件中加入dev/mapper/centos-swap swap swap defaults 0 0 皆可以实现自动挂载
LVS-DR
内部主机调度器上的设置(vnet1)ens33 192.168.1.1 GATEWAY=192.168.1.5 ens33:0(192.168.1.4)
modprobe ip_vs
下载一下ipvsadm包,主机没联网可以用光盘下载
配置调度器策略:ipvsadm -A -t 192.168.1.4:80 -s rr
ipvsadm -a -t 192.168.1.4:80 -r 192.168.1.2:80 -g
ipvsadm -a -t 192.168.1.4:80 -r 192.168.1.3:80 -g
保存策略:ipvsadm-save > /etc/sysconfig/ipvs
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0 现在以后收到的报文都不主动向外发送
[root@localhost ~]# sysctl -p 保存 至此所有调度器上做的操作都已完成
[root@localhost ~]# vim /etc/rc.local
modprobe ip_vs
ipvsadm-restore < /etc/sysconfig/ipvs 设置开机启动
chmod +x /etc/rc.d/rc.local
第二台内部主机主机 两个网卡(ens33:192.168.1.2,回环地址lo-0:192.168.1.4,子网掩码:255.255.255.255)
route add -host 192.168.1.4 dev lo:0 设置来自192.168.1.4全部的包不发送出去。
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.all.arp_announce=2
保存策略:sysctl -p
现在可以给网页添加东西进行测试
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# echo 1.2 > /var/www/html/index.html
[root@localhost ~]# vim /etc/rc.local 在开机启动里添加这条路由规则
route add -host 192.168.1.4 dev lo:0
chmod +x /etc/rc.d/rc.local 给他执行权限
第三台内部主机 同样两个网卡(ens33:192.168.1.3, 网关:192.168.1.5 ,lo:0 192.168.1.4,子网掩码255.255.255.255)
和第二台主机一样设置规则
[root@localhost ~]# vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.all.arp_announce=2
同样添加路由不向外面转发 route add -host 192.168.1.4 dev lo:0
启动web systemctl start httpd
echo 1.3 > /var/www/html/index.html
设置完毕现在可以在网管位置访问192.168.1.4网页,可以通过访问curl192.168.1.4这个代理网站 看到内部网络网页(192.168.1.2,192.168.1.3)
在主机上设置两个网卡和网段并设置防火墙规则 iiptables -t nat -A PREROUTING -d 200.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.1.4:80通过外网访问代理主机
全部设置完成,在外网访问代理主机可以通过调度器访问到两个内网的网页。