准备工作
网络准备
三台机器.
分发器 (调度器 director)
内网: 192.168.8.133 外网: 192.168.75.128
real server1(real1)
内网: 192.168.8.134 设置网关为: 192.168.8.133
real server2(real2)
内网: 192.168.8.135 设置网关为: 192.168.8.133
防火墙
关闭系统防火墙:
- [root@real1 ~]# systemctl stop firewalld
- [root@real1 ~]# systemctl disable firewalld
关闭 SELinux:
- [root@director ~]# setenforce 0
- [root@director ~]# vim /etc/selinux/config
- SELINUX=disabled
注: 分别在三台机器进行上述操作.
以下操作在 real1 和 real2 中进行:
安装 iptables 服务:
[root@real1 ~]#yum install -y iptables-services
设置 iptables 服务:
- [root@real1 ~]# iptables -F
- [root@real1 ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ 确定 ]
说明: 进行该设置的原因是 NAT 模式是基于防火墙 nat 表的一种模式, 所以会使用 iptables 规则.
开始搭建
配置 director:
安装 ipvsadm 工具:
[root@director ~]# yum install -y ipvsadm
配置 ipvsadm 脚本:
- [root@director ~]# 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
注意区分网卡名字, adai 的两个网卡分别为 ens33 和 ens37
- echo 0> /proc/sys/net/ipv4/conf/ens33/send_redirects
- echo 0> /proc/sys/net/ipv4/conf/ens37/send_redirects
director 设置 nat 防火墙
iptables -t nat -F
iptables -t nat -X
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -j MASQUERADE
director 设置 ipvsadm 规则
- IPVSADM='/usr/sbin/ipvsadm'
- $IPVSADM -C
- #-C=clear, 清除规则
- $IPVSADM -A -t 192.168.75.128:80 -s rr
- #-A:=add, 添加规则;-t:=tcp;-s 指定算法;
- # 在此可以添加 - p: 指定超时时间 (解决 session 问题: 保证同一请求被分发到同一 rs 上)
- # 因为添加 - p 选项后会影响测试效果, 所以在此不加该参数 (注: 时间不能设置为 0)
- $IPVSADM -a -t 192.168.75.128:80 -r 192.168.8.134:80 -m -w 1
- $IPVSADM -a -t 192.168.75.128:80 -r 192.168.8.135:80 -m -w 1
- #-a:=add, 增加 nat 架构中的 rs;-r: 指定 rs 的 IP;-m: 指定 LVS 模式为 NAT(masquerade)
- #-w:=weight, 指定权重
执行该脚本:
- [root@director ~]# sh /usr/local/sbin/lvs_nat.sh
- # 注: 执行该脚本时无错误输出说明没问题.
查看 ipvsadm 规则:
- [root@director ~]# 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.75.128:80 rr
- -> 192.168.8.134:80 Masq 1 1 3
- -> 192.168.8.135:80 Masq 1 0 4
配置 rs:
在两台 rs 上安装 Nginx, 并分别设置其主页用来区分两台机器.
- [root@real1 ~]# yum install -y nginx
- [root@real1 ~]# systemctl start nginx
编辑 rs1 主页:
[root@real1 ~]# vim /usr/share/nginx/html/index.html
This is real server 1.
编辑 rs2 主页:
[root@real2 ~]# vim /usr/share/nginx/html/index.html
This is real server 2.
测试
访问公网 IP:192.168.75.128.
- [root@director ~]# curl 192.168.75.128
- This is real server 2.
- [root@director ~]# curl 192.168.75.128
- This is real server 1.
- [root@director ~]# curl 192.168.75.128
- This is real server 2.
- [root@director ~]# curl 192.168.75.128
- This is real server 1.
- [root@director ~]# curl 192.168.75.128
即, 搭建成功!
来源: http://www.bubuko.com/infodetail-2559253.html