LVS下的NAT模式

Valky
阅读167喜欢0·linux发表2019-12-30更新2019-12-30
前期准备:
三台虚拟主机分别模拟两台real server、一台Director server
物理主机作为客户端访问Director server上的vip
关闭防火墙,清除防火墙策略,关闭selinux
   

CIP:客户端计算机的ip
VIP:Director用于向客户端提供服务的ip地址
DIP:在Director的VIP上接收访问集群服务的请求,这些请求通过DIP转发出去抵达各个集群节点
RIP:在LVS术语中,向外部世界提供服务的节点叫做真实的服务器,因此在真实服务器上使用的ip地址叫做真实ip地址

 主机(环境)ip  服务
 real server1(rhel7) RIP:192.168.19.100 nginx
 real server2(Cetos7) RIP:192.168.19.200 nginx
 Director server(Centos7) DIP: eno16777736 :192.168.19.22(内网) 
 VIP: eno33554992 :192.168.20.33(外网)
 ipvsadm


 real server1
安装nginx服务
写入网页内容
echo "rs1rs1" >/usr/share/nginx/html/index.html

real server2
安装nginx服务
写入网页内容
echo "rs1rs2" >/usr/share/nginx/html/index.html
注意:切记一定要在两台 real server上设置网关,网关的IP 为 director 的内网 IP。


director server
安装ipvsadm服务
yum install ipvsadm -y
配置脚本
[root@localhost ~]#vim  /usr/local/sbin/lvs_nat.sh
#! /bin/bash

# director服务器上开启路由转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward

# 关闭 icmp 的重定向

echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eno16777736/send_redirects

echo 0 > /proc/sys/net/ipv4/conf/eno33554992/send_redirects

# director设置 nat 防火墙

iptables -t nat -F

iptables -t nat -X

iptables -t nat -A POSTROUTING -s 192.168.19.0/24 -j MASQUERADE

# director设置 ipvsadm

IPVSADM="/sbin/ipvsadm"

$IPVSADM -C

$IPVSADM -A -t 192.168.20.33:80 -s wrr

$IPVSADM -a -t 192.168.20.33:80 -r 192.168.19.100:80 -m -w 1

$IPVSADM -a -t 192.168.20.33:80 -r 192.168.19.200:80 -m -w 1
执行脚本
[root@localhost sbin]# pwd
/usr/local/sbin
[root@localhost sbin]# bin/bash lvs_nat.sh
查看ipvsadm设置的规则
[root@localhost sbin]# 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.20.33:80 wrr

-> 192.168.19.100:80 Masq 1 0 0
-> 192.168.19.200:80 Masq 1 0 0
测试lvs的效果
访问192.168.20.33
[root@localhost sbin]# curl 192.168.20.33
rs2rs2
[root@localhost sbin]# curl 192.168.20.33
rs2rs1
在开启ipvsadm遇到的问题
出现报错:/bin/bash: /etc/sysconfig/ipvsadm: No such file or directory
解决:执行 ipvsadm --save > /etc/sysconfig/ipvsadm


随想
博客
机器学习
教程
邻家酒肆
前端
深度学习
算法
小程序
资源
cpp
html
javascript
python
sql
node

最近文章