lvs
--环境
|---------|--------------------------------|--------------------|
| 主机名 | IP地址 | 功能 |
| web1 | 192.168.1.17 | rs |
| web2 | 192.168.1.18 | realserve |
| nat | 内:192.168.1.16 外:192.168.1.102 | directorserver,ntp |
| dns | 192.168.1.12 | dns |
--web1、web2
yum -y install nginx
echo "xx" > /usr/share/nginx/html/index.html
操作相同,然后分别在浏览器访问各自的IP地址,都能看到自己写的内容
--nat
要配置两个网卡和两个IP地址,分别对内和对外(在VMware添加网络适配器)
内网:192.168.1.16
外网:192.168.1.102
--dns
配置dns服务
yum -y install bind
修改配置文件
vim /etc/named.conf
vim /etc/named.rfc1912.zones
在最后添加,
然后,
#cd /var/named/
#ls
#ll
#cp -p named.localhost xixi.zone
#vim xixi.zone
最后检查文件并且启动服务
#named-checkconf /etc/named.conf
#named-checkconf /etc/named.rfc1912.zones
#systemctl start named
#systemctl enable named
#systemctl stop firewalld
--客户端
将配置dns服务的IP重定向到/etc/resolve
#echo "nameserver 192.168.1.12" > /etc/resolv
#crontab -e
30 3 * * * /usr/sbin/ntpdate 192.168.1.11
域名ping通即可
--nat
设置时间同步服务器
#yum -y install ntpdate
#crontab -e
* 2 * * * /usr/sbin/ntpdate cn.ntp.org.cn
#systemctl stop firewalld
#systemctl start ntpdate.service
#systemctl enable ntpdate.service
-- 对dns、web1、web2设置时间同步
使用crontab -e 命令,写入
30 3 * * * /usr/sbin/ntpdate 192.168.1.11 (这是时间同步服务器的IP地址)
--nat
先下载ipvsadm
#yum -y install ipvsadm.x86_64
#配置规则
#查看所有规则
#如果已经配置好规则,重启之后也就没有了
ipvsadm -A -t 192.168.1.16:80 -s rr
ipvsadm -Ln
ens36网卡
#vim /etc/sysconfig/network-scripts/ifcfg-ens36
#cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
#ipvsadm -a -t 192.168.1.102:80 -r 192.168.1.17:80 -m
#ipvsadm -a -t 192.168.1.102:80 -r 192.168.1.18:80 -m
#ipvsadm -Ln
然后浏览器访问外网地址(访问不到正常)
--web1和web2
临时修改网关,相同操作
#route del default
#route add default gw 192.168.1.16(内网IP)
核心 内核中的ipvs ipvsadm
配置vip网卡
1、在编辑虚拟网络中创建桥接模式的网卡,并且桥接到有网的适配器上
2、在VMware的虚拟主机资源管理器找到虚拟主机,右键菜单,设置
3、添加新的网卡,自定义为刚才创建的桥接模式网卡
4、此时在虚拟主机中使用ifconfig无法找到新的网卡
5、ip a 能够查看到新的ens36网卡,没有路由
6、编辑网卡设置
7、重启network服务
--nat
ip转发
[root@NAT ~]# vim /etc/sysctl.conf
[root@NAT ~]# sysctl -p
net.ipv4.ip_forward = 1
在文件里添加这句话
DR模式
1、性能更优,回路不再经过ds
2、ds和调度主机(rs)为了保证用户的响应,都要求配置统一的vip
3、由于rs是直接响应client,网关一定不能设置为 ds 的dip
4、对rs的vip进行一致,让ds的vip接收请求,rs的vip不接受请求
--web1上挂载一个vip
ifconfig lo:0 192.168.1.102 broadcast 192.168.1.102 netmask 255.255.255.255 up
route add -host 192.168.1.102 dev ens33:0
**--设置规范
安装ipvsadm
yum -y install ipvsadm
清空规则
ipvsadm -C
设置规则
ipvsadm -A -t 192.168.1.102:80 -s rr
ipvsadm -a -t 192.168.1.102:80 -r 192.168.1.17 -g
ipvsadm -a -t 192.168.1.10280 -r 192.168.1.18 -g**
#rs不再需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端口
设置rs主机
1、在lo接口上绑定vip
[root@f ~]# ifconfig lo:0 192.168.1.102 broadcast 192.168.1.102 netmask 255.255.255.255 up
2、设置主机路由
[root@f ~]# route add -host 192.168.1.102 dev lo:0
3、抑制rs的接受请求
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
4、生成脚本,对web2使用
[root@f ~]# scp arp.sh root@192.168.1.18:~
查看数据
[root@NAT ~]# 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.1.16:80 rr
TCP 192.168.1.102:80 rr
-> 192.168.1.17:80 Masq 1 0 0
-> 192.168.1.18:80 Masq 1 0 0
dr模式的脚本
ds
#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip
read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask
255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num
rs脚本
练习:对mysql的服务进行负载均衡
#安装ipvsadm
yum list installed|grep ipvsadm
if [ $? -ne 0 ] ; then
yum -y install ipvsadm
fi
#配置规则(不需要设置ip_forword)
ipvsadm -C
read -p "rule:" rule
read -p "port:" port
ipvsadm -A -t $vip:$port -s $rule
read -p "rip1:" rip1
ipvsadm -a -t $vip:$port -r $rip1 -g
read -p "rip2:" rip2
ipvsadm -a -t $vip:$port -r $rip2 -g
rs
#!/bin/bash
#在ens33上挂载一个ip地址
read -p "vip:" vip
read -p "mac:" mac
read -p "num" num
ifconfig $mac:$num $vip broadcast $vip netmask
255.255.255.255
# 主机路由
route add -host $vip dev $mac:$num
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce